파이썬을 이용하여 파일을 처리할 때 가장 기본적인 작업은 파일의 경로를 확인하고, 변경하는 것입니다. 또한 파일의 이름을 변경하는 것도 자주 사용되는 작업 중 하나입니다. 이번 포스팅에서는 이러한 기본적인 파일 처리에 대해서 총정리해보도록 하겠습니다. 파일 경로 확인하기 파일 경로는 파일이 저장된 디렉토리 경로와 파일 이 름을 합친 것입니다. 파이썬에서는 os 모듈을 이용하여 파일 경로를 확인할 수 있습니다. 현재 디렉토리의 파일 리스트를 출력하는 코드를 작성해보겠습니다. import os dir_path = os.getcwd() file_list = os.listdir(dir_path) print(dir_path) print(file_list) os 모듈의 getcwd() 함수는 현재 작업 중인 디렉토..
ipynb를 py로 바꾸는 방법입니다. ipynb를 아무리 잘 정리한다해도 자동화를 하려면 결국 py로 바꾸어야 합니다. ipynb와 py를 동시에 만드는 툴이 있었던 것 같은데 기억이 안나네요. 일단은 ipynb 에서 py로 변환하는 툴을 당장 써야할 것 같습니다. ipynb to py 변환툴 설치 ipynb를 py 로 바꾸는 방법은 nbconvert라는모듈을 사용하면 됩니다. 참고로 코드작업은 터미널에서 일어납니다. 경로가 복잡하면 cmd에서 폴더 찾아다니면 할일이 늘어나니 쥬피터 안에서 하는 걸 추천합니다. 쥬피터 안에서 하려면 코드 앞에 !를 쓰고 작업하면 할 수 있습니다. pip install nbconvert ipynb to py 변환 방법 변환방법은 간단합니다. jupyter nbconver..
파이썬 리스트에서 최대 최소값 찾는 방법입니다. 이게 왠지 리스트의 메쏘드로 있을 것 같은데 없더라고요. 리스트의 메쏘드가 아닌 파이썬 내장 함수인 min,max를 활용합니다. 리스트에서 최소값 찾기 min 함수로 리스트의 최소값을 찾습니다. data = [1,3,5,7,9] min(data) 리스트에서 최대값 찾기 max 함수로 최대값을 구합니다. data = [1,3,5,7,9] max(data)
파이썬의 패키지를 터미널에서 주로 확인했었습니다. 문제는 제가 원하는 패키지가 설치되었는지 확인하려면 일일히 스크롤을 올려가며 확인해야하는 불편함이 있습니다. 물론 텍스트로 저장해서 찾아보면 할 수 있지만 파일 하나만들고 메모장 켜고 하는 시간을 줄일까 합니다. 파이썬에서 패키지 찾기 파이썬 내에서 패키지를 찾는 작업을 할 수 있는데 pkg_resorces라는 모듈을 임포트해야합니다. import pkg_resources import pandas as pd pd.DataFrame(sorted([(i.key,i.version) for i in pkg_resources.working_set])) 컬럼 0은 패키지 이름이로 컬럼1은 패키지 버전을 의미합니다. 데이터프레임으로 만들어놓으면 찾기가 쉬워집니다. 예..
파이썬 문자열 공백 없애는 방법입니다. 공백 없애는 방법에는 3가지가 있습니다. 파이썬 replace 함수 이용해서 공백 제거 파이썬 strip함수 이용 해서 공백 제거 (rstrip, lstrip) 정규표현식의 sub함수 이용해 공백 제거(re.sub) 1. replace 함수 이용해서 공백 제거 replace 함수는 문자를 바꿔주는 함수인데 파이썬에서는 공백도 문자로 취급하기 때문에 replace함수를 적용할 수 있습니다. 쓰는 방식은 문자열.replace(없앨 문자,바꿀 문자) 입니다. 공백은 " "으로 되어 있습니다. 이를 ""으로 바꾸면 됩니다. replace는 기존 데이터에 반영이 안되므로 새로 정의를 해주어야 합니다. str = ' A B C D ' new_str = str.replace("..
리스트를 저장하는 방식은 pickle이 가장 유명한데 pickle은 갱신이 안되고 덮어쓰는 것만 됩니다. 만약 갱신한 리스트를 저장하고 싶다면 파일을 덮어쓰던가 새로운 파일로 저장해야 합니다. 그렇지만 csv로 저장하면 갱신이 가능합니다. pickle이 아닌 csv로 저장하는 방법에 대해 알려드립니다. pickle에 대한 방법은 다음 포스팅을 참고하시기 바랍니다. [Python] 딕셔너리,리스트 저장하기(pickle) [Python] 딕셔너리,리스트 저장하기(pickle) 코딩을 해서 어떤 데이터를 리스트나 딕셔너리를 만들었을 때 그것을 따로 저장하지 않고 나중에 다시 작업을 하면 컴퓨터가 코딩작업을 다시 하게 되어서 기다리는 시간이 생기게 됩니다 시간 seong6496.tistory.com 리스트를 c..
파이썬을 통해 파일을 저장하거나 불러올 때 파일 모드에 알고 있다면 보다 편리하게 파일을 저장,불러오기를 할 수 있습니다. 그전에 파일의 형태인 바이너리 모드와 아스키 모드를 먼저 짚고 넘어가겠습니다. 아스키 /바이너리 모드 파일의 형태는 크게 아스키 모드와 바이너리 모드로 되어있습니다. 아스키 모드는 텍스트 편집기(메모장, 한글 등)를 통해 파일의 내용을 확인할 수 있는 파일을 의미하고 그렇지 않은 파일들을 바이너리로 여기시면 됩니다. 쉽게 말해, 그림파일을 텍스트 편집기에서 텍스트 형태로 불러오면 안 불러지거나 이상한 문자들로 구성되어서 있는 걸 확인할 수 있습니다. 이런 경우 바이너리 파일이라고 생각하면 됩니다. 바이너리의 형태를 생각하면 파이썬에서는 바이너리 모드로써 불러야 하는 것이 있고 아닌 ..
리눅스 우분투에서 아나콘다 설치방법입니다. 윈도우는 설치파일 받아서 설치하면 path도 자동으로 설정해주고 간단하게 마무리가 됩니다. 반면에, 리눅스에서는 설치파일을 받는 것까지는 쉬우나 그 이후부터는 리눅스 환경에서 직접 설치명령을 내려주어야 합니다. 설치 파일 받기 다음 사이트에서 아나콘다를 받습니다. https://www.anaconda.com/products/distribution Anaconda | Anaconda Distribution Anaconda's open-source Distribution is the easiest way to perform Python/R data science and machine learning on a single machine. www.anaconda.com..
리스트의 각 원소의 타입을 바꾸는 방법입니다. 이건 사실 각 원소의 타입을 하나로 통일하는 방법이라 보시면 됩니다. 파이썬의 내장함수인 map 함수를 이용하면 간단하게 할 수 있습니다. 보통 숫자가 문자열로 되어있는 경우를 바꾸고 싶을 때 한번에 할 수 없는 방법을 찾을텐데 map을 이용해 간단하게 바꿀 수 있습니다. 문자열 숫자로 바꾸기 당연한 얘기겠지만 a,b,c,d 같은 완벽히 문자인 경우에는 숫자로 바꿀 수 없습니다. 숫자인데 문자열로 되어있는 경우에만 가능합니다. list_ = ['1','2','3','4'] list_int = list(map(int,list_)) list_int 실제로 타입이 잘 바뀌었는지 살펴보겠습니다. for element in list_int: print(type(ele..
개발이나 코딩 주석을 넣을 때 쓰기도 하고 티스토리나 github 등에서도 호환가능한 마크다운에 대한 설명내용입니다. 마크다운은 html의 기능을 모두 대체할 수는 없지만 html을 몰라도 간단하고 손쉽게 문서를 쓸 수 있는 점에서 큰 장점을 가지고 있습니다. html의 보조적인 역할을 할 수 있어서 html을 안다면 큰 시너지를 주기도 합니다. 티스토리 블로그에 포스팅하려고 했으나 티스토리 내에도 마크다운 호환이 가능해 제가 쓰고 있는 스킨과 겹쳐 제대로 표현이 안되는 문제가 발생했습니다. 그래서 마크다운으로만 운영되는 github 블로그에 옮겨 놓았습니다. 왠만하면 외부링크를 안 걸려고 노력하고 있는데 어쩔 수가 없네요 링크를 걸어둘테니 내용이 필요하신 분은 아래 링크로 들어오면 해당 설명을 볼 수 ..
공공데이터 같은 api를 통해 데이터를 가져온 후 csv 를 저장했을 때 한글이 깨지는 상황이 발생합니다. 이건 컴퓨터 환경에 따라 약간씩 달라질 수도 있어서 윈도우 기준으로 설명하겠습니다. 아마 다른데는 잘 될 거에요 ㅎㅎ 파이썬에서 csv를 저장하면 인코딩에 대한 얘기를 하지 않으면 기본적으로 utf-8로 인식하고 저장합니다. 즉, 디폴트 값이 utf-8입니다. 그런데 utf-8로 csv를 저장하면 한글이 깨지는 문제가 발생합니다. 왜냐하면 특히 공공데이터인 경우는 cp949나 euc-kr 방식으로 인코딩이 되어 있기 때문입니다. 그래서 공공데이터에서 csv를 받아와 파이썬으로 불러들이면 당연히 한글이 깨지게 됩니다. 이를 해결하기 위해서는 cp949나 euc-kr로 바꿔주어야 합니다. 거꾸로 파이썬..
리스트로 된 원소들을 모두 문자열로 바꾸는 방법입니다. for문으로 할 수도 있지만 파이썬에 내장되어있는 join 함수를 사용하면 좀 더 편리하게 리스트 원소를 하나의 문자열로 변환할 수 있습니다. 리스트 원소가 모두 문자열일 때 리스트 내용을 문자열로 변환하기 위해서는 작은 따옴표.join(변환할 리스트) 로 변환할 리스트를 join함수 안에 넣습니다. 리스트에 있는 걸 나열하는 방식이어서 그냥 하면 띄어쓰기가 안 되서 출력됩니다. example_list = ['john','cash','eric'] convert_string = ''.join(example_list) print(convert_string) 띄어쓰기를 하려면 작은 따옴표를 한칸 띄웁니다. example_list = ['john','cas..
pip은 파이썬을 설치하면 내장되어 있기 때문에 따로 설치가 필요없지만 업그레이드를 하거나 재설치를 해야하는 경우 쓰는 방법입니다. 제가 소개하는 건 윈도우 버전이고 맥이나 리눅스는 그에 맞게 명령어를 써주면 됩니다. get-pip.py 파일 받기 cmd를 켠후 다음을 입력합니다. curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py 그러면 현재 지정된 폴더에 get-pip.py이 생깁니다. pip 설치 pip을 설치하기 위해 다음을 씁니다. python get-pip.py 설치가 완료 되었습니다. no such file or dictory python get-pip.py를 했는데 no such file or dictory라며 안 되는 경우가 있습니다. 일반..
제너레이터는 iterator를 생성하는 함수인데 메모리 절약을 하거나 임시적으로 데이터 저장을 할 때 씁니다. 예를 들면, 게임을 할 때 잠시 일시정지를 하면 게임이 멈추는데 게임의 상황이 변하지 말아야 합니다. 그래서 게임이 다시 재개가 되면 기존에 했던 상태를 이어서 할 수 있게 됩니다. 이럴 때 필요한 것이 제너레이터 입니다. 제너레이터는 iterator를 생성하는 함수인데 yield를 쓰는 경우를 얘기합니다. 제너레이터로 설정을 하면 iterator가 순서대로 나오되 순서의 다음값은 필요에 따라 계산됩니다. 즉, 호출을 안 하면 멈춰서 대기하는 상태를 유지합니다. 보통 무한한 루프를 생성할 때 리스트나 딕셔너리는 메모리에 임시저장되어 불러오지만 제너레이터는 소비하는 형태로 되어 있어서 메모리 부담..
앞서 포스팅한 패킹과 언패킹의 연장선입니다. 언패킹을 할때 나머지 변수는 *rest 로 묶을 수 있었는데요. 제가 변수로 정하고 싶지 않은 건 큰 관심이 없어서 변수지정을 안 주는데 갯수가 정해지지 않습니다. 갯수가 안 정해지지만 묶을 수 있는것과 마찬가지로 함수의 파라미터에서 갯수를 정할 수 없는 경우가 있습니다. 이런 맥락으로 파라미터의 갯수를 정할 수 없는 경우 *args, **kwargs로 표시할 수 있습니다. 별 기호(*)가 중요한것이지 args는 바꿀 수 있습니다. 관용상 이렇게 쓰면 모두가 알 수 있기 때문에 쓰는 것뿐입니다. *args args는 arguments의 줄임말로 인수들이라는 뜻입니다. 단어의 뜻처럼 인수들을 넣으면 되는 것입니다. 예제로 패킹과 언패킹에서 보인 정가 구하는 함수..