nsç®æ³èç±»æ¯ä¸ªå°éç«ç¹æµéæ°æ® import pandas as pd #åæ°åå§å inputfile = 'D:/consumption_data.xls' #ééåå ¶ä»å±æ§æ°æ® outputfile = 'D:/data_type.xls' #ä¿åç»æçæä»¶å k = 3 #èç±»çç±»å« iteration = 500 #èç±»æå¤§å¾ªç¯æ¬¡æ° data = pd.read_excel(inputfile, index_col = 'groupid') #è¯»åæ°æ® data_zs = 1.0*(data - data.mean())/data.std() #æ°æ®æ åå from sklearn.cluster import KMeans model = KMeans(n_clusters = k, n_jobs = 4, max_iter = iteration) #å为kç±»ï¼å¹¶åæ°4 model.fit(data_zs) #å¼å§èç±» #ç®åæå°ç»æ r1 = pd.Series(model.labels_).value_counts() #ç»è®¡å个类å«çæ°ç® r2 = pd.DataFrame(model.cluster_centers_) #æ¾åºèç±»ä¸å¿ r = pd.concat([r2, r1], axis = 1) #横åè¿æ¥ï¼0æ¯çºµåï¼ï¼å¾å°èç±»ä¸å¿å¯¹åºçç±»å«ä¸çæ°ç® r.columns = list(data.columns) + [u'ç±»å«æ°ç®'] print(r) #详ç»è¾åºåå§æ°æ®åå ¶ç±»å« r = pd.concat([data, pd.Series(model.labels_, index = data.index)], axis = 1) #详ç»è¾åºæ¯ä¸ªæ ·æ¬å¯¹åºçç±»å« r.columns = list(data.columns) + [u'è类类å«'] r.to_excel(outputfile) #ä¿åç»æ def density_plot(data): #èªå®ä¹ä½å¾å½æ° import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] #ç¨æ¥æ£å¸¸æ¾ç¤ºä¸ææ ç¾ plt.rcParams['axes.unicode_minus'] = False #ç¨æ¥æ£å¸¸æ¾ç¤ºè´å· p = data.plot(kind='kde', linewidth = 2, subplots = True, sharex = False) [p[i].set_ylabel(u'å¯åº¦') for i in range(k)] plt.legend() return plt pic_output = 'D:/pd_' for i in range(k): density_plot(data[r[u'è类类å«']==i]).savefig(u'%s%s.png' %(pic_output, i))