1. 데이터 전처리
작성자: 문하진
1. 필요한 라이브러리 import 하기 및 글꼴 설정
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
2. 파일 불러오기
from google.colab import drive
drive.mount('/content/drive')
3. melt 함수 사용
*melt는 pandas 라이브러리에서 제공하는 함수로, 데이터를 넓은 형식에서 긴 형식으로 변환하는 데 사용된다.
df=k_b.melt(id_vars=["국가(대륙)별","상품군별","판매유형별"],
var_name="기간",value_name="백만원")
df.head()를 통해 자료의 앞부분만을 요약해서 볼 수 있다.
4. 전처리
df["기간"]에서 연도를 분리한다.
*map(function, iterable): 반복 가능한 객체의 모든 요소에 지정된 함수를 적용하여 결과를 반환하는 함수
df["기간"].map(lambda x: int(x.split('.')[0]))
df["연도"]=df["기간"].map(lambda x: int(x.split(".")[0]))
df["기간"]에서 분기를 분리한다.
df["기간"].map(lambda x: int(x.split(".")[1].split("/")[0]))
df["분기"]=df["기간"].map(lambda x: int(x.split(".")[1].split("/")[0]))
df["백만원"]에서 -문자를 결측치로 변경하고 float 타입으로 변경한다
df["백만원"] = df["백만원"].replace("-",np.nan).astype(float)
합계 데이터는 따로 구할 수 있으므로 제거하도록 한다.
copy를 하여 원본 df의 변형을 막고 맨 아래의 값만 출력하는 것을 막기 위해 &를 쓴다.
*&는 and와 비슷한 개념이며 |는 or과 비슷한 개념이다.
df=df[(df["국가(대륙)별"]!="합계")&(df["상품군별"]!="합계")].copy()
판매유형별 데이터에 '계'만이 존재하는 일부 기간이 있으므로 '계'를 나타내는 데이터만 불러온다.
df_total=df[df["판매유형별"]=="계"].copy()
2. 데이터 시각화
작성자: 문하진
x축을 연도로, y축을 백만원으로 하여 상품군별 판매액을 볼 수 있다.
sns.lineplot(data=df_total, x="연도", y="백만원", hue="상품군별")
plt.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.)
서브플롯으로 표시하여 그래프를 자세히 볼 수도 있다.
sns.relplot(data=df_total, x="연도", y="백만원",
hue="상품군별", kind="line", col="상품군별", col_wrap=4)
isin()을 사용하여 특정 데이터를 제외하여 변수에 담을 수 있다.
아래 코드는 화장품과 의류 및 패션 관련 상품을 제외하여 변수에 담은 것이다.
df_sub=df_total[~df_total["상품군별"].isin(["화장품","의류 및 패션 관련상품"])].copy()
K-beauty 판매를 분석하기 위해 상품군별이 화장품인 데이터만 가져온다.
df_cosmetic=df_total[df_total["상품군별"]=="화장품"].copy()
df_cosmetic["상품군별"].unique()
연도와 판매액을 각각 x축, y축으로 잡고 분기별로 다른 색상의 그래프로 표현한다.
plt.figure(figsize=(15,4))
sns.lineplot(data=df_cosmetic, x="연도", y="백만원", hue="분기")
작성자 강수환
첫코드는 그림의 크기를 가로15인치 세로 4인치로 설정한다는 의미이고 두 번째 코드는 x축 값들을 30도 회전시켜 나타내겠다는 의미입니다. 마지막 코드로 데이터에서 기간과 매출로 그래프를 만들었습니다.
직전 코드에서 hue 국가대륙별을 추가하여 구가별로 구분하여 나타냈습니다.
다시 직전 코드에서 중국 일본 미국 아세안의 수치를 제거하여 비교적 작아서 가시성이 떨어지는 수치들을 확인해보았습니다. 중남미를 보시면 2016년 4분기에 매출이 급증한 모습을 확인할 수 있는데 뒤에서 이유를 추측해보겠습니다~
의류 및 패션 관련상품 쪽 데이터만 뽑아서 전처리해보겠습니다~
위와 같은 방식으로 국가대륙별로 구분하여 그래프를 그려보았습니다.
그 중 계값만 뽑아주고 ci=None을 추가하여 신뢰구간을 없애주었습니다.
국가를 행으로 연도를 열로하는 피벗테이블을 만들었습니다. func는 sum으로 하여 합계값으로 피벗테이플에 표시됩니다.
그 피벗테이블을 고대로 색깔로 표시해주는 히트맵입니다.
cmap을 활용하여 그래프의 색깔을 바꿀 수 있다. _r을 활용하여 색의 연하기를 변형할 수 있다. r이 많아질 수록 색이 연해짐.
위 그래프에서 annot = True를 사용하여 히트맵 안에 데이터 값을 포함시킨다.
fmt = ".0f"로 하여 정수를 나타낸다.
이러한 결과값이 나온다.
판매유형별 데이터의 "계"만 모은 df_total 변수를 통한 연도별 합계 금액을 시각화하기 위해
그래프 다른 색상으로 나타내기
마지막 코드로 박스 사이 간격과 위치를 설정할 수 있습니다.
작성자 최혜윤
<변형>
사진 속에서 중국의 그래프를 제거함에도 불구하고 중동, 중남기, 대양주의 그래프가 눈에 잘 들어오지 않는다.
미국, 일본, 아세안, 기타, 유럽연 그래프를 제거하여 나머지 수치가 낮은 항목들을 자세히 살펴보고자 한다.
합계 데이터는 따로 구할 수 있기에 전체 데이터에서 제거한다.
df=df[(df["국가(대륙)별"]!="합계") &(df["상품군별"]!="합계")].copy()
df.info()
plt.figure(figsize=(15,4))
plt.xticks(rotation=30)#xticks(rotation)으로 글자 기울이기(30도 만큼)
sns.lineplot(data=df_cosmetic[(df_cosmetic["국가(대륙)별"]!="중국")&(df_cosmetic["국가(대륙)별"]!="미국")&(df_cosmetic["국가(대륙)별"]!="일본")&(df_cosmetic["국가(대륙)별"]!="아세안(ASEAN)")&(df_cosmetic["국가(대륙)별"]!="유럽연합(EU)")&(df_cosmetic["국가(대륙)별"]!="기타")], x="기간", y="백만원",hue="국가(대륙)별")
이 코드를 실행하게 되면,
이런 그래프가 나타난다.
중남미 그래프를 보면, 2016년 4분기에 k 뷰티가 크게 확산된 것을 확인할 수 있다.
이와 관련해서 이 시기에 어떤 것이 중남미에 영향을 끼쳤는지 찾아보았다.
https://www.cmn.co.kr/mobile/sub_view.asp?news_idx=23573
[한국 화장품, 중남미 여심(女心)도 녹였다]
https://www.koreana.or.kr/koreana/na/ntt/selectNttInfo.do?mi=1544&nttSn=51653&bbsId=1114&langTy=KOR
이 기사를 통해 k 뷰티 열풍은 한류 스타들로부터 출발했다는 것을 알 수 있다.
2016년 드라마 <태양의 후예>가 흥행하면서 극 중 주인공이었던 송혜교가 출연한 광고 제품들이 해외에서 지속적인 인기를 끌었다. 또한 이 시기에 k 팝도 함께 떠오르면서 대세 아이돌이었던 트와이스나 마마무 같은 걸그룹의 메이크업을 따라하는 외국인들도 많이 늘어나기 시작했다. k 팝, k 드라마 등 한국 문화로 접하기 시작한 한국의 뷰티 제품들은 외국인을 만족시키기에 충분했다.
모유와 유사한 성분의 당나귀 우유를 사용한 마스크팩, 한방 성분이 함유된 스킨케어 제품, 달팽이 점액 성분의 영양크림 등 좋은 성분이 담겨져 있고 비싸지 않은 가격으로 k 뷰티 산업은 중남미까지 크게 발을 넓혀 나갈 수 있었다.
'Study > CODE 3기 [파이썬으로 배우는 데이터 사이언스]' 카테고리의 다른 글
[비비빅] 행정구역별 병원당 노인 인구수 비교 분석 (0) | 2024.06.01 |
---|---|
[최최최정예 1조:김이김이나] K-beauty 온라인 판매 전략 (0) | 2024.05.31 |
[C5DE] 수도권/비수도권 간 의료 격차 알아보기 (1) | 2024.05.31 |
[우승은어짜피우리] K-beauty 온라인 판매분석 (1) | 2024.05.30 |
[불4조 - 코린이집] 서울 종합병원 분포 확인하기 (0) | 2024.05.29 |