Python中pandas的qcut函式的用法

2021-09-11 02:53:38 字數 1729 閱讀 3849

在《利用python進行資料分析》這本書的第七章介紹了pandas的qcut函式的用法。原書介紹qcut函式是乙個與分箱密切相關的函式,它基於樣本分位數進行分箱,可以通過qcut獲得等長的箱:

data = np.random.randn(1000)#data服從正態分佈

cats = pd.qcut(data, 4)#將data均勻分成四份

cats

out: [(0.657, 3.349], (-0.722, -0.0358], (-3.016, -0.722], (-3.016, -0.722], (-3.016, -0.722], ..., (-0.722, -0.0358], (-0.722, -0.0358], (-0.722, -0.0358], (-0.0358, 0.657], (-0.0358, 0.657]]

length: 1000

categories (4, interval[float64]): [(-3.016, -0.722] < (-0.722, -0.0358] < (-0.0358, 0.657] < (0.657, 3.349]]

pd.value_counts(cats)#使用qcut獲得了等長的箱

out: (0.657, 3.349] 250

(-0.0358, 0.657] 250

(-0.722, -0.0358] 250

(-3.016, -0.722] 250

dtype: int64

data裡面的元素服從正態分佈,長度為1000,qcut將data按照每250的資料量將data分箱,分出4個等長的箱

我們也可以傳入自定義的分位數(0和1之間的資料)

pd.qcut(data, [0, 0.1, 0.5, 0.9, 1.])

out: [(1.258, 3.349], (-1.392, -0.0358], (-1.392, -0.0358], (-1.392, -0.0358], (-1.392, -0.0358], ..., (-1.392, -0.0358], (-1.392, -0.0358], (-1.392, -0.0358], (-0.0358, 1.258], (-0.0358, 1.258]]

length: 1000

categories (4, interval[float64]): [(-3.016, -1.392] < (-1.392, -0.0358] < (-0.0358, 1.258] < (1.258, 3.349]]

catss = pd.qcut(data, [0, 0.1, 0.5, 0.9, 1.])

pd.value_counts(catss)

out: (-0.0358, 1.258] 400

(-1.392, -0.0358] 400

(1.258, 3.349] 100

(-3.016, -1.392] 100

dtype: int64

當我對qcut函式傳入了[0, 0.1, 0.5, 0.9, 1.]自定義分位數,它的原理是將(0, 0.1]的區間長度作為頻率,求得第乙個箱的資料量的大小,即1000*0.1 = 100,所以分箱結果的第乙個區間(-3.016, -1.392]的數量為100,依次類推將1000個資料分成四個區間

另外qcut函式的第乙個區間的左側是樣本中最小值,最後乙個區間的右側是樣本資料的最大值,由此根據分位數來進行分箱的

Python中的Pandas模組

目錄 pandas series 序列的建立 序列的讀取 dataframe dataframe的建立 dataframe資料的讀取 panel panel的建立 pandas python data analysis library 是基於numpy 的一種工具,該工具是為了解決資料分析任務而建立...

python中pandas的幾種合併

import pandas as pd import numpy as np 1 上下合併 df1 pd.dataframe np.ones 2,4 0,columns a b c d df2 pd.dataframe np.ones 2,4 1,columns a b c d 兩行四列,每一列分別...

python中pandas常用方法

coding utf 8 import numpy as np import pandas as pd datas pd.date range 20140729 periods 6 先建立乙個時間索引,所謂的索引 index 就是每一行資料的id,可以標識每一行的唯一值 print datas da...