1.데이터 준비
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
df_kospi_total = pd.read_csv("./kospi_total.csv")
df_kospi_total = df_kospi_total.drop(['Unnamed: 0'],axis=1)
df_kospi_total = df_kospi_total.fillna(0)
df_kospi_total = df_kospi_total.iloc[-20:,:8] #day , item count
df_kospi_total = df_kospi_total.astype(int)
df_trans_kospi_total = df_kospi_total.T
2.데이터 확인
df_trans_kospi_total
df_kospi_total
**모든 data는 8개 종목 20개 날짜별 가격으로 되어있음**
2.5정방향과 Transpose 데이터의 형상에 따른 Dendrogram
***"가격"을 기준으로 묶여있다***
***"종목"을 기준으로 묶여있다***
즉 Dendrogram 에서 사용하기 위해서는 data의 형태가
"좌측에 type , 우측에 attribute 가 들어가야 정상적 출력이 가능하다
3.create Dendrogram x-axis label
위의 그림처럼 label을 지정하지 않으면 1,2,3등의 숫자로 표시되어 다시 dataframe 을 확인해서 해당 숫자와 항목을 비교하는 작업을 거쳐야 한다
이를 위해 dendrogram 속성에 labels를 만들어준다
labels 에 들어갈수 있는 data type 을 확인하면 다음과 같다 링크
ndarry 타입의 데이터만 label로 사용이 가능한것을 확인가능하다
labeling = df_kospi_total.columns.tolist()
를 사용해 dataframe 의 column 이름을 list로 받아서 label 에 사용한다
4.dendrogram 생성
import scipy.cluster.hierarchy as shc
labeling = df_kospi_total.columns.tolist()
plt.figure(figsize=(10, 7))
plt.title("Customer Dendograms")
mergings = shc.linkage(df_trans_kospi_total, method='ward')
dend = shc.dendrogram(mergings,labels=labeling,
leaf_rotation=90,leaf_font_size=20)
plt.savefig('dendrogram.png')
댓글 없음:
댓글 쓰기