利用pandas庫中的get_dummies函式對類別型特徵進行啞變數處理。
get_dummies語法:
pandas.get_dummies(data,prefix=none,prefix_sep='_',dummy_na=false,columns=none,sparse=false,drop_first=false)
對類別型特徵進行啞變數處理主要解決了部分演算法模型無法處理類別性資料的問題,在一定程度上起到了擴充特徵的作用
啞變數處理前:
cdummies_data=pd.get_dummies(city_data) #啞變數處理
pandas提供了cut函式,完成連續性資料的等寬離散化。
cut基礎語法:
#pandas中的value_counts函式,幫助我們自動統計某一列不同類別出現的次數,而且自動進行排序
print("離散化後的年齡分布為:\n",agec_data.value_counts())
結果:
離散化後的年齡分布為:
(13.927, 38.333] 6
(62.667, 87.0] 2
(38.333, 62.667] 0
name: 年齡, dtype: int64
等寬法缺陷:等寬法離散化對資料分布具有較高的要求,若資料分布不均勻,那麼各類別的數目會變得非常不均勻,會嚴重損壞所建立的模型
等頻法避免了分布不均勻的問題,但可能將數值接近的兩個值分配到不同的區間以滿足每個區間對個數的要求
cut雖然不能直接實現等頻離散化,但可以通過定義函式將相同數量的記錄放進每個區間
import pandas as pd
import numpy as np
age_data=pd.dataframe()
def sameratecut(data,k):
w=data.quantile(np.arange(0,1+1.0/k,1.0/k))
data=pd.cut(data,w)
return data
#對年齡資料進行離散化
result=sameratecut(age_data.iloc[:,0],3).value_counts()
print('對年齡進行等頻離散化後各類別數目分布狀況為:\n',result)
注意:進行離散化處理的資料必須是一維,否則會報錯。結果:
對年齡進行等頻離散化後各類別數目分布狀況為:
(30.333, 87.0] 3
(18.333, 30.333] 2
(14.0, 18.333] 2
name: 年齡, dtype: int64
一維聚類步驟:首先將連續性資料用聚類演算法(k-means演算法等)進行聚類,然後處理聚類得到的簇,為合併到乙個簇的連續型資料做同一種標記
聚類分析的離散化方法需要使用者指定簇的個數,用來決定產生的區間數
理解即可:
import pandas as pd
def kmeancut(data,k):
from sklearn.cluster import kmeans
#建立模型 n_jobs
kmodel=kmeans(n_clusters=k,n_jobs=4)
kmodel.fit(data.reshape((len(data),1)))#訓練模型
#輸出聚類中心並排序
c=pd.dataframe(kmodel.cluster_centers_).sort_values(0)
w=pd.rolling_mean(c,2).iloc[1:]#相鄰兩項求中點,作為邊界點
w=[0]+list(w[0])+[data.max()] #把首末邊界點加上
data=pd.cut(data,w)
return data
python重新命名列名 Pandas對列進行重新命名
在處理dataframe資料的時候,經常需要對列進行重新命名,我們現在看一下到底如何進行重新命名操作。首先生成乙個dataframe。import pandas as pd province pd.dataframe province idcode省份 01a廣東 12b廣西 23c福建 34d福建...
python初探 pandas使用
pandas 是基於numpy 的一種工具,該工具是為了解決資料分析任務而建立的。pandas 納入了大量庫和一些標準的資料模型,提供了高效地操作大型資料集所需的工具。pandas提供了大量能使我們快速便捷地處理資料的函式和方法,pandas為時間序列分析提供了很好的支援。series 和 data...
Python使用Pandas讀寫EXCEL檔案教程
教程 開始之前,我們需要首先了解一下什麼是excel,這有助於理解之後教程中的內容。什麼是excel excel 的用途 當然,excel常常被用於辦公,製作各種各樣的報表。為什麼要選擇excel 雖然市面上有很多電子 工具可以選擇,但是excel以其豐富的功能被大家所接受,並且由於眾多企業使用者都...