이전내용과 이어집니다
이전 내용을 보고싶으시다면 클릭
제가 거주하고 있는 광주 지역의 최근 여행지 관심도가 성별 , 나이, 소득기준에 따라서
어떻게 변화하고 있는 추세인지에 대해 궁금해졌습니다.
광주광역시 성별 여행 관심도 변화 분석
① 기존 데이터 불러들이기
import pandas as pd
df = pd.read_csv('01_data/travel_data_total.csv')
df.columns
Index(['응답자ID', '조사시작일자', '성별구분코드', '연령대구분명', '답변자거주지역명', '가구소득정도명',
'서울특별시여행관심값', '경기도인천광역시여행관심값', '부산광역시여행관심값', '충청남도대전광역시여행관심값',
'충청북도여행관심값', '경상남도울산광역시여행관심값', '경상북도대구광역시여행관심값', '전라남도광주광역시여행관심값',
'전라북도여행관심값', '강원여행관심값', '제주도여행관심값', '기준년도', '기준월', '분기'],
dtype='object')
② 데이터 전처리
다른 지역에 대한 여행관심값은 제외하고 광주광역시에 대한 여행관심값만 가지는 데이터 프레임
df_gwangju 를 생성하였습니다.
df = df.drop(df.iloc[:,6:13],axis=1)
df = df.drop(df.iloc[:,-6:-3],axis=1)
df_gwangju = pd.DataFrame()
df_gwangju = df
Index(['응답자ID', '조사시작일자', '성별구분코드', '연령대구분명', '답변자거주지역명', '가구소득정도명',
'전라남도광주광역시여행관심값', '기준년도', '기준월', '분기'],
dtype='object')
추후에 사용이 용이하게 하기 위해 데이터 전처리 후 csv 파일로 저장했습니다.
df_gwangju.to_csv("datapre/df_gwangju",index=False)
기준년도, 성별, 광주광역시 여행관심값만 담은 데이터 프레임 gwangju_gender를 생성했습니다.
gwangju_gender = pd.DataFrame()
gwangju_gender["성별"] = df_gwangju["성별구분코드"]
gwangju_gender["기준년도"] = df_gwangju["기준년도"]
gwangju_gender["광주광역시여행관심값"] = df_gwangju["전라남도광주광역시여행관심값"]
gwangju_gender
전처리한 데이터프레임을 csv 파일로 저장했습니다.
gwangju_gender.to_csv("datapre/gwangju_gender",index=False)
데이터 프레임을 기준으로 기준년도, 성별에 따른 광주 광역시 여행관심값의 평균을 구하기 위해
pivot table을 이용하였습니다.
df_pivot = gwangju_gender.pivot_table(index = "기준년도" ,
columns = "성별",
values = "광주광역시여행관심값",
aggfunc = "mean")
df_pivot
③ 시각화하기
위 pivot 테이블을 이용하여 데이터를 선그래프로 시각화 하였습니다.
fig = px.line(df_pivot,x = df_pivot.index , y = df_pivot.columns , color = "성별" )
fig.show()
pivot 테이블을 사용하지 않고 기준년도와 성별 기준으로 그룹화 한뒤 광주광역시여행관심값의
평균을 구한 데이터 프레임 gwangju_gender_mean을 생성하여
막대그래프로 시각화하였습니다.
gwangju_gender_mean = gwangju_gender.groupby(["기준년도","성별"],as_index=False).mean()
fig = plt.figure(figsize=(10,6))
plt.title("광주광역시 여행관심값 성별 추이")
sns.barplot(x = "기준년도" , y = "광주광역시여행관심값" , hue = "성별" , data = gwangju_gender_mean ,errorbar=None)
plt.show()
++ 추가 내용
그래프에 데이터 값이 표현되면 조금 더 신뢰성있는 시각화가 되지 않을까하는 생각에
막대 그래프 위에 값이 표시되도록 변경해봤습니다.
import matplotlib.pyplot as plt
import seaborn as sns
fig, ax = plt.subplots(figsize=(10,6))
plt.title("광주광역시 여행관심값 성별 추이")
# 막대 그래프 그리기
sns.barplot(x="기준년도", y="광주광역시여행관심값", hue="성별", data=gwangju_gender, errorbar=None, ax=ax)
# 각 막대 끝에 값을 표시하기 위한 코드
for p in ax.patches:
height = p.get_height()
ax.text(p.get_x() + p.get_width() / 2, height+0.0001, f"{height:.2f}", ha="center")
plt.show()
▶ -2 , -1 , 0, 1, 2 로 구분되어있는 여행 관심도의 평균이므로 그 값이 매우 작아
신뢰성을 높이는데에는 미미한 영향을 끼칠 것으로 판단이 되고 , 추이를 보고자 하는 그래프이기에
데이터 값을 같이 표현하지 않는 것이 더 효과적이리라 판단됩니다.
[ 분석 ]
여성의 경우 남성보다 여행 관심도가 매해 높다.
여성과 남성의 여행 관심도는 비슷한 추이를 보인다.
여성과 남성 모두 지난 3년간 광주광역시에 대한 여행 관심도가 하락하는 것을 알 수 있다.
감소하는 광주광역시에 대한 국민의 여행 관심도를 높이기 위한 전략이 필요해보인다.
특히 여성보다 남성의 흥미를 이끌어낼 수 있는 행사 등을 유치하는 전략이 도움이 될 것으로 예상된다.
광주광역시 연령별 여행 관심도 변화 분석
① 데이터 전처리
성별때와 동일한 흐름으로 진행하였습니다.
기준년도, 연령대, 광주광역시 관심값을 가지는 데이터프레임 gwangju_gender 를 생성하였습니다.
gwangju_age = pd.DataFrame()
gwangju_age["기준년도"] = df_gwangju["기준년도"]
gwangju_age["연령대"] = df_gwangju["연령대구분명"]
gwangju_age["광주광역시여행관심값"] = df_gwangju["전라남도광주광역시여행관심값"]
gwangju_age
연령대별로 데이터가 어떻게 분포하고있는지 확인하였습니다.
비슷한 개수의 여행관심도 데이터가 있음을 확인할 수 있었고,
연령대는 20대부터 60대까지 있는 것을 확인하였습니다.
gwangju_age["연령대"].value_counts()
연령대와 기준년도를 기준으로 그룹화하여 광주광역시 여행관심도의 평균값을 가지는
데이터프레임 gwangju_gender_mean을 생성하였습니다.
gwangju_age_mean = gwangju_age.groupby(["연령대","기준년도"],as_index=False).mean()
gwangju_age_mean
② 데이터 시각화
막대그래프로 시각화 하였습니다.
fig = plt.figure(figsize=(10,8))
plt.title("기준년도별 연령대 광주광역시 여행관심값 추이")
sns.barplot(x = "기준년도" , y = "광주광역시여행관심값" , hue = "연령대" , data = gwangju_age_mean ,errorbar=None)
plt.show()
선그래프로도 시각화 해봤습니다.
fig = px.line(gwangju_age_mean,x = gwangju_age_mean["기준년도"] , y = gwangju_age_mean["광주광역시여행관심값"] , color = "연령대" ,title = "광주광역시 연령별 여행 관심도 추이")
fig.show()
▶ 막대 그래프와 선 그래프중 그 추이를 잘 나타내는 것은 선그래프라고 판단이 됩니다.
선 그래프를 통해 40 대와 50대를 제외한 나머지 연령대에서는 2021년부터 점차 그 관심도가
감소하고 있다는 것을 확인할 수 있습니다.
막대그래프로는 기준년도별 각 연령대의 여행 관심도 평균이 더욱 보기 쉽게 나타나있습니다.
광주광역시 소득기준별 여행 관심도 변화 분석
① 데이터 전처리
위와 동일하게 기준년도, 소득기준, 광주광역시 여행관심값 컬럼만 가진
데이터프레임 gwangju_income 을 생성하였습니다.
gwangju_income = pd.DataFrame()
gwangju_income["기준년도"] = df_gwangju["기준년도"]
gwangju_income["소득기준"] = df_gwangju["가구소득정도명"]
gwangju_income["광주광역시여행관심값"] = df_gwangju["전라남도광주광역시여행관심값"]
gwangju_income
소득기준 범주가 어떻게 되는지 확인하였습니다.
gwangju_income["소득기준"].value_counts()
모름이라는 행이 총 1576개가 있는 것을 확인했습니다.
제가 분석하고 싶은 것은 소득기준별로 광주광역시에 대한 여행 관심도가
년도별로 어떤 추이를 보이는지이기 때문에 모름이라고 되어있는 행을 삭제한 뒤에 진행하도록 하겠습니다.
아래의 코드를 통해 소득기준이 "모름" 인 행을 모두 삭제하였습니다.
gwangju_income.drop(gwangju_income[gwangju_income["소득기준"] == "모름" ].index,axis=0, inplace=True)
gwangju_income
다시 소득기준의 범주를 확인해봤을때 "모름" 이라는 데이터가 없는 것을 확인하였습니다.
gwangju_income["소득기준"].value_counts()
위에서와 동일하게 기준년도와 소득기준을 기준으로 그룹화하여
광주광역시 여행관심값에 대한 평균값을 가진 데이터 프레임 gwangju_income_mean을 생성하였습니다.
gwangju_income_mean = gwangju_income.groupby(["기준년도","소득기준"],as_index=False).mean()
gwangju_income_mean
② 데이터 시각화
막대 그래프 시각화와 선 그래프 시각화를 진행하였습니다
코드는 위와 비슷하므로 생략하겠습니다.
[ 분석 ]
300이상 500만미만과 500이상 700만 이하의 경우에는 2022년에 다소 증가하였다가 다시 감소한 것을 확인할 수 있다.
전체적인 추이는 감소하고 있는 것으로 보인다.
소득기준이 높을수록 여행 관심도는 더 높은 것을 알 수 있다.
소득 기준이 낮은 국민의 경우에는 여행지에 대한 관심도도 낮게 책정되는 것을 확인하였다.
최종 분석
성별 , 연령대별, 소득기준별 광주광역시 여행관심도의 추이를 분석해본 결과, 전반적으로 점차 감소하고있는 것을 확인하였다.
연령대에서는 각 연령대별 관심도의 차이가 해마다 다르게 나타났지만, 성별과 소득기준에서는 다른 결과를 보였다.
성별의 경우에는 여성의 여행관심도가 남성의 여행관심도보다 높게 나타났으며,
소득기준의 경우에는 소득이 높을수록 여행관심도가 높게 나타났다.
광주광역시에 한해서 분석한 것이기 때문에 다른 지역을 분석했을때에도 성별과 소득기준에 따른 여행관심도의 차이가 존재할지에 대한 분석이 필요하다.
일반적으로 모든 지역에 대해 성별과 소득기준에 따라 여행관심도 차이가 존재한다면, 성별과 소득기준 그리고 기준 년도를 특성으로 두고 지역에 대한 여행 관심도값을 예측하는 것이 가능할 것이라 판단된다.
'Project' 카테고리의 다른 글
[전자제품쇼핑몰] 데이터 수집 - 전자 제품 데이터 웹크롤링 (5) | 2024.01.21 |
---|---|
[데이터분석] 국내 여행지역 관심도 분석(5) - 지도 시각화(1) (5) | 2024.01.07 |
[데이터 분석] 국내 여행지역 관심도 분석(3) (2) | 2023.12.17 |
[데이터분석 미니프로젝트] plotly 그래프 생성하기 (2) | 2023.12.11 |
[데이터분석 미니프로젝트] - 웹크롤링 데이터 워드 클라우드 (3) | 2023.12.11 |