📌 Q1. 시점 컬럼에서 연도와 분기에 대한 파생변수를 생성하고 기술통계를 구해주세요.
# df 복사 (원본데이터 변형 방지)
df_01 = df.copy()
# '시점' 컬럼 값 확인
df_01['시점']
# split 해보기
'2017.1/4'.split('.')[0]
'2017.1/4'.split('.')[1].split('/')[0]
# '연도' 컬럼 생성
df_01['연도'] = df['시점'].map(lambda x : int(x.split('.')[0]))
# '분기' 컬럼 생성
df_01['분기'] = df['시점'].map(lambda x : int(x.split('.')[1].split('/')[0]))
# '데이터' 컬럼 '백만원' 으로 변경
df_01 = df_01.rename(columns = {'데이터': '백만원'})
# 기술통계 출력
df_01.describe().round(2)
📌 Q2. pivot_table을 사용하여 국가(대륙)별 연도별 판매액의 합계를 분석해 주세요.
# df 복사 (원본데이터 변형 방지)
df_02 = df_01.copy()
# 데이터 확인
df_02.head(10)
# 피봇테이블 데이터 만들기
pivot_02 = pd.pivot_table(df_02, values='백만원', index=['국가(대륙)별', '연도'], aggfunc='sum')
# 피봇테이블 출력
pivot_02.unstack()
# 라인그래프 출력
sns.lineplot(data=pivot_02, x='연도', y='백만원', hue='국가(대륙)별')
plt.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.)
📌 Q3. groupby를 사용하여 2020년의 온라인 해외판매 상품군을 지역별 합계를 구해 분석해 주세요.
# df 복사 (원본데이터 변형 방지)
df_03 = df_01.copy()
# 2020년을 포함한 이전년도 데이터만 가져옴
df_2020 = df_03[df_03['연도'] <= 2020]
# groupby 사용
df_2020_group = df_2020.groupby(['국가(대륙)별', '연도'])['백만원'].sum().unstack().fillna(0)
# 데이터프레임인지 확인
type(df_2020_group)
# 컬럼값 확인
df_2020_group.columns
# barplot 생성
df_2020_group.plot(kind='bar', figsize=(12, 8))
plt.xlabel('연도')
plt.ylabel('값')
plt.title('연도별 국가/대륙별 데이터 바 차트')
plt.legend(title='국가/대륙')
plt.grid(True)
plt.show()
# 스택형 바 차트 생성
df_2020_group.plot(kind='bar', stacked=True, figsize=(12, 8))
plt.xlabel('연도')
plt.ylabel('값')
plt.title('연도별 국가/대륙별 데이터 스택형 바 차트')
plt.legend(title='국가/대륙')
plt.grid(True)
plt.show()
📌 Q4. 주요 판매 국가와 상품군에 대해 2021년까지의 연도별 온라인 직접 판매액 합계를 시각화 해주세요.
# 데이터베이스 복사
df_03 = df_01.copy()
# 국가가 미국&중국&일본이고 상품군이 의류 및 패션 관련상품&화장품&음반·비디오·악기이고 2021년까지의 데이터로 데이터셋 만듦
df_03_need = df_03[
((df_03['국가(대륙)별'] == '미국')
| (df_03['국가(대륙)별'] == '중국')
| (df_03['국가(대륙)별'] == '일본'))
& ((df_03['상품군별'] == '의류 및 패션 관련상품')
| (df_03['상품군별'] == '화장품')
| (df_03['상품군별'] == '음반·비디오·악기'))
& (df_03['연도'] <= 2021)]
# 출력해서 확인
df_03_need
# 피벗테이블 만들기
pivot_03 = pd.pivot_table(df_03_need, values='백만원', index=['국가(대륙)별', '상품군별', '연도'], aggfunc='sum')
# 데이터프레임 구조 변경
pivot_03 = pivot_03.unstack()
# 컬럼 확인
pivot_03.columns
# 히트맵으로 시각화
sns.heatmap(pivot_03, cmap='Blues', annot=True, fmt='.0f')
plt.xticks(ticks=np.arange(5), labels=['2017년', '2018년', '2019년', '2020년', '2021년'], ha='left')
plt.xlabel('연도')
사실 안 마쳤다네...
문제 5번은 스스로 데이터 정하고 가설 세워서 분석해야 되는데 너무 어려워서 눈물을 흘리고 있음...
그것도 다 하면 여기다 올려야만...
원래 맨 처음에는 화물차의 안전운임제 시행 이전과 이후, 그리고 없어지고 난 다음의 사고통계를 분석해서 안전운임제 이후로 화물차의 교통사고 건수가 줄어들었고... 이런 식으로 분석하려고 했는데...
일단 데이터 자체가 2022년까지밖에 없어서 안전운임제가 사라진 다음의 데이터가 없어서 내 가설의 한 축이 사라졌음.
여기에 KOSIS에 있는 데이터에서 교통사고의 차종을 볼 수 있는 건 맞는데 생각해보면 나 자체가 안전운임제가 어느 차까지 해당되는지 잘 모르니깐... 대충 화물차 사고건수만 살펴볼 수 있어서 좀 빈약한 근거가 되는 것 같았다.
그래서 때려침^^
지금은 노동시간이 줄어듦에 따라 성인들의 여가시간에서 독서가 차지하는 비율이 늘어나고 실질적으로 독서율이 올라갔다는 것을 가설로 세웠는데...
이것도 별로 안 될 것 같음.
시간이 없어서 이거 하다가 내 가설 검증 안 되면 안 된 채로 실패^^! 이러고 내야될 것 같다.
어쨌든 이런 공짜 기회를 통해 판다스도 써보고 너무 재밌었다.
회사 데이터 가지고 시각화 하는 것도 생각해봐야겠다.