지난 글에서는 Pandas라는 라이브러리로 데이터를 다루는 방법에 대해 다루었다. 오늘은 pandas로 간단한 출력을 해보는 연습 문제를 풀어보려고 한다.
1. 데이터 출처
요즘은 공개된 빅데이터가 많다. 당장 구글에서 '빅데이터'를 검색만 해도 많은 사이트들이 든다. 그 중에서 공공데이터 포털, kaggle을 소개해보려고 한다.
1) 공공 데이터 포털
공공데이터 포털은 국가가 보유하고 있는 다양한 데이터를 국민들이 이용할 수 있도록 제공하는 사이트이다. 해수의 온도, 기상, 지하철 이용, 인구밀도 등 다양한 정보를 제공한다. 이 사이트의 최대 장점은 대한민국 자료에 특화되어 있다는 것이다.
2) kaggle
kaggle은 데이터 분석과학 커뮤니티로 많은 빅데이터를 구할 수 있다. 이곳에서 구할 수 있는 가장 유명한 데이터로는 타이타닉 데이터가 있다. 타이타닉에 탑승한 고객의 이름, 주소, 성별, 객실 클래스 등 다양한 자료가 담겨있다. 처음 데이터 시각화를 배울 경우 이 자료를 자주 이용한다.
3) 오늘 우리가 쓸 자료는...
오늘 우리가 이용해 볼 데이터는 공공데이터 포털에 공개된 우리나라 시도별 폭염일수이다. 공공데이터 포털에서 검색해서 다운받아도 좋다. 원자료는 csv로 되어 있어서 xlsx 파일로 변경해 놓았다.
Pandas도 csv 파일을 처리할 수 있지만, 한글로 된 데이터가 있을 경우에는 오류가 난다. 그래서 파일을 읽기 위한 몇 줄의 코드가 더 필요하다. 우리는 아직 초보이기 때문에 가능하면 xlsx 형태로 된 데이터를 취급하도록 하자.
2. 문제
이제 문제를 풀어볼 시간이다. 아래의 1~4번 지문에 따라 데이터를 출력해보고 해답을 보자.
- hot_wave.xlsx 파일을 호출해서 hot이라는 변수에 담고, 제일 위쪽 3줄만 출력하기
- hot_wave.xlsx 데이터 중 서울, 강릉의 폭염 일수만 출력하기
- hot_wave.xlsx 데이터를 대전의 폭염일수를 기준으로 내림차순 정렬 후 기존의 인덱스를 버리고 인덱스 재지정하기
- hot_wave.xlsx 데이터 중 폭염 측정년도가 2015년 이후인 데이터만 출력하기
3. 해답
난이도가 낮기 때문에 해답에 대한 설명은 따로 하지 않겠다. 모르겠다면 이전 글을 참고하자. 실수로 광고도 슬쩍 눌러준다면 더 좋다.
1) 1번 문제 해답
import pandas as pd
hot = pd.read_excel("./hot_wave.xlsx")
hot.head(3)
2) 2번 문제 해답
# 1. loc을 이용
hot.loc[:,["서울(일)", "강릉(일)"]]
# 2. iloc 이용
hot.iloc[:,1:3]
# 딕셔너리 형으로 조회
hot[["서울(일)", "강릉(일)"]]
# columns도 함께 이용
hot[hot.columns[1:3]]
3) 3번 문제 해답
# 매번 변수를 새롭게 지정할 경우
sortedHot = hot.sort_values("대전(일)", ascending=False)
reIndexHot = sortedHot.reset_index(drop=True)
reIndexHot
# inplace로 기존 변수 덮어쓰기
hot.sort_values("대전(일)", ascending=False, inplace=True)
hot.reset_index(drop=True, inplace=True)
hot
4) 4번 문제 해답
hot.loc[hot["연도별"] > 2015]
hot[hot["연도별"] > 2015]
hot[hot.연도별 > 2015]
4. 글을 마치며
다음 글에서는 Matplotlib의 기본적인 사용법에 대해 알아보려고 한다. 어느정도 matplotlib의 기능을 익힌 다음, pandas로 불러온 데이터를 Matplotlib으로 시각화시키는 순으로 익혀보자. 그럼 끝.