반응형
Python Pandas의 read_excel()함수를 이용하여 엑셀 쉬트의 데이타를 읽어와서 K-means에 넣는 방법에 대해 알아보겠습니다.
read_excel()에 자주 사용하는 option에 대해 알아보겠습니다.
1. (sheet_name='Sheet1', header=2, index_col='prod_sale'): sheet_name은 불어올 쉬트의 이름, header는 label의 위치로 0부터 시작합니다. 2이면 3번째에 header가 존재함을 의미, index_col은 인덱스로 사용할 컬럼명을 의미합니다.
2. (dtype={'PROD_BRND_NM': str, 'TOTAL':float}): dtype으로 각 컬럼의 데이터 형태를 지정하게 됩니다. 여기서는PROD_BRND_NM는 str형, TOTAL은 float형으로 지정합니다.
3. (thousands=','): 천 단위마다 구분자 형태를 지정합니다.
4. (nrows=10): 총 읽어올 행의 개수, 10개이면 10줄만 읽어옵니다.
5. (comment='#'): #표시가 있는 다음글은 모두 무시합니다.
read_excel과 K-means 실습
-
특정 행 또는 열을 대상으로 결측값이 들어 있으면 제거하기 위해 dropna()를 추가했습니다. 결측값이 있는 열 전체를 삭제하기 위해서는 dropna(axis=1)을 결측값이 들어있는 행 전체를 삭제하기 위해서는 dropna(axis=0)을 적용합니다.
- dtype에서 데이타 유형을 float로 하면 소수점형태, str로 하면 문자형입니다. to_numeric함수를 사용하여 문자형을 숫자로 변경가능하며, to_dateformat으로 문자를 날짜, 시간 형식으로 변환이 가능합니다.
- 이 후 데이타 중 K-means로 적용하기 위한 숫자형 데이타를 넣어주게 됩니다.
from sklearn.cluster import KMeans
import numpy as np
import os
import pandas as pd
dir_location = 'D:\\Data관련\\'
file_location = 'cluster_data.xlsx'
excel_file_dir = os.path.join(dir_location, file_location)
df_from_excel = pd.read_excel(excel_file_dir,
sheet_name='data',
header=0,
# index_col='SALE_PROD_CD',
thousands=',',
nrows=10,
comment='#',
dtype={
'PROD_MSTR_CD':str,
'RPRS_PROD_CD':str,
'SALE_PROD_CD':str,
'S_AREACODE':str,
'DEP_DT':str,
'DEP_TM':str,
'PROD_AREA_CD':str,
'PROD_MSTR_NM':str,
'PROD_BRND_NM':str,
'SALE_PROD_NM':str,
'PROD_DTL_ATTR_CD':str,
'AMT_AVG':str,
'CITY_CD':str,
'CITY_NM':str,
'CNTRY_NM':str,
'CNTRY_CD':str,
'RPRS_PROD_CNTNT_URL_ADRS':str,
'TOTAL':float
}
).dropna()
df_from_excel['DEP_DATE'] = pd.to_datetime(df_from_excel['DEP_DT'] + df_from_excel['DEP_TM'], format='%Y%m%d%H%M')
df_from_excel['AMT_AVG'] = pd.to_numeric(df_from_excel['AMT_AVG'])
# df_from_excel['DEP_DATE'] = pd.to_datetime(df_from_excel['DEP_DATE'], format='%Y%m%d%H%M')
print(df_from_excel.head())
print(df_from_excel.info())
print(df_from_excel.loc[:,['AMT_AVG','TOTAL']])
kmeans = KMeans(n_clusters=4, init='k-means++', max_iter=300, random_state=0)
kmeans.fit(df_from_excel.loc[:,['AMT_AVG','TOTAL']])
print(kmeans.labels_)
df_from_excel['cluster'] = kmeans.labels_
반응형
'Pandas' 카테고리의 다른 글
Pandas Sidetable: 판다스 똑똑하게 사용하기 - Freq, Counts, Missing, Subtotal (0) | 2021.04.16 |
---|---|
데이타 결측치(누락값, 결측값) 처리하기 : fillna (ffill, bfill), dropna, isnull (0) | 2020.12.07 |
Pandas에서 시간, 날짜 다루기 - to_datetime만 잘 다루면 끝! (0) | 2020.11.28 |
Pandas 기초 통계를 위한 groupby 응용 - nunique()와 matplot로 그래프 간단하게 그리기 (0) | 2020.11.14 |
[TIP] Pycharm, Run Window에서 결과 값 전체 보이게 하기 (0) | 2020.11.01 |
Pandas 데이터 추출, 활용 하기 : loc, iloc 활용 [슬라이싱] (0) | 2020.10.14 |
Pandas 데이터 추출, 활용 하기 : loc, iloc 활용 [행단위] (0) | 2020.10.09 |
Pandas(판다스)로 데이터 핸들링 : 기본 : info(), describe(), value_counts(), head() (1) | 2020.10.04 |