본문 바로가기
Data & Programming/Data Science

[데이터분석] 공공데이터포털에서 정형 데이터 분석하기

by 눈부셔™ 2023. 8. 27.
728x90

[데이터분석] 공공데이터포털에서 정형 데이터 분석하기

데이터는 일정한 포맷에 담긴 정형 데이터와 그렇지 않은 비정형 데이터가 있습니다. 

파이선에서 다루는 대표적인 정형 데이터는 엑셀과 CSV 파일이 있습니다.

정형 데이터 분석을 통해 유의미한 정보를 추출하는 방법에 대해 간단히 살펴보려 합니다.

공공데이터포털에서 정형 데이터 분석하기

1. 데이터 수집하기

  • 공공데이터포털(www.data.go.kr/)에서 유동인구 데이터 수집하기

    → 보통 공공데이터포털에서 데이터를 검색하면, 바로 다운로드 버튼이 있는 경우가 있고,

        아래 데이터 처럼 다른 사이트로 링크되있는 경우가 있습니다.

공공데이터포털 - 경기도 유동인구 데이터

    → 경기데이터드림(www.data.gg.go.kr)에서 다운받을 수 있는 데이터 형식이 많이 있지만, 전 CSV 데이터포멧으로 다운 받았습니다.

경기도시군별유동인구데이터.zip
2.74MB

 

 

 

2. 데이터 탐색하기

 

  • 데이터 불러오기 : 구글 콜랩(colab.research.google.com)에 파일 업로드하여 열어보기
1
2
from google.colab import files
file_uploaded = files.upload()

from  google.colab  import  files

    → csv 파일을 읽기 위해 io 모듈과 pandas 를 import 합니다. csv 파일에 한글이 포함되어 있으니 encoding을 cp949로 설정한다.

1
2
3
4
5
6
import io
import pandas as pd
 
#인코딩을 하지 않으면 에러가 발생하므로, encoding='cp949' 추가
data = pd.read_csv(io.BytesIO(file_uploaded['경기도시군별유동인구데이터.csv']), encoding='cp949')
data.head()

경기도 시군별 유동인구 데이터의 앞 5레코드

    → 일부 컬럼만 로드하는 방법은 usecols 옵션을 이용하시면 됩니다.

1
2
3
4
5
#일부 컬럼만 로드하는 방법 usecols
data = pd.read_csv(io.BytesIO(file_uploaded['경기도시군별유동인구데이터.csv']), encoding='cp949'
                , usecols = ['년월''출발지역명''도착지역명''40대남성 유입인구'])  
 
print(data)

경기도 시군별 유동인구 데이터의 일부 컬럼만 로드

 

  • 데이터 셋 확인
1
2
print(data.shape)   #행과 열의 개수 출력
print(data.columns) #열 이름 출력

경기도 시군별 유동인구 데이터의 데이터 구조

 

  • 기초 통계 정보 확인
1
print(data.info())      # 데이터 정보 출력

1
data.describe()  # 기술 통계 정보 출력

 

  • 데이터 정제, 통합, 축소, 변환

보통 데이터에 있는 결측치나 이상치를 처리하고, 데이터를 정제하며, 분석에 필요한 형식으로 변환하는 과정이 필요하나 여기서는 생략하겠습니다. 

 

 

 

3. 데이터 분석과 시각화

해당 데이터로 어떤 분석을 할 수 있을까요? 아마 아래와 같은 분석이 가능할 것 같습니다.

  • 연령대별 유동인구 분석 : Seaborn의 바이올린 플롯을 사용하여 연령대별 유동인구의 분포와 특이점
  • 지역 간 유동인구 이동 패턴 분석 : NetworkX를 사용하여 지역 간 이동 패턴을 그래프로 시각화
  • 성별에 따른 유동인구 분석 : GroupBy와 막대 그래프를 사용하여 성별에 따른 유동인구 분포를 시각화
  • 월별 유동인구 변화 분석 : Line Plot을 사용하여 월별 유동인구 변화를 시각화
  • 특정 지역의 유입과 유출 인구 분석 : Heatmap을 사용하여 특정 지역 간 유동인구 흐름을 시각화
  • 연도별 유동인구 추이 분석 : 연도별 유동인구 추이를 Line Plot으로 시각화
  • 연령대 및 성별에 따른 유동인구 분석 : Seaborn의 히트맵을 사용하여 연령대 및 성별에 따른 유동인구 분포를 시각화
  • 특정 지역의 연령대별 유동인구 특성 분석 : Box Plot을 사용하여 특정 지역의 연령대별 유동인구 분포와 특이점 분석
  • 특정 연령대의 유동인구 변화 추이 분석 : Line Plot을 사용하여 특정 연령대의 유동인구 변화 추이를 시각화
  • 유동인구 데이터 시각화 대시보드 생성 : Plotly 또는 Dash를 사용하여 유동인구 데이터를 대시보드 형태로 시각화

이 중 하나를 예로 들어 시각화 해보면,

데이터를 기반으로 어떤 달에 유동인구가 증가하거나 감소하는지를 파악하고, Line Plot을 사용하여 월별 유동인구 변화를 시각화해보겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
 
#월별 유동인구 변화 분석
monthly_data_grouped = data.groupby('년월').sum()
 
#월별 유동인구 총합 계산
monthly_data_grouped['총 유동인구'= monthly_data_grouped.sum(axis=1)
 
#월별 유동인구 변화 시각화
plt.figure(figsize=(126))
sns.lineplot(data=monthly_data_grouped, x=monthly_data_grouped.index, y='총 유동인구')
plt.title('경기도 내 시군별 월별 총 유동인구 변화')
plt.xlabel('월')
plt.ylabel('총 유동인구')
plt.xticks(rotation=45)
plt.show()

경기도 내 시군별 월별 총 유동인구 변화

 

 

블로그 내용이 너무 길어지는거 같아서, 귀차니즘에 간단한 시각화로 마무리 하였습니다. 

 

 

#데이터분석  #빅데이터  #파이썬  #python  #정형데이터  #시각화  #seaborn  #matplotlib

 

728x90