-
[스파르타]파이썬 데이터 분석 - 2주차(#folium)개발 일지/파이썬 데이터 분석 2022. 1. 4. 09:18
새로 알게 된 내용😁
1. 데이터 전처리하기
데이터 분석은 다음과 같은 단계로 이뤄진다.
데이터 불러오기 - 데이터 살펴보기 - 데이터 가공하기 - 데이터 시각화하기
# 라이브러리 & 데이터 불어오기 import pandas as pd 파일변수명 = pd.read_csv('./파일경로.csv') # Tab 키 이용해서 파일 경로 설정하기 # 데이터 살펴보기 list(파일변수명) set(파일변수명['column명']) #데이터 가공하기 가공데이터변수명 = 파일변수명.groupby('colum명1')['column명2'].sum() # column명1별로 column명2 합계 구하기 # 연도별 등록자동차 수 구하기 # count_of_car_by_year = cardata.groupby('연도')['등록자동차'].count() # 데이터 시각화하기 import matplotlib.pyplot as plt plt.rcParams['font.family'] = "Malgun Gothic" # 한글 폰트 설정 plt.figure(figsize=(n,n) # 그래프 크기 설정 plt.bar(x축, y축) # 그래프 x축, y축 데이터 설정 plt.title('제목') # 그래프 제목 설정 plt.xlabel('x축 이름') # X축 이름 설정 plt.ylabel('y축 이름') # Y축 이름 설정 plt.xticks(rotation=n) # n값만큼 X축 항목 기울기 설정 plt.show() #그래프 나타내기
데이터 전처리 단계의 핵심은 groupby('column명1)['column명2).함수()를 이용해 목적에 맞게 필요한 데이터만 뽑아내는 것이다.
필요에 맞에 데이터 가공하기
ex1) 도로명 주소 시 / 구 / 상세주소로 나눠서 column에 추가하기
commercial[['시', '구', '상세주소']] = commercial['도로명주소'].str.split(' ', n=2, expand=True) # n=2는 2번 자르겠다는 뜻(3덩어리로 나누겠다.) # expand=True는 3덩어리를 새로운 column에 추가하겠다는 뜻
ex2) 일치하는 데이터 찾기 - "서울특별시" 데이터만 남기기
seoul_data = commercial[commercial['시'] == '서울특별시'] # 진짜 '서울특별시' 데이터만 남았는지 확인하기 set(seoul_data['시']) print(set(seoul_data['시']), len(set(seoul_data['시'])) # {'서울특별시'} 1
ex3) 데이터 합치기 - 구별 치킨집 수 + 구별 유동인구 수
(1) 구별 치킨집 수 데이터, 구별 유동인구 수 데이터를 각각 새로운 데이터 프레임에 넣어준다.# 구별 치킨집 수 chicken_count_gu = pd.DataFrame(chicken).reset_index() # 구별 유동인구 수 population_sum_gu = pd.DataFrame(population).reset_index()
※ reset_index()를 통해 왼쪽 이미지에서 오른쪽 이미지로 index가 부여되었다.
(2) 데이터 합쳐주기 - 구별 치킨집 수와 유동인구 수 나타내기# 구별 유동인구 수의 "군구"를 index로 잡아 구별 치킨집 수의 "구"랑 합친다. gu_chicken = chicken_count_gu.join(population_sum_gu.set_index('군구'), on='구')
ex4) 날짜 데이터 string 타입으로 변경하기date = [] for day in population_daily.index: date.append(str(day)) # 그래프 그릴 때, plt.plot(date, population_daily)로 입력
2. folium을 이용해서 지도로 나타내기
데이터에 따라 바 그래프 / 라인 그래프 / 파이 차트 / 히트맵 / 지도 등 어울리는 그래프가 다르다.
folium은 다양한 그래프 종류 중 지리 정보를 나타내는 지도를 그려낼 때 사용되는 라이브러리이다.# 라이브러리 가져오기 import folium import json # 데이터 시각화하기 - 지도 map = folium.Map(location=[위도, 경도], zoom_start=11, tiles='stamentoner') # 설정한 위도, 경도를 11수준만큼 확대해서 나타낸다(서울 37.5502, 126.982)
여기에 데이터들을 나타내야한다.# https://raw.githubusercontent.com/southkorea/seoul-maps/master/kostat/2013/json/seoul_municipalities_geo_simple.json seoul_state_geo = './data/seoul_geo.json' # 폴더에 지리 데이터가 json 파일로 저장되어있어야 한다. geo_data = json.load(open(seoul_state_geo, encoding='utf-8')) folium.Choropleth(geo_data=geo_data, data=파일변수명, # 지도에 표시할 데이터 columns=[x축, y축], fill_color='PuRd', # 지도 데이터 결과 색상 key_on='feature.properties.name').add_to(map) map # 지도 데이터 나타내기
※ 위 코드에서 key_on='feature.properties.name').add_to(map)은 geo_data가 아래 사진과 같아서 features의 properties의 name으로 매핑한 것을 map 변수에 더하여 준 것을 뜻한다.
만약, 지리 데이터에 name2: "흑석동"처럼 "구" "동"별로 나눠진 데이터도 있고, key_on에서 name2로 매핑했다면, 지도 그래프는 구가아니라 동별로 나눠져서 나타날 것이다.지도 데이터 결과
개발 업무 내용📑
4월 군구별 유동인구 수 구하기
4월 & 7월 강남구 일별 유동인구 구하기
마무리 소감😉
큰 틀은 1주차에서 배운 내용이라 반복할 수 있어서 좋았다. 다만, 조금씩 추가되는 내용들이 있어 정리를 잘 해야겠다는 생각이 들었다. 여전히 데이터를 다루는 것은 어렵기보다 재밌다는 생각이 더 많이 들고 있지만, 실제 데이터들은 예제에서 쓰인 데이터들처럼 깔끔하지 않다는 것을 알기에 불쑥불쑥 아쉬운 마음이 찾아오기도 했던 것 같다.
'개발 일지 > 파이썬 데이터 분석' 카테고리의 다른 글
[스파르타]파이썬 데이터 분석 - 4주차(#주식 데이터, heatmap, 데이터 스튜디오) (0) 2022.01.06 [스파르타]파이썬 데이터 분석 - 3주차(#wordcloud, pivot table, 히트맵) (0) 2022.01.05 [스파르타]파이썬 데이터 분석 - 1주차(#파이썬, 주피터노트북, pandas, matplotlib) (0) 2022.01.03