[모두의데이터] 4주차 팀과제

H Kim·2024년 8월 21일
0

개인프로젝트

목록 보기
7/7
post-thumbnail
post-custom-banner

📌 Q1. 시점 컬럼에서 연도와 분기에 대한 파생변수를 생성하고 기술통계를 구해주세요.

  • 데이터 컬럼을 단위인 "백만"으로 변경해 주세요.
  • describe() 로 기술통계를 구했을 때 다음과 같은 결과가 나오도록 합니다. 아래 결과는 예시로 소숫점 자리수가 다르게 표시되더라도 값이 같다면 괜찮습니다.
  • 전처리한 백만, 연도, 분기 컬럼이 수치형 데이터 일 때 아래와 같은 결과가 나오니 데이터가 수치 형태로 되어 있는지도 확인해 주세요!
  • 데이터는 위에서 제공된 데이터를 사용합니다.
  • 해당 기술통계로 알 수 있는 정보가 무엇인지도 함께 작성해 주세요!
# 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을 사용하여 국가(대륙)별 연도별 판매액의 합계를 분석해 주세요.

  • 국가(대륙)별 연도별 판매액의 합계를 구해서 어느 지역에 판매액이 많은지를 알아보겠습니다.
  • 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년의 온라인 해외판매 상품군을 지역별 합계를 구해 분석해 주세요.

  • 2020년은 코로나로 인해 전국민이 어려움을 겪었던 시기입니다. 또, 아마존 등의 해외 온라인 판매가 늘어난 시기이기도 합니다. 이 때, 해외 어느지역에 온라인 판매가 얼마나 되었는지를 groupby() 와 unstack()을 활용해서 합계를 구하고 분석해 주세요! 또 분석한 결과를 보고 어떤 인사이트를 얻었는지도 함께 작성해 주세요!
  • 그래프의 색상, 스타일은 자유롭게 원하는 스타일로 지정해도 됩니다.
# 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년까지의 연도별 온라인 직접 판매액 합계를 시각화 해주세요.

  • 온라인 직접 판매액이 높은 지역은 "미국", "중국", "일본" 이며, 주요 판매 상품군은 "의류 및 패션 관련상품", "화장품", "음반·비디오·악기" 입니다. 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에 있는 데이터에서 교통사고의 차종을 볼 수 있는 건 맞는데 생각해보면 나 자체가 안전운임제가 어느 차까지 해당되는지 잘 모르니깐... 대충 화물차 사고건수만 살펴볼 수 있어서 좀 빈약한 근거가 되는 것 같았다.
그래서 때려침^^

지금은 노동시간이 줄어듦에 따라 성인들의 여가시간에서 독서가 차지하는 비율이 늘어나고 실질적으로 독서율이 올라갔다는 것을 가설로 세웠는데...
이것도 별로 안 될 것 같음.
시간이 없어서 이거 하다가 내 가설 검증 안 되면 안 된 채로 실패^^! 이러고 내야될 것 같다.

어쨌든 이런 공짜 기회를 통해 판다스도 써보고 너무 재밌었다.
회사 데이터 가지고 시각화 하는 것도 생각해봐야겠다.

post-custom-banner

0개의 댓글