이전 내용과 이어집니다.
이전내용이 보고싶으시다면 클릭
연도별 지역의 관심도 추이 분석
① 데이터 전처리
2021-2023 년의 11개 시도의 여행 관심도 평균값의 추이를 비교하기 위해
연도로 그룹화하여 각각 시도 관심값의 평균값을 구하여 데이터 프레임을 만들었습니다.
# 기준년도별 지역별 관심도의 평균값이 필요
df_temp = pd.DataFrame()
for col in df.columns[6:18]:
df_temp[col] = df[col]
df_temp = df_temp.groupby("기준년도",as_index=False).mean()
df_temp
▶ 각 시도의 여행관심값과 기준년도를 넣은 데이터프레임 df_temp를 for문을 통해 만든 후
기준년도로 그룹화한 뒤에 mean() 을 통해 평균값을 구했습니다.
sum() 의 경우에는 문자열에도 적용되지만 mean의 경우에는 int 타입만 적용되니 미리 info()를 통해 데이터 타입을 확인하고 진행하는 것이 좋겠습니다.
② 데이터 시각화
plotly를 사용하여 선그래프로 표현하였습니다.
plotly.express ( px ) 를 사용하는 방법과 plotly.graph_objects ( go ) 를 사용하는 방법이 있는데
아래는 후자를 사용하였습니다.
보통의 경우 express를 사용하는 것이 편리하지만 graph_objects를 사용하면 커스터마이징이 가능하여
특정 컬럼의 데이터만 색상을 다르게 하여 강조한다던지의 효과를 주는 것이 가능해집니다.
fig = go.Figure()
for col in df_temp.columns[1:]: # '연도' 컬럼은 제외
fig.add_trace(go.Scatter(
x=df_temp["기준년도"],
y=df_temp[col],
mode='lines+markers',
name=col
))
fig.update_layout(title_text="각 연도별 지역 여행관심도",
xaxis_title="연도",
yaxis_title="관심도 평균값")
fig.update_xaxes(type='category')
fig.show()
▶ 그래프를 통해 전반적으로 관심도가 하락하는 것을 확인할 수 있습니다.
이는 국내 여행지에 대한 관심도가 점점 줄어들고 있다는 것을 의미합니다.
서울특별시 여행관심값의 경우에만 점점 상승하고 있습니다.
서울에 대한 여행 관심도는 다른 여행지에 비해 증가하였다는 것을 의미합니다.
++ plotly
facet_col = "컬럼명" : 해당 컬럼명의 고유한 값을 기준으로 그래프가 subplot처럼 쪼개준다.
facet_col='성별'
성별에 따른 지역 여행 관심도 비교 분석
ⓛ 데이터 전처리
기존 df 데이터프레임에서 성별을 가져오고 나머지 기준년도와 관심값 데이터 컬럼을 for문을 사용하여 df_gender에 넣어주었습니다. 그 뒤 성별과 기준년도로 그룹화 하고 각각의 지역에 대한 관심도 평균을 데이터값으로 갖는 데이터 프레임을 만들었습니다. as_index = False를 작성해야 index가 생기지 않고 그룹 기준이 컬럼으로 생성됩니다.
df_gender = pd.DataFrame()
df_gender["성별"] = df["성별구분코드"]
for col in df.columns[6:18]:
df_gender[col] = df[col]
df_gender = df_gender.groupby(["기준년도","성별"],as_index=False).mean()
df_gender
모든 연도의 각각의 지역에 따른 남녀 구분된 막대그래프를 그리기에는 총 66개의 막대가 생성되어 효율적이지 않으리라 판단하고 우선 2021년에 대한 데이터만 뽑아서 사용하였습니다.
df_2021 = df_gender[df_gender["기준년도"] == 2021]
df_2021
그 뒤 기준년도와 성별을 제외하고 나머지 관심값 컬럼 내용을 행에 넣고자 우선 기준년도와 성별을 제외한 컬럼들을 가진
데이터 프레임 df_2021_temp를 만들었습니다.
df_2021_temp = pd.DataFrame()
for col in df_2021.columns[2:]:
df_2021_temp[col] = df_2021[col]
df_2021_temp
행 열을 전환해주는 transpose를 사용하였습니다.
df_2021_temp = df_2021_temp.transpose()
df_2021_temp
위 데이터 프레임에서는 index값으로 지역이 들어가있고 0 컬럼이 F( 여자) , 1컬럼이 M(남자) 이므로 reset_index를 통해 index를 없애주고(지역 컬럼이 0번 컬럼으로 생김 이때 컬럼명은 index) , 컬럼명을 바꿔주었습니다.
df_2021_temp = df_2021_temp.reset_index()
df_2021_temp.columns = ['지역','여자' ,'남자']
df_2021_temp
② 데이터 시각화
여자 남자에 대한 그래프 추가를 통해 아래 사진과 같은 그래프가 생성되었습니다.
import plotly.graph_objects as go
import pandas as pd
# 그래프 생성
fig = go.Figure()
# 여자와 남자에 대한 막대 추가
fig.add_trace(go.Bar(x=df_2021_temp['지역'], y=df_2021_temp['여자'], name='여자'))
fig.add_trace(go.Bar(x=df_2021_temp['지역'], y=df_2021_temp['남자'], name='남자'))
# 레이아웃 설정
fig.update_layout(
barmode='group', # 그룹 막대 그래프 설정
xaxis_title='지역',
yaxis_title='여행 선호도',
title='2021년 지역별 여행 선호도'
)
# 그래프 표시
fig.show()
2021년에는 제주도에 대한 관심값이 제일 높고 그다음은 강원도에 대한 관심이 제일 높았음을 알 수 있습니다.
또한 평균적으로 지역에 대한 여행관심도가 남자보다는 여자가 높은것을 알 수 있습니다.
'Project' 카테고리의 다른 글
[데이터분석] 국내 여행지역 관심도 분석(5) - 지도 시각화(1) (5) | 2024.01.07 |
---|---|
[데이터 분석] 국내 여행지역 관심도 분석(4) (3) | 2024.01.06 |
[데이터분석 미니프로젝트] plotly 그래프 생성하기 (2) | 2023.12.11 |
[데이터분석 미니프로젝트] - 웹크롤링 데이터 워드 클라우드 (3) | 2023.12.11 |
[데이터분석 미니프로젝트] 재생에너지 발전량( Plotly , Streamlit 사용법) (2) | 2023.12.10 |