中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

pandas.cut怎么用

發布時間:2021-08-11 15:34:51 來源:億速云 閱讀:130 作者:小新 欄目:開發技術

這篇文章主要為大家展示了“pandas.cut怎么用”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“pandas.cut怎么用”這篇文章吧。

用途

pandas.cut用來把一組數據分割成離散的區間。比如有一組年齡數據,可以使用pandas.cut將年齡數據分割成不同的年齡段并打上標簽。

原型

pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False, duplicates='raise') #0.23.4

參數含義

x:被切分的類數組(array-like)數據,必須是1維的(不能用DataFrame);

bins:bins是被切割后的區間(或者叫“桶”、“箱”、“面元”),有3中形式:一個int型的標量、標量序列(數組)或者pandas.IntervalIndex 。

一個int型的標量

 當bins為一個int型的標量時,代表將x平分成bins份。x的范圍在每側擴展0.1%,以包括x的最大值和最小值。

標量序列

 標量序列定義了被分割后每一個bin的區間邊緣,此時x沒有擴展。

pandas.IntervalIndex

定義要使用的精確區間。

right:bool型參數,默認為True,表示是否包含區間右部。比如如果bins=[1,2,3],right=True,則區間為(1,2],(2,3];right=False,則區間為(1,2),(2,3)。

labels:給分割后的bins打標簽,比如把年齡x分割成年齡段bins后,可以給年齡段打上諸如青年、中年的標簽。labels的長度必須和劃分后的區間長度相等,比如bins=[1,2,3],劃分后有2個區間(1,2],(2,3],則labels的長度必須為2。如果指定

labels=False,則返回x中的數據在第幾個bin中(從0開始)。

retbins:bool型的參數,表示是否將分割后的bins返回,當bins為一個int型的標量時比較有用,這樣可以得到劃分后的區間,默認為False。

precision:保留區間小數點的位數,默認為3.

include_lowest:bool型的參數,表示區間的左邊是開還是閉的,默認為false,也就是不包含區間左部(閉)。

duplicates:是否允許重復區間。有兩種選擇:raise:不允許,drop:允許。

返回值

out:一個pandas.Categorical, Series或者ndarray類型的值,代表分區后x中的每個值在哪個bin(區間)中,如果指定了labels,則返回對應的label。

bins:分隔后的區間,當指定retbins為True時返回。

例子

這里拿給年齡分組當做例子。

import numpy as np
import pandas as pd

ages = np.array([1,5,10,40,36,12,58,62,77,89,100,18,20,25,30,32]) #年齡數據

將ages平分成5個區間

ages = np.array([1,5,10,40,36,12,58,62,77,89,100,18,20,25,30,32]) 
pd.cut(ages, 5)

輸出:

[(0.901, 20.8], (0.901, 20.8], (0.901, 20.8], (20.8, 40.6], (20.8, 40.6], ..., (0.901, 20.8], (0.901, 20.8], (20.8, 40.6], (20.8, 40.6], (20.8, 40.6]]
Length: 16
Categories (5, interval[float64]): [(0.901, 20.8] < (20.8, 40.6] < (40.6, 60.4] < (60.4, 80.2] < (80.2, 100.0]]

可以看到ages被平分成5個區間,且區間兩邊都有擴展以包含最大值和最小值。

將ages平分成5個區間并指定labels

ages = np.array([1,5,10,40,36,12,58,62,77,89,100,18,20,25,30,32]) #年齡數據
pd.cut(ages, 5, labels=[u"嬰兒",u"青年",u"中年",u"壯年",u"老年"])

輸出:

[嬰兒, 嬰兒, 嬰兒, 青年, 青年, ..., 嬰兒, 嬰兒, 青年, 青年, 青年]
Length: 16
Categories (5, object): [嬰兒 < 青年 < 中年 < 壯年 < 老年]

給ages指定區間進行分割

ages = np.array([1,5,10,40,36,12,58,62,77,89,100,18,20,25,30,32]) #年齡數據
pd.cut(ages, [0,5,20,30,50,100], labels=[u"嬰兒",u"青年",u"中年",u"壯年",u"老年"])

輸出:

[嬰兒, 嬰兒, 青年, 壯年, 壯年, ..., 青年, 青年, 中年, 中年, 壯年]
Length: 16
Categories (5, object): [嬰兒 < 青年 < 中年 < 壯年 < 老年]

這里不再平分ages,而是將ages分為了5個區間(0, 5],(5, 20],(20, 30],(30,50],(50,100].

返回分割后的bins

令retbins=True即可

ages = np.array([1,5,10,40,36,12,58,62,77,89,100,18,20,25,30,32]) #年齡數據
pd.cut(ages, [0,5,20,30,50,100], labels=[u"嬰兒",u"青年",u"中年",u"壯年",u"老年"],retbins=True)

輸出:

([嬰兒, 嬰兒, 青年, 壯年, 壯年, ..., 青年, 青年, 中年, 中年, 壯年]
 Length: 16
 Categories (5, object): [嬰兒 < 青年 < 中年 < 壯年 < 老年],
 array([  0,   5,  20,  30,  50, 100]))

只返回x中的數據在哪個bin

令labels=False即可

ages = np.array([1,5,10,40,36,12,58,62,77,89,100,18,20,25,30,32]) #年齡數據
pd.cut(ages, [0,5,20,30,50,100], labels=False)

輸出:

array([0, 0, 1, 3, 3, 1, 4, 4, 4, 4, 4, 1, 1, 2, 2, 3], dtype=int64)

第一個0表示1在第0個bin中。

以上是“pandas.cut怎么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節
推薦閱讀:
  1. 怎么用vuex
  2. 怎么用redis

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

石柱| 大足县| 华阴市| 广安市| 定西市| 洛川县| 昌乐县| 伊川县| 体育| 高陵县| 金乡县| 普陀区| 商城县| 兴安盟| 崇义县| 清新县| 武乡县| 绵阳市| 商南县| 和龙市| 成安县| 祁门县| 日土县| 榆社县| 桐庐县| 武陟县| 武山县| 宁强县| 石楼县| 阿图什市| 呼和浩特市| 延川县| 怀安县| 都安| 册亨县| 陇南市| 思茅市| 中江县| 余江县| 和龙市| 天水市|