📅  最后修改于: 2023-12-03 15:30:13.724000             🧑  作者: Mango
在 pandas
中,cut
和 qcut
是两个非常有用的函数,主要用于将连续的数值数据分割成多个离散的区间。虽然它们可以用于相似的任务,但它们之间有一些重要的区别,本文将会介绍它们之间的异同。
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
可以将一组数值数据根据分位数分割成离散的区间。例如,我们有一组工资数据:
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
的区别在于,cut
是根据自定义的范围进行切割,而 qcut
则是根据数据的分位数进行切割。具体来说,cut
可以用于任意的区间划分,而 qcut
则仅仅是根据数据的分布情况进行划分。
另外一个区别是,cut
可以使用 right=False
参数将区间设为左闭右开,而 qcut
不支持这个参数。
cut
和 qcut
都是将连续的数值数据分割成离散的区间的有用工具。cut
可以自定义切割范围,适用于任意的区间划分,而 qcut
则是根据数据的分位数进行划分,适用于将数据根据分布情况进行划分。两者都可以使用标签标记数据所在的区间,非常方便。