如何使用 pandas 的cut函数

如何使用 pandas 的cut函数

参考:pandas cut bin

在数据分析中,我们经常需要将连续的数值数据分组到不同的区间中,以便于进行更细致的分析。Pandas 提供了一个非常有用的函数 cut,它可以帮助我们将连续的数值数据分割成用户定义的区间。本文将详细介绍如何使用 pandas 的 cut 函数,并提供多个示例代码来展示其用法。

1. pandas cut 函数简介

pandas.cut 函数可以将数值型数据分割成“箱子”或者说“区间”,这些区间可以是用户自定义的。这个功能在数据分析中非常有用,比如在进行年龄段分析、收入水平分析等场景中,我们通常需要将一个连续的数值分割成几个区间来进行分析。

函数的基本语法如下:

pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False, duplicates='raise')
  • x:需要被分割的类数组数据。
  • bins:定义区间的边界值或者是区间的数量。
  • right:布尔值,表示区间的右端是否闭合。
  • labels:用于标记返回的区间的标签。
  • retbins:布尔值,如果为 True,则返回区间的边界。
  • precision:区间边界的小数精度。
  • include_lowest:布尔值,如果为 True,第一个区间的左端将被包含。
  • duplicates:处理重复边界的策略。

2. 基本用法示例

示例 1:基本分割

import pandas as pd

data = pd.Series([1, 2, 3, 4, 5, 6, 7, 8, 9])
bins = [0, 3, 6, 9]
categories = pd.cut(data, bins)
print(categories)

Output:

如何使用 pandas 的cut函数

示例 2:指定区间闭合方向

import pandas as pd

data = pd.Series([1, 2, 3, 4, 5, 6, 7, 8, 9])
bins = [0, 3, 6, 9]
categories = pd.cut(data, bins, right=False)
print(categories)

Output:

如何使用 pandas 的cut函数

示例 3:添加标签

import pandas as pd

data = pd.Series([1, 2, 3, 4, 5, 6, 7, 8, 9])
bins = [0, 3, 6, 9]
labels = ['Low', 'Medium', 'High']
categories = pd.cut(data, bins, labels=labels)
print(categories)

Output:

如何使用 pandas 的cut函数

示例 4:返回区间边界

import pandas as pd

data = pd.Series([1, 2, 3, 4, 5, 6, 7, 8, 9])
bins = [0, 3, 6, 9]
categories, returned_bins = pd.cut(data, bins, retbins=True)
print(returned_bins)

Output:

如何使用 pandas 的cut函数

示例 5:包含最低值

import pandas as pd

data = pd.Series([1, 2, 3, 4, 5, 6, 7, 8, 9])
bins = [1, 3, 6, 9]
categories = pd.cut(data, bins, include_lowest=True)
print(categories)

Output:

如何使用 pandas 的cut函数

3. 使用自动计算的区间数量

有时候我们可能不想自己指定区间的边界,而是希望 Pandas 能根据数据自动计算出合适的区间数量。这可以通过将 bins 参数设置为一个整数来实现。

示例 6:自动计算区间数量

import pandas as pd

data = pd.Series([10, 20, 30, 40, 50, 60, 70, 80, 90, 100])
categories = pd.cut(data, bins=3)
print(categories)

Output:

如何使用 pandas 的cut函数

示例 7:指定区间数量并添加标签

import pandas as pd

data = pd.Series([10, 20, 30, 40, 50, 60, 70, 80, 90, 100])
labels = ['Low', 'Medium', 'High']
categories = pd.cut(data, bins=3, labels=labels)
print(categories)

Output:

如何使用 pandas 的cut函数

4. 处理重复边界

在使用 cut 函数时,如果区间边界有重复,Pandas 默认会抛出一个错误。我们可以通过 duplicates 参数来修改这种行为。

示例 8:处理重复边界

import pandas as pd

data = pd.Series([1, 2, 3, 4, 5, 6, 7, 8, 9])
bins = [0, 3, 3, 6, 9]  # 注意这里有重复的边界3
categories = pd.cut(data, bins, duplicates='drop')
print(categories)

Output:

如何使用 pandas 的cut函数

5. 使用 cut 函数进行实际数据分析

在实际的数据分析项目中,我们经常需要根据某些数值特征将数据集分割成不同的组,以便进行组内分析或比较。

示例 9:根据年龄分组

import pandas as pd

data = pd.DataFrame({
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    'Age': [24, 27, 22, 32, 29]
})
bins = [20, 25, 30, 35]
labels = ['20-25', '25-30', '30-35']
data['Age Group'] = pd.cut(data['Age'], bins, labels=labels)
print(data)

Output:

如何使用 pandas 的cut函数

示例 10:分析不同收入组的消费行为

import pandas as pd

data = pd.DataFrame({
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    'Income': [3000, 4500, 5200, 6100, 2900],
    'Expenditure': [1500, 2200, 2500, 2700, 1400]
})
bins = [2000, 4000, 6000, 8000]
labels = ['Low', 'Medium', 'High']
data['Income Group'] = pd.cut(data['Income'], bins, labels=labels)
print(data)

Output:

如何使用 pandas 的cut函数

结论

Pandas 的 cut 函数是一个非常强大的工具,它可以帮助我们将连续的数值数据分割成不同的区间,这在许多数据分析场景中都非常有用。通过上面的示例,我们可以看到 cut 函数的多种用法,包括自定义区间、自动计算区间数量、处理重复边界等。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程