xlsx -> csv의 필요성 파이썬에서 xlsx로 작업을 하면 제약사항이 많아집니다. 가장 큰 제약은 느린 불러오기입니다. xlsx를 불러오는 것부터가 곤욕입니다. 그 이후에 판다스에서의 작업은 사실 xlsx 파일과는 무관하기 때문에 상관은 없습니다. 하지만, 계속해서 xlsx를 불러와야 하는 상황이라면 얘기가 달라집니다. 훨씬 빠른 불러오기가 가능한 csv로 변환합니다. 변환을 office를 이용하면 손쉬운데 실제로 해보면 오류도 많고 드럽게 안됩니다. 또한 office는 csv를 했다해도 office에서 원하는 방향으로 만들어지기 때문에 제약이 들어갑니다. 그래서 파이썬 내에서 xlsx를 가져와 csv로 바꿔보겠습니다. xlsx 파일 csv로 변환하기 프로세스는 간단합니다. 판다스로 xlsx 불러오..
문서를 주로 PDF 형식으로 주고받는데 PDF는 수정이 불가합니다. 하지만 수정이 불가능한 PDF 파일의 내용은 가져올 수 있습니다. 사실 워드에 쓰면 되는 것인데 파이썬을 쓰면 이런 일을 조금이나마 줄일 수 있을 것 같습니다. PDF 읽고 추출하기 PDF 파일을 읽고 데이터를 추출하기 위해 파이썬에서는 PyPDF2, pdfminer.six, textract 등의 라이브러리를 활용할 수 있습니다. 이러한 라이브러리들은 PDF 파일을 열어서 내용을 읽고 특정한 텍스트나 이미지 데이터를 추출할 수 있는 기능을 제공합니다. 파이썬 코드를 사용하여 PDF 파일을 열고 원하는 데이터를 추출하는 작업은 데이터 분석, 텍스트 처리, 문서 요약 등 다양한 분야에서 유용하게 활용될 수 있습니다. PyPDF2 설치 pyp..
리스트에서 특정 문자 있는 경우 제거하는 방법입니다. 조건 걸어서 하나씩 지우면 되긴 하는데 이게 될 때가 있고 안 될 때가 있더군요. 그래서 다른 방법을 추천하는 글입니다. 보통 for문으로 제거하려고 할텐데 if 문 써서 리스트 원소의 문자열에 해당 문자가 있으면 remove를 통해 지우려고 할 겁니다. 저도 그렇게 했고요. 그래서 아래와 같이 for문으로 합니다. 그럼 그냥 안된다고 봐야 합니다. search = 'temp' for word in file_list: if search in word: print('원소 제거: ' + word) file_list.remove(word) print(file_list) 전혀 지워지지 않습니다. 그 이유는 인덱스 문제로 remove의 방식 때문인데 인덱스가 ..
I. pyinstaller 소개 파이썬은 간단하고 직관적인 문법으로 인해 다양한 분야에서 사용되고 있습니다. 하지만 파이썬은 실행 파일이 아닌 소스 코드 형태로 제공되기 때문에, 사용자는 파이썬 인터프리터를 미리 설치해야만 해당 코드를 실행할 수 있습니다. 이는 일반 사용자가 접근하기 쉽지 않은 점입니다. 이러한 문제를 해결하기 위해 pyinstaller가 개발되었습니다. pyinstaller는 파이썬 코드를 실행 파일 형태로 패키징하여 사용자가 별도의 파이썬 인터프리터 없이도 해당 프로그램을 실행할 수 있도록 합니다. 이를 통해 파이썬 프로그램의 배포와 실행이 쉬워져 파이썬을 이용한 소프트웨어 개발의 생산성을 높일 수 있습니다. 또한 pyinstaller는 다양한 운영체제와 환경에서 동작하는 실행 파일..
리눅스에서 파이썬 qt designer 실행하는 방법입니다. 윈도우에서는 qt designer.exe 찾으면 그만이지만 리눅스는 그게 자연스러운건 아니니 터미널에서 실행을 하는게 일반적입니다. pyqt5만 설치하면 되는 줄 알았는데 안되고 몇가지를 더 설치해야합니다. terminal에서 다음의 커맨드들을 입력합니다. pip3 install pyqt5 sudo apt install python3-pyqt5 sudo apt install pyqt5-dev-tools sudo apt install qttools5-dev-tools 설치가 잘 되었다면 다음 designer 커맨드를 입력하면 GUI가 뜨게 됩니다. designer 아래 그림과 같이 qt desinger화면이 나옵니다. 이제 좀 더 편하게 코딩을 ..
가상환경 내에서 파이썬 업그레이드하는 방법입니다. 참고로 모듈 버전이 상호호환이 되어야 해서 여러가지 충돌이 있으니 권장하진 않습니다. 파이썬만 덩그러니 버전이 높아지면 특정 모듈은 아예 안될수도 있습니다. 그래도 버전이 크게 변하지 않는다면 가상환경에서 업그레이드 하는게 가장 간편하긴 합니다. 반면에, 버전업 차이가 크면 새로 가상환경을 만드는게 빠를수도 있습니다. 가상환경 만드는 방법은 아래 포스팅에서 확인하시기 바랍니다. 2020.08.14 - [Python/기초] - [Anaconda]가상환경 설치,삭제(32bit 포함) [Anaconda]가상환경 설치,삭제(32bit 포함) 보통 우리는 64bit 환경에서 개발을 합니다만 증권사 api를 쓰기 위해서는 32bit 개발환경이 필요합니다. 물론 다시..
newspaper 모듈 소개 뉴스 스크래핑 하는 방법은 많습니다. 일반적으로 셀레니움이나 requests 써도 되는데 편리함을 추구하는 사람으로써 newspaper를 써봤습니다. (좀... 늦었나?) newspaper는 사용자가 지정한 url에서 text를 추출해주는 모듈입니다. 그러니깐 뉴스말고 웹 전체를 다 텍스트화 한다고 생각하시면 됩니다. 이미지랑 동영상도 가능합니다. 이미지는 다 되는데 동영상은 일부 안 되는 경우도 있습니다. 자세한 내용은 newspaper 공식 가이드에서 확인할 수 있습니다. Newspaper 설치 지금도 python2를 쓰는 분이 있나봅니다. newspaper 설치를 그냥 하면 python2 버전으로 설치되서 python3에서는 안됩니다. # python2 pip insta..
여러문자 한꺼번에 치환하기 파이썬에서 문자열을 다루다보면 특정 문자열을 한꺼번에 다른 문자열로 치환해야 하는 경우가 있습니다. 이번에는 파이썬에서 여러 문자열을 한꺼번에 치환해주는 방법에 대해 알아보겠습니다. replace() 메소드 replace() 메소드는 문자열에서 특정 문자열을 다른 문자열로 치환하는 함수입니다. 다음은 replace() 메소드를 사용하여 문자열 내의 여러 문자열을 한꺼번에 치환하는 방법입니다. text = "apple banana cherry apple banana cherry" text = text.replace("apple", "orange").replace("banana", "kiwi") print(text) 위의 코드에서는 text 문자열에서 "apple"을 "orange..
파이썬을 이용하여 파일을 처리할 때 가장 기본적인 작업은 파일의 경로를 확인하고, 변경하는 것입니다. 또한 파일의 이름을 변경하는 것도 자주 사용되는 작업 중 하나입니다. 이번 포스팅에서는 이러한 기본적인 파일 처리에 대해서 총정리해보도록 하겠습니다. 파일 경로 확인하기 파일 경로는 파일이 저장된 디렉토리 경로와 파일 이 름을 합친 것입니다. 파이썬에서는 os 모듈을 이용하여 파일 경로를 확인할 수 있습니다. 현재 디렉토리의 파일 리스트를 출력하는 코드를 작성해보겠습니다. import os dir_path = os.getcwd() file_list = os.listdir(dir_path) print(dir_path) print(file_list) os 모듈의 getcwd() 함수는 현재 작업 중인 디렉토..
선택정렬이란? 선택정렬은 아주 단순한 정렬 알고리즘입니다. 최소값을 찾은 후 맨 앞에 데이터와 교체하는 것을 반복하는 방법입니다. 당연히 정리가 끝난 인덱스 이후로 반복해야합니다. 다시 처음부터 하면 안됩니다. 내가 최소값을 선택한 후 그걸 맨 앞으로 끌어오는 작업만 하면 됩니다. 그래서 선택정렬이라고 하는게 아닌가 싶습니다. 출처: https://en.wikipedia.org/wiki/Selection_sort 알고리즘 구현 선택정렬은 최소값을 선택하고 지정한 리스트의 앞의 값이랑 비교를 해야합니다. 맨 앞에 있는 값과 최소값을 비교해 작으면 바꿉니다(swipping) 예를 들어, 데이터가 3개 [16,3,8]라면 처음 한 번 실행할때 [16,3,8]의 최소값인 3과 맨 앞값인 16을 앞으로 넣습니다...
파이썬 리스트에서 최대 최소값 찾는 방법입니다. 이게 왠지 리스트의 메쏘드로 있을 것 같은데 없더라고요. 리스트의 메쏘드가 아닌 파이썬 내장 함수인 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) 를 통해 직접 구하는 것..