主頁 > 知識(shí)庫 > 解決使用pandas聚類時(shí)的小坑

解決使用pandas聚類時(shí)的小坑

熱門標(biāo)簽:佛山通用400電話申請(qǐng) 蘇州人工外呼系統(tǒng)軟件 電話外呼系統(tǒng)招商代理 廣東旅游地圖標(biāo)注 電話機(jī)器人貸款詐騙 京華圖書館地圖標(biāo)注 打印谷歌地圖標(biāo)注 淮安呼叫中心外呼系統(tǒng)如何 看懂地圖標(biāo)注方法

問題背景:

之前運(yùn)行測(cè)試好好的程序,忽然出現(xiàn)了報(bào)錯(cuò),還是merge時(shí)候的類型錯(cuò)誤,這個(gè)bug有點(diǎn)蹊蹺。

問題分析:

代碼:進(jìn)行聚類之后計(jì)算平均值與方差

tmp_df = df[['object1', 'float']].groupby(['object1']).head(20).groupby(['object1'])['float'].agg(['mean', 'sum']).reset_index()

這個(gè)輸出的就是原本的數(shù)據(jù)類型:一個(gè)object,一個(gè)float64

tmp_df = http_df[['object1', 'object2', 'float']].groupby(['object1', 'object2']).head(20).groupby(['object1', 'object2'])['float'].agg(['mean']).reset_index()

這個(gè)輸出就會(huì)修改object為float,

差別只在于一個(gè)是使用一個(gè)特征進(jìn)行聚類,一個(gè)是使用兩個(gè)特征進(jìn)行聚類

問題原因(個(gè)人猜測(cè),僅供參考):

pandas進(jìn)行聚類的時(shí)候,就算之前已經(jīng)定好各個(gè)列的類型,如果里邊沒有數(shù)據(jù)的時(shí)候,使用一列進(jìn)行聚類不會(huì)修改列的類型,但是如果同時(shí)使用兩列進(jìn)行聚類就會(huì)修改列的類型。

所以才會(huì)出現(xiàn)后面進(jìn)行merge時(shí)候,類型不同報(bào)錯(cuò)

有數(shù)據(jù)輸入的時(shí)候這個(gè)報(bào)錯(cuò)不會(huì)發(fā)生,沒有數(shù)據(jù)的時(shí)候就會(huì)發(fā)生。

補(bǔ)充:python數(shù)據(jù)處理--按照數(shù)據(jù)差值大小進(jìn)行聚類(歸類)

近來在做數(shù)據(jù)處理的工作中,遇到了數(shù)據(jù)分類的問題,利用python的各種方便庫,寫了這么個(gè)以數(shù)據(jù)差值大小進(jìn)行歸類的方法。

應(yīng)用場(chǎng)景:

有一批數(shù)據(jù)集,如list=[1,2,3,4,9,10,11,20,20,1,1.1,2.1,100],將其按照數(shù)值大小進(jìn)行歸類,即數(shù)值比較接近的歸為一類,故需要先設(shè)置一個(gè)閾值,以進(jìn)行劃分。

具體實(shí)現(xiàn)如下:

其中輸入?yún)?shù)Data_set為輸入的數(shù)據(jù)集,可以為列表、數(shù)組、Series、DataFrame。threshold為數(shù)據(jù)大小分類的門限值。

輸出class_k為數(shù)據(jù)歸類列表集合,index_list為數(shù)據(jù)歸類對(duì)應(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

測(cè)試如下:

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]]
 

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • Python基礎(chǔ)之pandas數(shù)據(jù)合并
  • python-pandas創(chuàng)建Series數(shù)據(jù)類型的操作
  • Python數(shù)據(jù)分析之pandas函數(shù)詳解
  • python基于Pandas讀寫MySQL數(shù)據(jù)庫
  • pandas讀取excel時(shí)獲取讀取進(jìn)度的實(shí)現(xiàn)
  • pandas中.loc和.iloc以及.at和.iat的區(qū)別說明
  • 淺談Pandas dataframe數(shù)據(jù)處理方法的速度比較
  • pandas 使用merge實(shí)現(xiàn)百倍加速的操作
  • 詳細(xì)介紹在pandas中創(chuàng)建category類型數(shù)據(jù)的幾種方法
  • python中pandas.read_csv()函數(shù)的深入講解
  • pandas 顛倒列順序的兩種解決方案
  • pandas調(diào)整列的順序以及添加列的實(shí)現(xiàn)
  • pandas快速處理Excel,替換Nan,轉(zhuǎn)字典的操作
  • Python基礎(chǔ)之教你怎么在M1系統(tǒng)上使用pandas

標(biāo)簽:湖州 呼和浩特 中山 江蘇 股票 衡水 畢節(jié) 駐馬店

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《解決使用pandas聚類時(shí)的小坑》,本文關(guān)鍵詞  解決,使用,pandas,聚類時(shí),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《解決使用pandas聚類時(shí)的小坑》相關(guān)的同類信息!
  • 本頁收集關(guān)于解決使用pandas聚類時(shí)的小坑的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章