파이썬 리스트에서 최대 최소값 찾는 방법입니다. 이게 왠지 리스트의 메쏘드로 있을 것 같은데 없더라고요. 리스트의 메쏘드가 아닌 파이썬 내장 함수인 min,max를 활용합니다. 리스트에서 최소값 찾기 min 함수로 리스트의 최소값을 찾습니다. data = [1,3,5,7,9] min(data) 리스트에서 최대값 찾기 max 함수로 최대값을 구합니다. data = [1,3,5,7,9] max(data)
삽입정렬 삽입정렬은 데이터 중 하나를 뽑아서(A) A 앞에 있는 데이터(B)와 비교해 $ A 앞 데이터 6보다 작음 -> [1,6,4,2] 4 뽑음 -> 앞 데이터 6보다는 작고 1보다 큼 -> [1,4,6,2] 2 뽑음 -> 앞데이터 4,6 보다 작고 1보다 큼 -> [1,2,4,6] 여기서 주의할 것은 계속 2번째 인덱스만 뽑지 않도록만 하면 됩니다. 계속해서 다음 인덱스로 넘어간다고 생각해야 합니다. 굉장히 중요합니다. 삽입정렬 알고리즘을 코드로 구현시 꼬이기 쉬운 부분입니다. 아무튼 순회횟수 +1 인덱스로 앞데이터와 하나씩 비교를 합니다. 버블 정렬에서는 뒤부터 정렬이 완성된 것에 반해 앞에서부터 하나씩 정렬이 됩니다. 데이터길이 비교 최대순회횟수 2 1 1 3 2 2 4 3 3 버블정렬과 같습니..
알고리즘 이론의 정렬에 대한 내용입니다. 프로그램 작성시 정렬을 세우는 건 아주 중요하고 빈번한 일입니다. 간단한 프로그램을 만들 때는 파이썬 내장 함수로 정렬이 가능하니 큰 필요성을 못 느낄 수 있는데 큰 프로그램을 만들거나 새로운 문제가 나타날 때 정렬 알고리즘을 알고 있지 않으면 역량부족으로 한참 해맬 수도 있습니다. 정렬 알고리즘은 알고리즘 파트 중에서 쉬운 편에 속해서 기초로 알고리즘이라는 분야를 입문하기 좋은 파트이므로 시간을 내서 배워보시는 것을 추천드립니다. 이번 포스팅에서는 버블 정렬에 대해 소개하겠습니다. 버블정렬 정렬은 데이터가 있을 때 이를 정해진 순서대로 나열하는 것을 의미합니다. 손으로 쓰면 너무 쉽겠지만 컴퓨터는 그게 아니라서 알고리즘을 짜서 데이터를 정렬할 수 있게 해주어야 ..
파이썬에서는 딕셔너리로 이미 구현이 되어있는 해쉬테이블을 굳이 구현해보겠습니다. 개인적인 이해를 위한 글이니 재미있게(?) 봐주셨으면 합니다. 해쉬테이블(Hash table) 해쉬테이블은 키(Key)에 데이터(Value)를 저장하는 데이터 구조입니다. 나열의 구조인 스택이나 큐와는 다르게 Key를 통해 바로 데이터를 받아올 수 있습니다. 다루기 편하고 검색 속도가 엄청나게 빨라진다는 장점이 있습니다. 파이썬에서는 딕셔너리로 구현이 되어있고 다른 언어는 공간을 확보하고 해쉬테이블을 사용하지만 파이썬은 그럴 필요는 없습니다. 해쉬테이블은 Key-Value의 함수역할을 하는 해싱 함수를 통해 데이터를 반환하는 방식입니다. 즉, 해싱함수를 h라 할 때h(Key)=Value가 됩니다. 함수역할을 하긴 하지만 va..
통계하면 정규분포가 빠질 수 없는데 파이썬으로 정규분포 그리는 방법 알려드립니다. scipy로 간단하게 그릴 수 있기도 하지만 직접 식으로 그려보고 scipy 통해서도 그려보겠습니다. 확률밀도함수로 직접 구하기 수학자가 만든 함수 중에 전체넓이가 1이거나 1로 제한할 수 있는 경우 분포함수로 쓰게 되는데 정규분포의 확률밀도함수는 가우스 함수라고도 합니다. 함수의 모양이 대칭이고 넓이가 1이 되는 함수입니다. 정규분포 확률밀도함수 식은 다음과 같습니다. $$ f(x)=\frac{1}{\sigma\sqrt{2\pi}}e^{-\frac{1}{2}(\frac{(x-\mu)}{\sigma})^2} $$ 데이터가 무엇이냐에 따라 코딩이 달라질 수 있기 때문에 정규분포의 확률밀도함수(pdf) 를 통해 직접 구하는 것..
데이터 프레임을 리스트로 변환하는 방법입니다. 데이터 프레임도 굳이 리스트로 바꾸는 이유는 머신러닝이나 딮러닝을 할 때 리스트로 input 값을 넣어야 할 때가 있습니다. 근데 데이터 전처리는 판다스가 훨씬 효과적이기 때문에 전처리 후 리스트 형태로 바꾸어 input값으로 쓸 수 있습니다. 데이터프레임에서 column별로 가져오면 되지 않느냐?라고 반문할 수도 있지만 머신러닝이나 딮러닝 처리중 계산 때문에 불가할 수 있고 여러 클래스인경우 벡터화해서 계산하는 것이 훨씬 빠르기 때문에 ndarray로 바꾸는 게 용이합니다. 데이터프레임에서 리스트와 numpy 배열로 변환하는 방법을 알려드리겠습니다. 데이터는 머신러닝 연습용으로 많이 쓰는 꽃 분석 데이터인 iris로 하겠습니다. import pandas a..
참고사항 115버전부터는 운영하는 사이트가 바뀌어서 ChromeDriverManager 가 되지 않습니다. 아래 포스팅을 참고하시기 바랍니다. [Python/웹크롤링] - 크롬드라이버 자동 오류 해결(115버전부터 사이트가 바꼈어요) 파이썬에서 크롬 브라우저 컨트롤을 하기 원한다면 즉, chrome-driver를 사용하려면 chrome과 버전이 맞게 chrome-driver를 설치해야 합니다. 그런데 chrome 업데이트가 이루어지면 버전호환이 안되서 다시 깔아야 하는 불편함이 있습니다. 매번 폴더나 작업환경이 바뀌면 일일히 chrome-driver를 설치해야 하고 설치할 때마다 chrome 버전을 확인해야 합니다. 그래서 chrome-driver를 따로 설치하지 않고 사용하는 방법을 알려드립니다. 아래..
리스트를 저장하는 방식은 pickle이 가장 유명한데 pickle은 갱신이 안되고 덮어쓰는 것만 됩니다. 만약 갱신한 리스트를 저장하고 싶다면 파일을 덮어쓰던가 새로운 파일로 저장해야 합니다. 그렇지만 csv로 저장하면 갱신이 가능합니다. pickle이 아닌 csv로 저장하는 방법에 대해 알려드립니다. pickle에 대한 방법은 다음 포스팅을 참고하시기 바랍니다. [Python] 딕셔너리,리스트 저장하기(pickle) [Python] 딕셔너리,리스트 저장하기(pickle) 코딩을 해서 어떤 데이터를 리스트나 딕셔너리를 만들었을 때 그것을 따로 저장하지 않고 나중에 다시 작업을 하면 컴퓨터가 코딩작업을 다시 하게 되어서 기다리는 시간이 생기게 됩니다 시간 seong6496.tistory.com 리스트를 c..
판다스만으로 그래프를 그리는 방법입니다. 보통 matplotlib나 pylab을 import 해서 그래프를 그리곤 했는데 pandas만으로도 그릴 수 있습니다. 왠만한건 다 되는 것 같습니다. 기본 그래프 그리기 데이터가 시리즈나 데이터프레임 모양이면 plot() 메쏘드를 이용해 그래프를 생성할 수 있습니다. 시리즈(Series) np.random.seed(222) random_num = pd.Series(np.random.randn(1096),index=pd.date_range('2020-01-01','2022-12-31')) random_walk = random_num.cumsum() random_walk.plot() 데이터프레임(DataFrame) 위에 비슷하게 하되 컬럼을 하나 더 추가해 데이터프..