본문 바로가기
Data Science/파이썬으로 데이터분석 하기

파이썬으로 데이터 분석하자 (1)

by 싸코 2017. 9. 19.

파이썬 코드 - 파이썬 라이브러리를 활용한 데이터 분석 中

※본 포스팅은 "파이썬 라이브러리를 활용한 데이터 분석"을 공부하면서 Python2로 작성된 샘플 코드를 Python3으로 변환할 때 발생하는 에러 혹은 수정 내용 등을 정리하기 위해 작성되었습니다.



open.path() 오류

Python3에서는 encoding을 명시해서 해줘야 하며, 맨 마지막 argument는 buffer에 대한 것이므로 encoding을 utf-8로 하기 위해서는 반드시 전달인자명 여기서는 encoding을 명시해줘야 한다.


1
2
3
import json
path = "파일명"
records = [json.loads(line) for line in open(path, "r", encoding="utf8")]
cs


참고자료

http://newpower.tistory.com/123

https://stackoverflow.com/questions/9969272/an-integer-is-required-when-opening-a-file-as-utf-8



KeyError 오류

다음은 예정된 오류에 대해서 알아본다... 표준 시간대를 알아보기 위한 코드에서 KeyError가 발생했다. 이는 모든 아이템이 해당 key를 가지고 가지고 있지 않아서 발생하는 문제이다. 두가지 방법으로 이를 해결할 수 있다.

하나는 책에서 명시한 대로 해당 키가 존재하는지 확인하여 존재하는 것만 읽는 것이다.(if 'tz' in rec)

다른 하나는 get() 함수를 사용해서 존재하는 것만 불러오는 방법이다.

1
time_zones = [rec.get('tz'for rec in records]
cs

하지만 get을 사용하면 리스트의 아이템 수에서 120개 정도 차이가 난다... 그 이유는 get은 "None"을 포함하기 때문에 모든 데이터에서 (해당 키가 없는 것도) 값을 불러와 리스트를 생성한 것이다. 실제 리스트 길이는 각각 98개, 97개이다.

1
2
3
4
time_zones = [rec['tz'for rec in records if 'tz' in rec]
time_zones2 = [rec.get('tz'for rec in records]
 
set(time_zones2) - set(time_zones)  #결과: {None}
cs



참고자료



2017/09/27 - [Data Science/Python] - 파이썬으로 데이터 분석하자 (2) - IPython 사용하기


댓글