1 zip 객체 다루기

1.1 파이썬2 vs 파이썬3 1

zip()은 반복자(iterator)를 하나로 묶어 하나의 새로운 반복자를 만들어 낸다. 파이썬2에서는 튜플 리스트가 반환되었지만, 파이썬3에서는 zip 객체 반복자를 반환시킨다.

<zip object at 0x11d490e08>

zip 객체를 다시 풀려고 하면 zip() 내부에 *zip객체 앞에 붙어 문제를 해결한다.

(1, 2, 3, 4, 5) ('a', 'b', 'c', 'd', 'e')

1.2 zip 객체 생성

영화제목은 문자열, 등장배우는 리스트, 국가별 매출은 딕셔너리로 모두 반복자(iterator) 자료형이다. 이를 zip() 함수를 사용해서 zip 객체를 만든다.

<zip object at 0x11d5e8088>

1.3 for 루프로 뽑아내기

for 루프로 zip 객체를 뽑아내게 되면 서로 길이가 다른 경우 다음과 같이 내부원소가 추출되는 것이 확인된다.

('A', 'ironman', 'Korea')
('v', 'captain america', 'Japan')
('e', 'spinder man', 'China')

1.4 리스트 튜플 반환

zip객체는 expendable 속성을 갖고 있어 다시 zip 객체를 생성시켜 주어야 한다. 그리고 나서 list() 함수로 감싸게 되면 튜플 리스트가 생성된다.

[('A', 'ironman', 'Korea'), ('v', 'captain america', 'Japan'), ('e', 'spinder man', 'China')]

1.5 zip 객체 → 리스트 튜플

zip 객체, 튜플 리스트를 zip(*sales)와 같이 풀어낼 수 있다.

('Korea', 'Japan', 'China') (100, 200, 50)

2 zip 객체 → 데이터프레임

zip 객체를 데이터프레임으로 생성하는데 칼럼명과 함께 dict() 객체를 pd.DataFrame()에 넣어 판다스 데이터프레임으로 변환한다. 데이터프레임은 각 칼럼의 길이가 동일해야 하니 이를 염두에 두고 리스트 객체를 데이터프레임으로 변환시킨다.

  • 리스트 → zip 객체 → 딕셔너리 객체 → 데이터프레임
      국가   매출
0  Korea  100
1  Japan  200
2  China   50

3 딕셔너리 → 데이터프레임

딕셔너리를 데이터프레임으로 변경시키는 방법은 몇가지가 있다. 가장 일반적인 형태를 아래와 같이 raw_data 딕셔너리로 구성되어 있는 경우 이를 pd.DataFrame() 메쏘드를 사용해서 데이터프레임으로 변경시킨다.

    요일    공휴일    알바수입
0  월요일   True  100000
1  화요일   True  150000
2  수요일   True   50000
3  목요일  False   30000
4  금요일   True  200000
5  토요일   True  120000
6  일요일  False   10000

Using Python Dictionary as a database 블로그에 나온 중첩된 형태의 딕셔너리를 다루기 위해서 우선 딕셔너리 계층구조를 이해한다. office가 가장 최상이고 그 아래 medicalparking이 위한다. 이중 datastore['office']['medical']만 추려 데이터프레임으로 변환시킨다.

   price  room-number  sq-ft          use
0     75          100     50    reception
1     75          101    250      waiting
2    150          102    125  examination
3    150          103    125  examination
4    100          104    150       office

4 JSON vs 파이썬 2

웹크롤링을 통해 데이터를 입수하거나 API를 통해 데이터를 얻게 되면 JSON 형태 데이터를 많이 다루게 된다. 이런 경우 JSON을 적절한 파이썬 자료형태로 변환시켜두는 것이 향후 데이터 분석과 활용에 큰 도움이 되는 경우가 많다. 크게 JSON 객체(object)는 파이썬 딕셔너리로 JSON 배열(array)늘 파이썬 리스트로 변환되는 것을 기억하는 것이 좋겠다.

JSON Python
object dict
array list
string str
number(int) int
number(real) float
true True
false False
null None

JSON 배열 데이터를 파이썬으로 넘길 경우 json.load() 메쏘드를 사용해서 키값(key-value) 짝을 맞춰 저장할 수 있다.

자료형: <class 'dict'>
음료: 스타벅스
음료: 커피빈
음료: 안티구와
음료: 커피콩

JSON 객체를 파이썬 딕셔너리로 변환시켜서 이를 for 루프를 사용해서 간략히 출력한다.

Brian
David