📜  cut 和 qcut pandas 之间的区别 - Python (1)

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

Cut and qcut pandas 之间的区别

pandas 中,cutqcut 是两个非常有用的函数,主要用于将连续的数值数据分割成多个离散的区间。虽然它们可以用于相似的任务,但它们之间有一些重要的区别,本文将会介绍它们之间的异同。

cut 函数

cut 可以将一组数值数据根据自定义的范围分割成离散的区间。例如,我们有一组成绩数据:

import pandas as pd

scores = [50, 60, 70, 80, 90, 100]
labels = ['D', 'C', 'B', 'A']

score_cut = pd.cut(scores, bins=[0, 60, 70, 80, 101], labels=labels)
print(score_cut)

输出结果为:

[D, C, B, A, A, A]
Categories (4, object): [D < C < B < A]

这段代码将 scores 列表中的数据分割成 4 个区间:[0, 60), [60, 70), [70, 80), [80, 101),并用 labels 列表中的标签进行标记。score_cut 是一个 Categorical 对象,表示每个成绩所在的区间。

需要注意的是,bins 中的区间是左闭右开的,也就是说,[0, 60) 中包含了左端点的 0,但不包含右端点的 60。

qcut 函数

qcut 可以将一组数值数据根据分位数分割成离散的区间。例如,我们有一组工资数据:

salaries = [2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 10000]
labels = ['D', 'C', 'B', 'A']

salary_cut = pd.qcut(salaries, q=[0, 0.3, 0.6, 0.9, 1], labels=labels)
print(salary_cut)

输出结果为:

[D, D, C, B, A, A, A, A, A]
Categories (4, object): [D < C < B < A]

这段代码将 salaries 列表中的数据分割成 4 个区间:前 30% 的工资为 D,30%-60% 的工资为 C,60%-90% 的工资为 B,90% 以上的工资为 A,并用 labels 列表中的标签进行标记。

需要注意的是,q 中存储的是分位数,取值范围是(0,1]。

cut 和 qcut 的区别

cutqcut 的区别在于,cut 是根据自定义的范围进行切割,而 qcut 则是根据数据的分位数进行切割。具体来说,cut 可以用于任意的区间划分,而 qcut 则仅仅是根据数据的分布情况进行划分。

另外一个区别是,cut 可以使用 right=False 参数将区间设为左闭右开,而 qcut 不支持这个参数。

结论

cutqcut 都是将连续的数值数据分割成离散的区间的有用工具。cut 可以自定义切割范围,适用于任意的区间划分,而 qcut 则是根据数据的分位数进行划分,适用于将数据根据分布情况进行划分。两者都可以使用标签标记数据所在的区间,非常方便。