Pandas qcut和cut有何不同

Pandas qcut和cut有何不同

在本文中,我们将介绍Pandas的两个函数——qcut和cut,并讨论它们之间的不同之处。

阅读更多:Pandas 教程

pandas.cut和pandas.qcut的基本概念

pandas.cut和pandas.qcut两个函数都是用于将连续数据分组成离散数据,经常用于数据分析和数据挖掘中。

pandas.cut是基于值的分割,它将数据分成一些连续的区间。我们可以指定区间的个数或其它划分方式。例如,如果我们要将一个100分的分数划分成5组,则可以将每组的范围设置为0-20分,20-40分,40-60分,60-80分和80-100分。

pandas.qcut是基于频率的分割,它将数据分成大小接近的组。我们可以选择一个区间,然后将数据切割成等频率的组。例如,如果我们要将100分的分数分成5组,则可以根据每组中的观测值数来切割分区。

cut()函数用法

pandas.cut以给定的bins数组分割数字数据。bins数组指定分组的边界。每个分组的边界被指定为左侧闭合(包括)和右侧开放(不包括)数字值。

以下是一个示例:

import pandas as pd

df = pd.DataFrame({'ages': [5, 15, 25, 35, 45, 55, 65, 75, 85]})

# cut the ages into 3 groups
df['age_group'] = pd.cut(df.ages, bins=3)

print(df)
Python

运行结果:

   ages      age_group
0     5  (4.96, 31.0]
1    15  (4.96, 31.0]
2    25  (4.96, 31.0]
3    35   (31.0, 56.0]
4    45   (31.0, 56.0]
5    55   (31.0, 56.0]
6    65   (56.0, 81.0]
7    75   (56.0, 81.0]
8    85   (56.0, 81.0]
Python

上述演示将年龄分成了三个组,每个年龄组的范围都不同。在年龄组中,可以看到最年轻的人是在第一个年龄组(5岁),最年长的人在第三个年龄组(85岁)。

qcut()函数用法

pandas.qcut按各值出现频率的百分比计算等大小的桶。从而“平均”分配数据集,而不是基于每个数据点的值均等地分割数据。其参数和cut()函数的参数基本相同。

以下是一个示例:

import pandas as pd

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

# divide the weights into 3 groups with approximately the same frequency
df['weight_group'] = pd.qcut(df.weight, q=3)

print(df)
Python

运行结果:

   weight      weight_group
0      60  (59.999, 70.000]
1      65  (59.999, 70.000]
2      70  (59.999, 70.000]
3      75     (70.0, 80.0]
4      80     (70.0, 80.0]
5      85     (80.0, 95.0]
6      90     (80.0, 95.0]
7      95     (80.0, 95.0]
Python

上述示例将体重分为3组,并生成具有相同频率的组。可以看到,最轻的体重在第一组中,最重的体重在第三组中。由于每个组中的观察值数相等,因此第一组中有三个观测值(60、65和70),第二组中有两个观测值(75和80),第三组中有三个观测值(85、90和95)。

cut()函数和qcut()函数的不同之处

pandas.cut和pandas.qcut两个函数存在一些不同之处。首先,它们的参数不同。pandas.cut基于值的分割,需要指定bin的数量或bin的范围。而pandas.qcut基于频率的分割,需要指定分位数数量。

其次,它们的结果不同。pandas.cut返回n个bin,每个bin的大小相等。而pandas.qcut返回n个bin,每个bin中包含的观测值数相等。

综上所述,pandas.cut和pandas.qcut都是将连续数据分组成离散数据的常用函数。它们各有异同,需要根据具体情况选择使用哪一个函数。

总结

本文介绍了Pandas的两个分组函数——pandas.cut和pandas.qcut。我们讨论了它们的基本概念、用法和不同之处。pandas.cut是基于值的分割,pandas.qcut是基于频率的分割。pandas.cut将数据分成一些连续的区间,pandas.qcut将数据分成大小相等的组。需要根据具体的应用场景选择使用哪个函数。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册