欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python中pd.cut()與pd.qcut()的對比及示例

 更新時間:2022年06月16日 10:32:21   作者:Ancky_W  
本文主要介紹了python中pd.cut()與pd.qcut()的對比及示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧

1、pd.cut()

用于將數(shù)據(jù)值按照值本身進行分段并排序到 bins 中。
參數(shù)包含:x, bins, right, include_lowest, labels, retbins, precision

x :被劃分的數(shù)組
bins :被劃分的區(qū)間/區(qū)間數(shù)

  • - ① 當 bins 為整數(shù)時,表示數(shù)組 x 被劃分為多少個等間距的區(qū)間;
  • - ② 當 bins 為序列時,表示數(shù)組 x 將被劃分在該指定序列中,若不在則輸出 NaN;
# x = [1,2,3,5,3,4,1], ?bins = 3
[In ] pd.cut(np.array([1,2,3,5,3,4,1]),3) ?
[Out] [(0.996, 2.333], (0.996, 2.333], (2.333, 3.667], (3.667, 5.0], (2.333, 3.667], (3.667, 5.0], (0.996, 2.333]]
? ? ? Categories (3, interval[float64]): [(0.996, 2.333] < (2.333, 3.667] < (3.667, 5.0]]

# x = [1,2,3,5,3,4,1], ?bins = [1,2,3]
[In ] pd.cut(np.array([1,2,3,5,3,4,1]),[1,2,3])
[Out] [NaN, (1.0, 2.0], (2.0, 3.0], NaN, (2.0, 3.0], NaN, NaN]
? ? ? Categories (2, interval[int64]): [(1, 2] < (2, 3]]

right :是否包含右端點,默認為 True;
include_lowest :是否包含左端點,默認為 False;

# x = [1,2,3,5,3,4,1], ?bins = [1,2,3], 默認不包含左端點 1,默認包含右端點 3
[In ] pd.cut(np.array([1,2,3,5,3,4,1]),[1,2,3])
[Out] [NaN, (1.0, 2.0], (2.0, 3.0], NaN, (2.0, 3.0], NaN, NaN]
? ? ? Categories (2, interval[int64]): [(1, 2] < (2, 3]]

# x = [1,2,3,5,3,4,1], ?bins = [1,2,3], 設(shè)置包含左端點 1,設(shè)置包含右端點 3
[In ] pd.cut(np.array([1,2,3,5,3,4,1]),[1,2,3],include_lowest=True,right=False)
[Out] [[1.0, 2.0), [2.0, 3.0), NaN, NaN, NaN, NaN, [1.0, 2.0)]
? ? ? Categories (2, interval[int64]): [[1, 2) < [2, 3)]

labels :是否用標記來替代返回的 bins,默認為 False,如需標記,標記數(shù)需與 bins 數(shù)一致,并為 labels 賦值一組列表;

# x = [1,2,3,5,3,4,1], ?bins = 3, 設(shè)置用指定標簽 ['A','B','C'] 返回序列
[In ] pd.cut(np.array([1,2,3,5,3,4,1]),3,labels=['A','B','C'])
[Out] [A, A, B, C, B, C, A]
? ? ? Categories (3, object): [A < B < C]

retbins : 是否返回間距 bins,默認為 False,僅返回 x 中每個值對應(yīng)的 bin 的列表,若 retbins = True,則返回 bin 的列表及對應(yīng)的 bins。

# x = [1,2,3,5,3,4,1],  bins = 3, 設(shè)置一并返回對應(yīng) bins 序列
[In ] pd.cut(np.array([1,2,3,5,3,4,1]),3,retbins=True)
[Out] ([(0.996, 2.333], (0.996, 2.333], (2.333, 3.667], (3.667, 5.0], (2.333, 3.667], (3.667, 5.0], (0.996, 2.333]]
      Categories (3, interval[float64]): [(0.996, 2.333] < (2.333, 3.667] < (3.667, 5.0]],
      array([0.996     , 2.33333333, 3.66666667, 5.        ]))

precision : 精度,區(qū)間邊界值保留的小數(shù)點位數(shù)

# x = [1,2,3,5,3,4,1],  bins = 3, 精度為2
[In ] pd.cut(np.array([1,2,3,5,3,4,1]),3,precision=2)
[Out] [(1.0, 2.33], (1.0, 2.33], (2.33, 3.67], (3.67, 5.0], (2.33, 3.67], (3.67, 5.0], (1.0, 2.33]]
      Categories (3, interval[float64]): [(1.0, 2.33] < (2.33, 3.67] < (3.67, 5.0]]

2、pd.qcut()

基于分位數(shù)的離散化功能。 根據(jù)等級或基于樣本分位數(shù)(或者說基于樣本值落在區(qū)間的頻率),將變量分離為相等大小的桶。

參數(shù)包含:x, q, labels, retbins, precision, duplicates

  • x、labels、retbins、precision 與 pd.cut() 中參數(shù)用法一致;
  • q : 將序列 x 劃分為 q 個區(qū)間,使落在每個區(qū)間的值的數(shù)量一致;
  • duplicates :重復(fù)值處理,默認為 duplicates = ‘raise’,表示不忽略重復(fù)值。如需忽略 x 中的重復(fù)值,可指定 duplicates = ‘drop’。

3、pd.cut() v.s. pd.qcut()

  • pd.cut() 將指定序列 x,按指定數(shù)量等間距的劃分(根據(jù)值本身而不是這些值的頻率選擇均勻分布的bins),或按照指定間距劃分
  • pd.qcut() 將指定序列 x,劃分為 q 個區(qū)間,使落在每個區(qū)間的記錄數(shù)一致
[In] ll = [1,2,3,5,3,4,1,2]
?? ? print('- - - pd.cut()示例1 - - -')
? ? ?print(pd.cut(ll, 4, precision=2).value_counts())
? ? ?print('- - - pd.cut()示例2 - - -')
? ? ?print(pd.cut(ll, [1,2,4], precision=2).value_counts())
? ? ?print('- - - pd.qcut()示例 - - -')
? ? ?print(pd.qcut(ll, 4, precision=2).value_counts())

[Out] - - - pd.cut()示例1 - - -
? ? ?(1.0, 2.0] ? ?4
? ? ?(2.0, 3.0] ? ?2
? ? ?(3.0, 4.0] ? ?1
? ? ?(4.0, 5.0] ? ?1
? ? ?dtype: int64
? ? ?- - - pd.cut()示例2 - - -
? ? ?(1, 2] ? ?2
? ? ?(2, 4] ? ?3
? ? ?dtype: int64
? ? ?- - - pd.qcut()示例 - - -
? ? ?(0.99, 1.75] ? ?2
? ? ?(1.75, 2.5] ? ? 2
? ? ?(2.5, 3.25] ? ? 2
? ? ?(3.25, 5.0] ? ? 2
? ? ?dtype: int64

到此這篇關(guān)于python中pd.cut()與pd.qcut()的對比及示例的文章就介紹到這了,更多相關(guān)python pd.cut()與pd.qcut()內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論