데이터 수집
국내 여행지역에 대한 관심도를 분석해봤습니다.
데이터는 문화 빅데이터 플랫폼에서 무료로 제공해주는 국내 여행지역 관심도 분석 데이터를 가져왔습니다.
https://www.bigdata-culture.kr/bigdata/user/main.do
문화빅데이터 플랫폼
한국문화정보원이 운영하는 문화빅데이터 플랫폼은 공공기관 및 민간기업으로 구성된 데이터센터와 함께 도서, 체육, 예술, 숙박, 레저, 음식 등 고품질의 문화 분야 데이터를 개방하고 데이터
www.bigdata-culture.kr
csv 파일로 다운로드 받은 데이터의 컬럼 정의서입니다.
우선 csv 파일 한 건을 데이터 프레임에 담아봤습니다.
판다스 라이브러리를 사용하였습니다.
import pandas as pd
file_path = './01_data/travel_interest.csv'
df = pd.read_csv(file_path)
위 사진에서 보이듯 컬럼명이 영문으로 되어있어서 알아보기 쉽게 컬럼명을 한글명으로 바꿔줬습니다.
file_path = "./01_data/travel_columns.xlsx"
df_col = pd.read_excel(file_path,header = 0 , usecols = "B:C")
위와 같은 코드를 작성해줍니다.
다만 저의 경우에는 아래와 같은 오류가 발생하였습니다.
'xlrd'라는 라이브러리가 설치되어있지 않다는 오류입니다.
'xlrd'는 Excel 파일을 읽기 위한 라이브러리입니다. 아래 오류메시지에서 2.0.1 버전 이상을 설치하라고 되어있어
저는 2.0.1 버전을 설치했습니다.
ImportError: Missing optional dependency 'xlrd'. Install xlrd >= 2.0.1 for xls Excel support Use pip or conda to install xlrd.
pip install xlrd>=2.0.1
conda install -c conda-forge xlrd>=2.0.1
두가지 중 하나로 설치해주면 되는데 conda를 사용하신다면 두번째로 설치하시면 됩니다.
설치 후에는 아래처럼 컬럼정의서의 컬럼영문명과 컬럼 한글명이 데이터 프레임 형태로 보이는 것을 확인할 수 있습니다.
이제 컬럼영문명과 한글명을 바꿔주기위해 (컬럼영문명:컬럼한글명) 형식의 딕셔너리를 생성하겠습니다.
그 뒤 rename을 통해 만들어준 딕셔너리값으로 컬럼명을 바꿔줍니다.
df_col_new_dict = {}
for i in range(17):
df_col_new_dict[df_col.iloc[i,0]] = df_col.iloc[i,1]
df.rename(columns = df_col_new_dict,inplace = True)
info()를 통해 결측치가 없는 것 까지 확인했습니다.
이제 데이터를 주제에 맞게 가공하겠습니다.
주제를 정합니다.
1. 성별 별 각 도시에 대한 관심도 분석
2. 연령대 별 각 도시에 대한 관심도 분석
3. 각 도시에 대한 관심도의 시간에 따른 추이 분석 (년도별 / 분기별)
데이터 가공
분석에 돌입하기 전에 데이터를 가공하겠습니다.
① 관심도 데이터 변경하기
관심도가 많이 적어졌다 - 약간 적어졌다 - 예전과 비슷하다 - 약간 많아졌다 - 많이 많아졌다로 구분되어있으므로
값을 -2 , -1 , 0 , 1, 2 로 변경해주겠습니다. 데이터를 수치화하여 분석에 용이하게 활용할수 있도록 하기 위함입니다.
df_temp = df.copy()
혹시모를 불상사를 대비하여 복제본을 만들어 데이터를 가공해봤습니다.
for j in range(6,17):
for i in range(11):
if df_temp.iloc[i,j] == "예전과 비슷하다":
df_temp.iloc[i,j] = 0
elif df_temp.iloc[i,j] == "약간 커졌다":
df_temp.iloc[i,j] = 1
elif df_temp.iloc[i,j] == "많이 커졌다":
df_temp.iloc[i,j] = 2
elif df_temp.iloc[i,j] == "약간 적어졌다":
df_temp.iloc[i,j] = -1
elif df_temp.iloc[i,j] == "많이 적어졌다":
df_temp.iloc[i,j] = -2
df_temp.head(10)
▶ for 문을 통해 각각의 데이터를 변경해주는 구문을 만들었습니다. 우선 10개의 행만 진행했습니다.
데이터가 바뀐것을 확인할 수 있습니다.
위와 동일한 방법으로 전체행을 바꿔줍니다.
for j in range(6,17):
for i in range(len(df_temp)):
if df_temp.iloc[i,j] == "예전과 비슷하다":
df_temp.iloc[i,j] = 0
elif df_temp.iloc[i,j] == "약간 커졌다":
df_temp.iloc[i,j] = 1
elif df_temp.iloc[i,j] == "많이 커졌다":
df_temp.iloc[i,j] = 2
elif df_temp.iloc[i,j] == "약간 적어졌다":
df_temp.iloc[i,j] = -1
elif df_temp.iloc[i,j] == "많이 적어졌다":
df_temp.iloc[i,j] = -2
▶range안에 df_temp의 길이를 넣어 i 값이 0부터 249 까지 반복되도록하였습니다.
총 250개의 행에 데이터가 잘 바뀐것을 확인할 수 있습니다.
② 기준년도 , 기준월 데이터 , 분기 컬럼 생성
조사 시작일자는 데이터 한 건마다 다르게 되어있습니다.
여러 건의 데이터를 통합하기 전에 여러 건의 데이터가 각각의 기준 년도 , 기준월로 구분될 수 있도록
기준 년도 , 기준 월, 분기 에 대한 컬럼을 생성해주겠습니다.
조사시작일자는 int64 데이터타입입니다.
따라서 이를 날짜형식으로 바로 변환할 수 없기 때문에 먼저 문자열로 바꾸어줍니다.
df_temp = df_temp.astype({"조사시작일자":"str"})
이제 문자열로 바뀐 조사시작일자를 날짜 형식으로 바꾸겠습니다.
df_temp["조사시작일자"] = pd.to_datetime(df_temp.loc[:,"조사시작일자"])
기준 년도와 기준월 컬럼을 생성합니다.
df_temp["기준년도"] = df_temp["조사시작일자"].dt.year
df_temp["기준월"] = df_temp["조사시작일자"].dt.month
기준월을 이용하여 분기 컬럼을 생성합니다.
if df_temp.loc[0,"기준월"] in (10,11,12):
df_temp["분기"] = 4
elif df_temp.loc[0,"기준월"] in (7,8,9):
df_temp["분기"] = 3
elif df_temp.loc[0,"기준월"] in (4,5,6):
df_temp["분기"] = 2
elif df_temp.loc[0,"기준월"] in (1,2,3):
df_temp["분기"] = 1
▶ 한 건의 데이터(하나의 파일) 은 모두 같은 조사시작일자를 가지기 때문에 위 코드처럼 기준월이 조건을 만족하면 그에 맞는 분기값을 가지는 분기 컬럼을 생성했습니다.
데이터 통합과 분석 그리고 시각화는 다음 포스팅을 기대해주세요
Coming soon...
'Project' 카테고리의 다른 글
[데이터분석 미니프로젝트] - 수질 정보 데이터 전처리 (4) | 2023.12.07 |
---|---|
[데이터 분석] 국내 여행지역 관심도 분석(2) (0) | 2023.12.04 |
Vs code 에서 Git hub 연동하기 (4) | 2023.12.01 |
[Springboot] Springboot MariaDB 연동 (Maven) (10) | 2023.11.29 |
Html 이용하여 fake site 만들기 (0) | 2023.10.20 |