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

Pandas對(duì)數(shù)值進(jìn)行分箱操作的4種方法總結(jié)

 更新時(shí)間:2022年05月30日 11:24:27   作者:Python數(shù)據(jù)分析實(shí)例  
分箱是一種常見的數(shù)據(jù)預(yù)處理技術(shù)有時(shí)也被稱為分桶或離散化,他可用于將連續(xù)數(shù)據(jù)的間隔分組到“箱”或“桶”中。本文將使用python?Pandas庫(kù)對(duì)數(shù)值進(jìn)行分箱的4種方法,感興趣的可以了解一下

前言

使用 Pandas 的between 、cut、qcut 和 value_count離散化數(shù)值變量。

分箱是一種常見的數(shù)據(jù)預(yù)處理技術(shù)有時(shí)也被稱為分桶或離散化,他可用于將連續(xù)數(shù)據(jù)的間隔分組到“箱”或“桶”中。在本文中,我們將討論使用 python Pandas 庫(kù)對(duì)數(shù)值進(jìn)行分箱的 4 種方法。

我們創(chuàng)建以下合成數(shù)據(jù)用于演示

import?pandas?as?pd?#?version?1.3.5?
import?numpy?as?np?
def?create_df():?
?df?=?pd.DataFrame({'score':?np.random.randint(0,101,1000)})?
?return?df?
?
create_df()?
df.head()

數(shù)據(jù)包括 1000 名學(xué)生的 0 到 100 分的考試分?jǐn)?shù)。而這次的任務(wù)是將數(shù)字分?jǐn)?shù)分為值“A”、“B”和“C”的等級(jí),其中“A”是最好的等級(jí),“C”是最差的等級(jí)。

1、between & loc

Pandas .between 方法返回一個(gè)包含 True 的布爾向量,用來(lái)對(duì)應(yīng)的 Series 元素位于邊界值 left 和 right 之間。

參數(shù)有下面三個(gè):

  • left:左邊界
  • right:右邊界
  • inclusive:要包括哪個(gè)邊界??山邮艿闹禐?{“both”、“neither”、“left”、“right”}。

根據(jù)以下間隔規(guī)則將學(xué)生的分?jǐn)?shù)分為等級(jí):

  • A: (80, 100]
  • B: (50, 80]
  • C: [0, 50]

其中方括號(hào) [ 和圓括號(hào) ) 分別表示邊界值是包含的和不包含的。我們需要確定哪個(gè)分?jǐn)?shù)在感興趣的區(qū)間之間,并為其分配相應(yīng)的等級(jí)值。注意看下面的不同的參數(shù)表示是否包含邊界

df.loc[df['score'].between(0,?50,?'both'),?'grade']?=?'C'?
df.loc[df['score'].between(50,?80,?'right'),?'grade']?=?'B'?
df.loc[df['score'].between(80,?100,?'right'),?'grade']?=?'A'

以下是每個(gè)分?jǐn)?shù)區(qū)間的人數(shù):

df.grade.value_counts()

C    488
B    310
A    202
Name: grade, dtype: int64

此方法需要為每個(gè) bin 編寫處理的代碼,因此它僅適用于 bin 很少的情況。

2、cut

可以使用 cut將值分類為離散的間隔。此函數(shù)對(duì)于從連續(xù)變量到分類變量也很有用。

cut的參數(shù)如下:

  • x:要分箱的數(shù)組。必須是一維的。
  • bins:標(biāo)量序列:定義允許非均勻?qū)挾鹊?bin 邊緣。
  • labels:指定返回的 bin 的標(biāo)簽。必須與上面的 bins 參數(shù)長(zhǎng)度相同。
  • include_lowest: (bool) 第一個(gè)區(qū)間是否應(yīng)該是左包含的。
bins?=?[0,?50,?80,?100]?
labels?=?['C',?'B',?'A']?
df['grade']?=?pd.cut(x?=?df['score'],?
??????????????????????bins?=?bins,?
??????????????????????labels?=?labels,?
??????????????????????include_lowest?=?True)

這樣就創(chuàng)建一個(gè)包含 bin 邊界值的 bins 列表和一個(gè)包含相應(yīng) bin 標(biāo)簽的標(biāo)簽列表。

查看每個(gè)區(qū)段的人數(shù)

df.grade.value_counts()

C    488
B    310
A    202
Name: grade, dtype: int64

結(jié)果與上面示例相同。

3、qcut

qcut可以根據(jù)排名或基于樣本分位數(shù)將變量離散為大小相等的桶[3]。

在前面的示例中,我們?yōu)槊總€(gè)級(jí)別定義了分?jǐn)?shù)間隔,這回使每個(gè)級(jí)別的學(xué)生數(shù)量不均勻。在下面的示例中,我們將嘗試將學(xué)生分類為 3 個(gè)具有相等(大約)數(shù)量的分?jǐn)?shù)等級(jí)。示例中有 1000 名學(xué)生,因此每個(gè)分箱應(yīng)該有大約 333 名學(xué)生。

qcut參數(shù):

  • x:要分箱的輸入數(shù)組。必須是一維的。
  • q:分位數(shù)。10 表示十分位數(shù),4 表示四分位數(shù)等。也可以是交替排列的分位數(shù),例如[0, .25, .5, .75, 1.] 四分位數(shù)。
  • labels:指定 bin 的標(biāo)簽。必須與生成的 bin 長(zhǎng)度相同。
  • retbins: (bool) 是否返回 (bins, labels)。
df['grade'],?cut_bin?=?pd.qcut(df['score'],?
??????????????????????????q?=?3,?
??????????????????????????labels?=?['C',?'B',?'A'],?
??????????????????????????retbins?=?True)?
df.head()

print?(cut_bin)?
>>?[??0.??36.??68.?100.]

分?jǐn)?shù)間隔如下:

  • C:[0, 36]
  • B:(36, 68]
  • A:(68, 100]

使用 .value_counts() 檢查每個(gè)等級(jí)有多少學(xué)生。理想情況下,每個(gè)箱應(yīng)該有大約 333 名學(xué)生。

df.grade.value_counts()

C    340
A    331
B    329
Name: grade, dtype: int64

4、value_counts

雖然 pandas .value_counts 通常用于計(jì)算系列中唯一值的數(shù)量,但它也可用于使用 bins 參數(shù)將值分組到半開箱中。

df['score'].value_counts(bins?=?3,?sort?=?False)

默認(rèn)情況下, .value_counts 按值的降序?qū)Ψ祷氐南盗羞M(jìn)行排序。將 sort 設(shè)置為 False 以按其索引的升序?qū)ο盗羞M(jìn)行排序。

(-0.101, 33.333]    310
(33.333, 66.667]    340
(66.667, 100.0]     350
Name: score, dtype: int64

series 索引是指每個(gè) bin 的區(qū)間范圍,其中方括號(hào) [ 和圓括號(hào) ) 分別表示邊界值是包含的和不包含的。返回series 的值表示每個(gè) bin 中有多少條記錄。

與 .qcut 不同,每個(gè) bin 中的記錄數(shù)不一定相同(大約)。.value_counts 不會(huì)將相同數(shù)量的記錄分配到相同的類別中,而是根據(jù)最高和最低分?jǐn)?shù)將分?jǐn)?shù)范圍分成 3 個(gè)相等的部分。分?jǐn)?shù)的最小值為 0,最大值為 100,因此這 3 個(gè)部分中的每一個(gè)都大約在 33.33 范圍內(nèi)。這也解釋了為什么 bin 的邊界是 33.33 的倍數(shù)。

我們還可以通過傳入邊界列表來(lái)定義 bin 邊界。

df['score'].value_counts(bins?=?[0,50,80,100],?sort?=?False)

(-0.001, 50.0]    488
(50.0, 80.0]      310
(80.0, 100.0]     202
Name: score, dtype: int64

這給了我們與示例 1 和 2 相同的結(jié)果。

以上就是Pandas對(duì)數(shù)值進(jìn)行分箱操作的4種方法總結(jié)的詳細(xì)內(nèi)容,更多關(guān)于Pandas數(shù)值分箱的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python?aeon庫(kù)進(jìn)行時(shí)間序列算法預(yù)測(cè)分類實(shí)例探索

    python?aeon庫(kù)進(jìn)行時(shí)間序列算法預(yù)測(cè)分類實(shí)例探索

    這篇文章主要介紹了python?aeon庫(kù)進(jìn)行時(shí)間序列算法預(yù)測(cè)分類實(shí)例探索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-02-02
  • 詳解如何減少python內(nèi)存的消耗

    詳解如何減少python內(nèi)存的消耗

    這篇文章主要介紹了詳解如何減少python內(nèi)存的消耗,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • python實(shí)現(xiàn)倒計(jì)時(shí)的示例

    python實(shí)現(xiàn)倒計(jì)時(shí)的示例

    這篇文章主要介紹了python實(shí)現(xiàn)的倒計(jì)時(shí)的示例,需要的朋友可以參考下
    2014-02-02
  • 基于django micro搭建網(wǎng)站實(shí)現(xiàn)加水印功能

    基于django micro搭建網(wǎng)站實(shí)現(xiàn)加水印功能

    這篇文章主要介紹了基于django micro搭建網(wǎng)站實(shí)現(xiàn)加水印功能,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Python Socket編程入門教程

    Python Socket編程入門教程

    這篇文章主要介紹了Python Socket編程入門教程,本文包含一個(gè)客戶端Socket編程實(shí)現(xiàn)和一個(gè)服務(wù)器端Socket編程例子,需要的朋友可以參考下
    2014-07-07
  • Python的pycurl包用法簡(jiǎn)介

    Python的pycurl包用法簡(jiǎn)介

    這篇文章主要介紹了Python的pycurl包用法簡(jiǎn)介,文中羅列了其下模塊中的一些常用方法,需要的朋友可以參考下
    2015-11-11
  • Python處理PPT文件的實(shí)用知識(shí)點(diǎn)總結(jié)

    Python處理PPT文件的實(shí)用知識(shí)點(diǎn)總結(jié)

    python是一門很強(qiáng)大的語(yǔ)言,因?yàn)橛兄S富的第三方庫(kù),所以可以說Python是無(wú)所不能的,下面這篇文章主要給大家介紹了關(guān)于用Python提取PPT中圖片的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • Python?Pytorch學(xué)習(xí)之圖像檢索實(shí)踐

    Python?Pytorch學(xué)習(xí)之圖像檢索實(shí)踐

    隨著電子商務(wù)和在線網(wǎng)站的出現(xiàn),圖像檢索在我們的日常生活中的應(yīng)用一直在增加。圖像檢索的基本本質(zhì)是根據(jù)查詢圖像的特征從集合或數(shù)據(jù)庫(kù)中查找圖像。本文將利用Pytorch實(shí)現(xiàn)圖像檢索,需要的可以參考一下
    2022-04-04
  • Pytorch 卷積中的 Input Shape用法

    Pytorch 卷積中的 Input Shape用法

    這篇文章主要介紹了Pytorch 卷積中的 Input Shape用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2020-06-06
  • python3中bytes和string之間的互相轉(zhuǎn)換

    python3中bytes和string之間的互相轉(zhuǎn)換

    這篇文章主要介紹了python3中bytes和string之間的互相轉(zhuǎn)換,文中給出了詳細(xì)的介紹和示例代碼,相信對(duì)大家具有一定的參考價(jià)值,有需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-02-02

最新評(píng)論