Pandas cut 函数

Suraj Joshi 2023年1月30日 2021年2月28日
  1. pandas.cut() 函数语法
  2. 示例:使用 pandas.cut() 方法将 DataFrame 的列值分布到 bin 中去
  3. 示例:使用 pandas.cut() 方法将数值分布到不同的区域,并为每个区域分配一个标签
  4. 示例:在 pandas.cut() 方法中设置 retbins=True 来返回 bin 值
Pandas cut 函数

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 dfAge 列的值划分为使用 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 值。

Author: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

相关文章 - Pandas DataFrame