Python: 75개의 글
Python에서 DataFrame을 임시 데이터를 저장하는 방법 pandas를 사용하면서, 중간 데이터를 저장하거나 최종 데이터를 저장을 해야할 때가 있다. 이때 csv로 저장하고, 불러오는 방법을 설명한다. DataFrame을 CSV파일로 저장하기 DataFrame을 CSV로 저장하는 방법은 매우 간단하다. dataframe의 object에서 to_csv의 메소드를 이용하면 된다. datafram.to_csv('result.csv') CSV파일 DataFrame으로 불러오기 csv의 파일을 DataFrame으로 불러오기 위해서는 아래와 같이 실행하면 된다. 이때, 데이터의 크기가 너무 커서 어떤 조건을 만족하는 데이터만을 불러오고 싶으면 iterator=True를 통해서 iteration을 돌려서 가져..
파이썬 (Python)에서 리스트에 있는 값들의 모든 조합을 구하기 파이썬에서 리스트에 있는 값들의 모든 조합을 구하기 위해서는 여러가지 방법이 있다. 파이썬 기본 라이브러리인 itertools을 사용하면 쉽게 구할 수 있다. 하지만 각각의 차이점을 알고 있어야 한다. from itertools import product from itertools import permutations from itertools import combinations 사용시기 하나의 리스트에서 모든 조합을 계산을 해야 한다면, permutations, combinations을 사용 두개 이상의 리스트에서 모든 조합을 계산해야 한다면, product를 사용 하나의 리스트에서 모든 조합을 구하기 items = ['1', '2', ..
파이썬 (Python)에서 한글 문자 길이에 대해서 작성한다. 파이썬에서 제일 거지같을 때 만약 파이썬에서 그냥 len(text)를 하면, 어떻게 결과가 나올까 결론부터 말하면 정말 거지같은건 파이썬 2.x의 버전에서는 기본 인코딩은 ascii 이기 때문에 unicode로 처리를 해야 한다. 만약 len(text)를 한다면 len('바나나')의 결과는 3이 아닌 9가 나온다 파이썬에서는 인코딩(encoding)문제가 많아서, 확실하게 이해하고 하나의 솔루션을 만들어 놓는게 좋다. 예를 들면 모든 텍스트에 hangul('바나나')에서 hangul 함수를 만들어 놓으면 좋다. 3이아닌 9가 나오는 이유 그 이유는 ? '바나나'의 값은 다음과 같다 '\xeb\xb0\x94\xeb\x82\x98\xeb\x82\..
C 모듈을 파이썬에서 사용하는 방법 Python에서 C모듈을 Wrapping해서 사용하는 방법에 대해서 설명한다. 보통 Python에서는 성능상 이슈가 있기 때문에, C로 작성된 라이브러리를 사용을 한다. C로 작성된 코드를, Python에서 호출 가능하도록 swig를 이용해서 아래와 같이 사용하였다. /* flags.c – Source file */ ```c include include “flags.h” int gFlag = 0; void welcome_msg(char *msg) { printf(“%s\n”, msg); return; } int get_flag() { return gFlag; } void set_flag(int flag) { gFlag = flag; return; } ``` /* fla..
파이썬에서 response를 보내는데, utf8이아닌, 유니코드 그대로 보내지고, 화면에 출력되는 문제가 발생했다. 정말 파이썬 하면서 encoding 문제는 진짜… 항상 마주할때마다 이렇게 해서 고쳐야지~라고 생각하고 고쳤을때 바로 안되면, 그냥 당황스럽기 짝이없음. { "code": 100, "data": { "\uc548\ub155": 2, "\ud558\uc774\ub8e8": 2 }, "mesg": "success", "method": "get", "target": "/api/test", "time": 0.001 } 아무래 utf8로 encoding을 해도 결과는 같음, postman에서 json으로 보면 아주 예쁘게 보여서 content-type을 appliction/json으로 보내면 되나 ..
WAS에서 logging을 남기는건 기본중에 기본, 파일로 로깅을 남기는 방법과 에러가 나면 메일을 보내주는 방식이 두가지가 있다. 참 편하게 다 해주니 너무 좋구나. 이번에는 file로 logging을 남기기로 생각했다. 디버깅을 하기 위해서는 file로 많은 정보가 있을수록 좋다. 여러개의 file_handler를 사용해서 구현하면 된다. * FileHandler - logs messages to a file on the filesystem. * RotatingFileHandler - logs messages to a file on the filesystem and will rotate after a certain number of messages. * NTEventLogHandler - will l..
파이썬에서 패키지가 꼬여본 사람은 알것이다. 이 virtual env가 얼마나 훌륭한 역할을 하는지, 또한 여러개의 프로젝트를 수행할때 각각의 프로젝트마다 요구되는 패키지의 버전이 다를 수 있기 때문에 프로젝트 별로 환경을 구축하는게 좋다. 물론 배포할때는 필수다. 처음에 virtualenv를 pip를 통해 설치하면 된다. $ pip install virtualenv 설치가 완료되면 아래와 같이 차례대로 입력하면 virtualenv의 환경으로 진입한다. $ virtualenv venv $ source venv/bin/activate 기존 shell과 다르게 $(venv) /home/banana 식으로 화면에 표시되면 정상적으로 진입한 것이다. 이제 여기서 설치하고 싶은 패키지를 pip install 으로..
파이썬에서 matplotlib을 import하는데 아래와 같은 에러가 발생했다. RuntimeError: Python is not installed as a framework. The Mac OS X backend will not be able to function correctly if Python is not installed as a >>> import matplotlib.pyplot as plt Traceback (most recent call last): File "", line 1, in File "//anaconda/envs/myenv/lib/python2.7/site-packages/matplotlib/pyplot.py", line 109, in _backend_mod, new_figure..
stdin과 stdout을 이용해서 데이터를 파이핑할 수 있다. 파일에 숫자가 포함된 줄이 몇개나 있는지 확인하는 방법 import sys, re regex = sys.argv[1] for line in sys.stdin: if re.search(regex, line): sys.stdout.write(line) import sys count = 0 for line in sys.stdin: count += 1 print count $ cat SomeFile.txt | python egrep.py “[0-9]” | python line_count.py 문서의 단어를 모두 세어 보고 가장 자주 나오는 단어를 출력해주는 코드 import sys from collections import Counter # 출력하..
웹페이지는 HTML로 작성이 되어있고, HTML은 element와 attribute로 구성되어 있다. HTML에서 ‘id가 foo인 요소에 포함되어 있는 텍스트를 가져와’라는 규칙으로 필요한 정보를 추출할 수 있다. 하지만 실제로 제대로 된 형태를 갖추지 못했기 때문에 HTML의 요소를 tree 형태로 변환해서 쉽게 접근이 가능하게 해주는 BeautifulSoup라이브러리를 사용하면 쉽다. 파이썬에서 HTML을 파싱하기 위해서는 BeautifulSoup, requests, html5lib이 필요하다. 파이썬에서 기본적으로 제공하는 라이브러리인 HTML parser는 완벽한 HTML 구조가 아니면 제대로 작동하지 않기 때문에 html5lib이 필요하다. $ pip install beautifulsoup4 ..