之前運行測試好好的程序,忽然出現(xiàn)了報錯,還是merge時候的類型錯誤,這個bug有點蹊蹺。
代碼:進行聚類之后計算平均值與方差
tmp_df = df[['object1', 'float']].groupby(['object1']).head(20).groupby(['object1'])['float'].agg(['mean', 'sum']).reset_index()
這個輸出的就是原本的數(shù)據(jù)類型:一個object,一個float64
tmp_df = http_df[['object1', 'object2', 'float']].groupby(['object1', 'object2']).head(20).groupby(['object1', 'object2'])['float'].agg(['mean']).reset_index()
這個輸出就會修改object為float,
差別只在于一個是使用一個特征進行聚類,一個是使用兩個特征進行聚類
pandas進行聚類的時候,就算之前已經(jīng)定好各個列的類型,如果里邊沒有數(shù)據(jù)的時候,使用一列進行聚類不會修改列的類型,但是如果同時使用兩列進行聚類就會修改列的類型。
所以才會出現(xiàn)后面進行merge時候,類型不同報錯
有數(shù)據(jù)輸入的時候這個報錯不會發(fā)生,沒有數(shù)據(jù)的時候就會發(fā)生。
補充:python數(shù)據(jù)處理--按照數(shù)據(jù)差值大小進行聚類(歸類)
近來在做數(shù)據(jù)處理的工作中,遇到了數(shù)據(jù)分類的問題,利用python的各種方便庫,寫了這么個以數(shù)據(jù)差值大小進行歸類的方法。
有一批數(shù)據(jù)集,如list=[1,2,3,4,9,10,11,20,20,1,1.1,2.1,100],將其按照數(shù)值大小進行歸類,即數(shù)值比較接近的歸為一類,故需要先設(shè)置一個閾值,以進行劃分。
其中輸入?yún)?shù)Data_set為輸入的數(shù)據(jù)集,可以為列表、數(shù)組、Series、DataFrame。threshold為數(shù)據(jù)大小分類的門限值。
輸出class_k為數(shù)據(jù)歸類列表集合,index_list為數(shù)據(jù)歸類對應(yīng)的索引集合。
def threshold_cluster(Data_set,threshold): #統(tǒng)一格式化數(shù)據(jù)為一維數(shù)組 stand_array=np.asarray(Data_set).ravel('C') stand_Data=Series(stand_array) index_list,class_k=[],[] while stand_Data.any(): if len(stand_Data)==1: index_list.append(list(stand_Data.index)) class_k.append(list(stand_Data)) stand_Data=stand_Data.drop(stand_Data.index) else: class_data_index=stand_Data.index[0] class_data=stand_Data[class_data_index] stand_Data=stand_Data.drop(class_data_index) if (abs(stand_Data-class_data)=threshold).any(): args_data=stand_Data[abs(stand_Data-class_data)=threshold] stand_Data=stand_Data.drop(args_data.index) index_list.append([class_data_index]+list(args_data.index)) class_k.append([class_data]+list(args_data)) else: index_list.append([class_data_index]) class_k.append([class_data]) return index_list,class_k
測試如下:
import numpy as np from pandas import Series,DataFrame Data_set=[1,1.1,0.9,-5,2,100,99,-4.2,10000,0] index_list,class_k=threshold_cluster(Data_set,5) index_list Out[10]: [[0, 1, 2, 4, 9], [3, 7], [5, 6], [8]] class_k Out[11]: [[1.0, 1.1, 0.9, 2.0, 0.0], [-5.0, -4.2], [100.0, 99.0], [10000.0]]
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
標(biāo)簽:湖州 呼和浩特 中山 江蘇 股票 衡水 畢節(jié) 駐馬店
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《解決使用pandas聚類時的小坑》,本文關(guān)鍵詞 解決,使用,pandas,聚類時,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。