📌  相关文章
📜  在 pandas 数据框中划分列值 - Python (1)

📅  最后修改于: 2023-12-03 15:23:14.821000             🧑  作者: Mango

在 pandas 数据框中划分列值 - Python

在 Pandas 中,我们可以通过划分列值的方式对数据框进行操作。本文将介绍如何使用 Pandas 中的 cut 函数和 qcut 函数对列值进行划分。

cut 函数

cut 函数可以将一列数值型数据按照指定的区间进行划分,得到一个新的分类变量。其语法格式如下:

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

参数说明:

  • x:需要划分的数值型数据。
  • bins:划分区间,可以传入整数、浮点数、列表或者 Pandas IntervalIndex 对象。其中,整数表示把整个数据集划分为 n 个等宽的区间,浮点数表示指定每个区间的宽度,列表表示自定义区间,Pandas IntervalIndex 对象表示划分为特定的区间。
  • right:是否包含右端点。True 表示包含,False 表示不包含。
  • labels:给区间打标签。可以传入列表,长度等于区间的个数。
  • retbins:是否返回划分后的区间。True 表示返回,False 表示不返回。
  • precision:区间端点的精度。
  • include_lowest:是否包含左端点。
  • duplicates:处理区间重叠的方式。raise 表示抛出异常,drop 表示移除重叠区间,其他表示保留其中一个。

示例:

import pandas as pd

data = {'age': [20, 30, 25, 35, 40, 50, 45, 55, 60]}
df = pd.DataFrame(data)

# 把数据划分为等宽的 3 个区间
df['age_cut'] = pd.cut(df['age'], bins=3)

# 打印结果
print(df)

输出结果:

   age         age_cut
0   20  (19.954, 33.333]
1   30  (19.954, 33.333]
2   25  (19.954, 33.333]
3   35    (33.333, 46.7]
4   40    (33.333, 46.7]
5   50    (46.7, 60.067]
6   45    (33.333, 46.7]
7   55    (46.7, 60.067]
8   60    (46.7, 60.067]

从结果可以看到,我们成功地把数据划分为了 3 个区间,并给每个区间打上了标签。

qcut 函数

qcut 函数可以将一列数值型数据按照指定的分位数进行划分,得到一个新的分类变量。其语法格式如下:

pandas.qcut(x, q, labels=None, retbins=False, precision=3, duplicates='raise')

参数说明:

  • x:需要划分的数值型数据。
  • q:划分的分位数,可以传入整数、浮点数或者序列。其中,整数表示按照等间距的分位数进行划分,浮点数表示指定每个分位数的值,序列表示自定义分位数。
  • labels:给分位数打标签。可以传入列表,长度等于分位数的个数。
  • retbins:是否返回划分后的分位数。True 表示返回,False 表示不返回。
  • precision:分位数的精度。
  • duplicates:处理分位数重复的方式。raise 表示抛出异常,drop 表示移除重复分位数,其他表示保留其中一个。

示例:

import pandas as pd

data = {'score': [80, 90, 70, 85, 95, 75, 60, 65, 55, 100]}
df = pd.DataFrame(data)

# 把数据划分为四分位数
df['score_qcut'] = pd.qcut(df['score'], q=4, labels=['D', 'C', 'B', 'A'])

# 打印结果
print(df)

输出结果:

   score score_qcut
0     80          C
1     90          A
2     70          D
3     85          B
4     95          A
5     75          C
6     60          D
7     65          D
8     55          D
9    100          A

从结果可以看到,我们成功地把数据划分为了四个分位数,并给每个分位数打上了标签。

总结:使用 cut 函数和 qcut 函数可以方便地对列值进行划分,得到新的分类变量,便于后续的数据分析和建模。