在機械學習中,我們經常會對資料進行分箱處理的操作, 也就是 把一段連續的值切分成若干段,每一段的值看成乙個分類。這個把連續值轉換成離散值的過程,我們叫做分箱處理。
比如,把年齡按15歲劃分成一組,0-15歲叫做少年,16-30歲叫做青年,31-45歲叫做壯年。在這個過程中,我們把連續的年齡分成了三個類別,"少年","青年"和"壯年"就是各個類別的名稱,或者叫做標籤。
cut和qcut函式的基本介紹
在pandas中,cut和qcut函式都可以進行分箱處理操作。其中cut函式是按照資料的值進行分割,而qcut函式則是根據資料本身的數量來對資料進行分割。
pandas.cut(x, bins, right=true, labels=none, retbins=false, precision=3, include_lowest=false)
引數:1. x,類array物件,且必須為一維,待切割的原形式
2. bins, 整數、序列尺度、或間隔索引。如果bins是乙個整數,它定義了x寬度範圍內的等寬面元數量,但是在這種情況下,x的範圍在每個邊上被延長1%,以保證包括x的最小值或最大值。如果bin是序列,它定義了允許非均勻bin寬度的bin邊緣。在這種情況下沒有x的範圍的擴充套件。
3. right,布林值。是否是左開右閉區間
4. labels,用作結果箱的標籤。必須與結果箱相同長度。如果false,只返回整數指標面元。
5. retbins,布林值。是否返回面元
6. precision,整數。返回面元的小數點幾位
7. include_lowest,布林值。第乙個區間的左端點是否包含
返回值:
若labels為false則返回整數填充的categorical或陣列或series
若retbins為true還返回用浮點數填充的n維陣列
import pandas as pd
年份 = [1992, 1983, 1922, 1932, 1973] # 待分箱資料
箱子 = [1900, 1950, 2000] # 指定箱子的分界點
結果 = pd.cut(年份, 箱子)
print(結果)
# 結果說明:其中(1950, 2000]說明【年份】列表的第乙個值1992位於(1950, 2000]區間
print(pd.value_counts(結果)) # 對不同箱子中的數進行計數
# labels引數為false時,返回結果中用不同的整數作為箱子的指示符
結果2 = pd.cut(年份, 箱子,labels=false)
# 輸出結果中的數字對應著不同的箱子
print(結果2)
# 結果說明:其中 1 說明【年份】列表的第乙個值1992位於(1950, 2000]區間
# 其中 0 說明【年份】列表的第乙個值1922位於(1900, 1950]區間
print(pd.value_counts(result2))# 對不同箱子中的數進行計數
年份 = [1992, 1983, 1922, 1932, 1973] # 待分箱資料
箱子 = [1900, 1950, 2000] # 指定箱子的分界點
# 可以將想要指定給不同箱子的標籤傳遞給labels引數
箱子名稱 = [ '50年代前', '50年代後']
結果3 = pd.cut(年份, 箱子, labels=箱子名稱)
print(pd.value_counts(結果3))
pandas.qcut 和上面基本相同,只是q分箱需要自己設定。可以指定箱子的數量對連續資料進行等寬分箱處理(注意:所謂等寬指的是每個箱子中的資料量是相同的)
pandas.qcut(x, q, labels=none, retbins=false, precision=3, duplicates='raise')
import pandas as pd
年份 = [1992, 1983, 1922, 1932, 1973, 1999, 1993, 1995] # 待分箱資料
結果 = pd.qcut(年份,q=4) # 引數q指定所分箱子的數量
# 從輸出結果可以看到每個箱子中的資料量時相同的
print(結果)
print(pd.value_counts(結果)) # 從輸出結果可以看到每個箱子中的資料量時相同的
Pandas 10分鐘Pandas之旅 02
此類操作預設排除缺失資料 求平均值 print df.mean print 指定求平均值的軸 print df.mean 1 print 建立series物件s,以dates為索引並平移2個位置 s pd.series 1,3,5,np.nan,6,8 index dates shift 2 pri...
pandas 資料離散化
連續屬性離散化的目的是為了簡化資料結構,資料離散化技術可以用來減少給定連續屬性值的個數。離散化方法經常作為資料探勘的工具。連續屬性的離散化就是將連續屬性的值域上,將值域劃分為若干個離散的區間,最後用不同的符號或整數值代表落在每個子區間中的屬性值。離散化有很多種方法,這使用一種最簡單的方式去操作 這樣...
python資料分析之pandas(10)資料轉換
通過duplicated 函式可以找出重複的行,操作如下 frame.duplicated 判斷是否重複行 frame frame.duplicated 刪除重複行 frame.drop duplicates 刪除重複行 示例如下 frame pd.dataframe frame.duplicate...