Pandas cut 函式
Suraj Joshi
2023年1月30日
-
pandas.cut()
函式語法 -
示例:使用
pandas.cut()
方法將 DataFrame 的列值分佈到 bin 中去 -
示例:使用
pandas.cut()
方法將數值分佈到不同的區域,併為每個區域分配一個標籤 -
示例:在
pandas.cut()
方法中設定retbins=True
來返回 bin 值
pandas.cut()
函式可以將給定的資料分佈到範圍內,範圍也可稱為 bins
。
在本文中我們將使用下面的 DataFrame。
import pandas as pd
df = pd.DataFrame(
{
"Name": ["Anish", "Birat", "Chirag", "Kabin", "Sachin"],
"Age": [23, 34, 38, 45, 27],
"Score": [316, 322, 332, 330, 325],
}
)
print(df)
輸出:
Name Age Score
0 Anish 23 316
1 Birat 34 322
2 Chirag 38 332
3 Kabin 45 330
4 Sachin 27 325
pandas.cut()
函式語法
pandas.cut(
x,
bins,
right=True,
labels=None,
retbins=False,
precision=3,
include_lowest=False,
duplicates="raise",
ordered=True,
)
引數
x |
給定陣列 |
bins |
資料分類的標準 |
right |
布林型。如果為 True,也包括 bins 最右邊的數字。 |
labels |
陣列。bins 的標籤。 |
retbins |
布林型。如果是 True ,則返回 bins 。 |
precision |
整數型。儲存和展示 bins 的精度 |
ordered |
布林型。如果為 True ,則將對結果的標籤進行排序。 |
返回值
它返回一個陣列,陣列代表了 x
中每個元素的 bin
值,如果我們設定了 retbins=True
,它也會返回 bins
。
示例:使用 pandas.cut()
方法將 DataFrame 的列值分佈到 bin 中去
import pandas as pd
df = pd.DataFrame(
{
"Name": ["Anish", "Birat", "Chirag", "Kabin", "Sachin"],
"Age": [23, 34, 38, 45, 27],
"Score": [316, 322, 332, 330, 325],
}
)
print("Initial DataFrame:")
print(df, "\n")
df["Age-Range"] = pd.cut(x=df["Age"], bins=[20, 30, 40, 50])
print("DataFrame with Age-Range:")
print(df)
輸出:
Initial DataFrame:
Name Age Score
0 Anish 23 316
1 Birat 34 322
2 Chirag 38 332
3 Kabin 45 330
4 Sachin 27 325
DataFrame with Age-Range:
Name Age Score Age-Range
0 Anish 23 316 (20, 30]
1 Birat 34 322 (30, 40]
2 Chirag 38 332 (30, 40]
3 Kabin 45 330 (40, 50]
4 Sachin 27 325 (20, 30]
它將 DataFrame df
中 Age
列的值劃分為使用 pandas.cut()
方法中 bins
引數值計算的年齡範圍,最後顯示 DataFrame 中每行的 Age-Range
值。
這裡,(20,30]
表示從 20 到 30 的值,不包括 20,包括 30。
示例:使用 pandas.cut()
方法將數值分佈到不同的區域,併為每個區域分配一個標籤
預設情況下,分配給每個 bin 的標籤將是 bin 的範圍。我們可以使用 pandas.cut()
函式中的 labels
引數來設定自定義 bin 標籤。
import pandas as pd
df = pd.DataFrame(
{
"Name": ["Anish", "Birat", "Chirag", "Kabin", "Sachin"],
"Age": [23, 34, 38, 45, 27],
"Score": [316, 322, 332, 330, 325],
}
)
print("Initial DataFrame:")
print(df, "\n")
bin_labels = labels = ["21 to 30", "31 to 40", "41 to 50"]
df["Age-Range"] = pd.cut(x=df["Age"], bins=[20, 30, 40, 50], labels=bin_labels)
print("DataFrame with Age-Range:")
print(df)
輸出:
Initial DataFrame:
Name Age Score
0 Anish 23 316
1 Birat 34 322
2 Chirag 38 332
3 Kabin 45 330
4 Sachin 27 325
DataFrame with Age-Range:
Name Age Score Age-Range
0 Anish 23 316 21 to 30
1 Birat 34 322 31 to 40
2 Chirag 38 332 31 to 40
3 Kabin 45 330 41 to 50
4 Sachin 27 325 21 to 30
它將 Age
列的每個值分配到不同的 bin 中,併為每個 bin 新增一個標籤。
示例:在 pandas.cut()
方法中設定 retbins=True
來返回 bin 值
import pandas as pd
df = pd.DataFrame(
{
"Name": ["Anish", "Birat", "Chirag", "Kabin", "Sachin"],
"Age": [23, 34, 38, 45, 27],
"Score": [316, 322, 332, 330, 325],
}
)
print("Initial DataFrame:")
print(df, "\n")
bin_labels = labels = ["21 to 30", "31 to 40", "41 to 50"]
df["Age-Range"], bin_values = pd.cut(
x=df["Age"], bins=[20, 30, 40, 50], labels=bin_labels, retbins=True
)
print("DataFrame with Age-Range:")
print(df, "\n")
print("The bin values are:")
print(bin_values)
輸出:
Initial DataFrame:
Name Age Score
0 Anish 23 316
1 Birat 34 322
2 Chirag 38 332
3 Kabin 45 330
4 Sachin 27 325
DataFrame with Age-Range:
Name Age Score Age-Range
0 Anish 23 316 21 to 30
1 Birat 34 322 31 to 40
2 Chirag 38 332 31 to 40
3 Kabin 45 330 41 to 50
4 Sachin 27 325 21 to 30
The bin values are:
[20 30 40 50]
它顯示帶有 Age-Range
值的 DataFrame 和 bin 值。
作者: Suraj Joshi
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn