태코놀로지

IPython Notebook에서 데이터 집합 다루기 본문

Python3/EECS-WinterSchool

IPython Notebook에서 데이터 집합 다루기

태코놀로지 2017. 1. 29. 15:08

3.1 Exploring a dataset in the Notebook

실습을 위해서 사용할 데이터는 약 18GB에 달하는 데이터의 일부를 추출해서 작게 만든 약 200MB의 csv 타입의 파일이다. 해당 파일을 마이크로소프트 엑셀을 이용해서 확인해보면 아래와 같이 뉴욕시 택시 운영에 대한 다양한 정보를 확인할 수 있다. nyc_data와 nyc_fare 두 가지 파일이 있으며, 그 중 nyc_data는 약 150MB의 크기로 850,000의 행을 지닌 데이터로 아래의 그림과 같이 데이터 집합이 구성되어 있다. 이 정도 양의 데이터를 사용하면 연산 결과를 가시적으로 확인하기에 충분하다.


이 밖에도 국내 정부에서 제공하는 공공데이터도 다양하다. 공공데이터 포탈에서 확인해보면, 약 20,000개의 공공 데이터 파일을 다운로드 받을 수 있다. 또한 외부에서도 활용할 수 있도록 제작한 OpenAPI도 2,000여가지에 달한다. 이와 같이 현재는 빅데이터나 머신러닝 등에 활용해볼 수 있는 큰 데이터를 쉽게 구할 수 있다. 우리가 앞으로 사용할 뉴욕시 택시 정보에 대한 데이터 집합 역시 무료로 오픈된 데이터 중에 하나이며, 파이썬 라이브러리의 기능을 확인하는데 유요한 데이터 집합이다.


구글에 '공공 데이터' 혹은 'Open data'를 키워드로 검색하면, 상상할 수도 없이 다양한 데이터 집합을 접할 수 있다. 몇 가지 대표적인 공공 데이터 채널을 소개해본다.


정부 3.0 공공 데이터 포탈

서울시 열린 데이터 광장

네이버 데이터

NYC Open Data



다운로드 받은 뉴욕시 택시 운영에 대한 데이터 집합을 불러들여 다양한 연산을 처리해본다. 데이터 집합을 로드하기 위해서는 이전 시간에 학습했던 내용 중에 jupyter에서 제공하는 커널 명령어 %pwd 또는 %ls을 통해서 현재 다운로드 받은 파일이 위치한 곳을 알 필요가 있다. Pandas 라이브러리를 통해 csv 타입의 파일 로드가 가능하다.


Pandas의 read_csv 함수를 통해서 csv  타입의 파일을 정상적으로 로드했다면 head, columns 등와 같이 데이터 접근을 위한 함수를 사용해 볼 수 있다. head 함수의 경우 상위 데이터를 반환하고, columns의 경우 로드한 csv 파일이 가진 열의 제목을 반환한다. 더불어 로드한 파일 정보를 저장하고 있는 변수 data에 .column 명을 이어 붙임으로써 모든 행에 대한 해당 열 정보를 얻을 수 있다.



각 열에 대한 정보를 담고 있는 p_lng, p_lat, d_lng, d_lat 변수와 NumPy 라이브러리를 활용해서 승객이 승/하차 한 지점의 x 좌표 및 y 좌표를 구하는 함수를 작성한다. 이어서 함수를 호출해서 정상적으로 작성되었는 지 확인해본다.



이제부터는 Pandas와 NumPy를 통해서 생성한 승객의 승/하차 좌표를 Matplotlib 라이브러리를 통해서 시각화해본다. Matplotlib 라이브러리가 포함하고 있는 다양한 형태의 그래프를 사용해볼 것인데. 가장 먼저 scatter( )를 통해서 산포도를 구해보자. 그러면 아래와 같이 특정 지점에 유독 밀집된 형태임을 확인할 수 있다. 


그리고 더 나아가 Matplotlib의 다양함수를 사용해서 다시 시각화해보면, 뉴욕시의 모습과 유사한 형태로 그래프가 그려지는 것을 확인할 수 있다. 그림에서 진하게 표시된 부분은 좌표의 밀도가 높은 곳으로 택시 이용이 잦은 지역임을 파악할 수 있다. 마지막으로 앞선 시간에 학습했던 숫자 타입(int, float)에 적용가능한 함수를 사용해서 850,000 행의 정보 중에 최대값, 최소값, 평균값, 중앙값, 표준편차 등을 계산해본다.



추가적으로 Matplotlib 외에도 데이터 집합에 대한 시각화 도구로 Seaborn을 사용할 수 있다. Seaborn은 아나콘다(Anaconda) 자체에서 포함하고 있는 라이브러리가 아니다. 따라서 아래의 예제와 같이 IPython Notebook에서 사용가능한 명령어를 통해 직접 설치해줘야 한다. 설치가 완료되면, __version__ 명령어를 통해서 정상적으로 설치가 되었는지 확인해본다. 그리고 앞서 로드했던 뉴욕시 택시 데이터 집합에 대해서 Numpy를 활용해서 그래프까지 표현해본다.





Comments