浅谈pandas.cut与pandas.qcut的使用方法及区别

浅谈pandas.cut与pandas.qcut的使用方法及区别

pandas.cut

pandas.cut是用于对一列数据进行分段操作的函数。其语法形式为:

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

参数说明:

  • x:需要分段的数据
  • bins:可以是一个int型数据(代表分为几段),也可以是一个列表,代表每一段的范围
  • right:是否包含右端点,默认为True,即包含
  • labels:分段后各个段的标签
  • retbins:是否返回每一段分隔点的具体位置
  • precision:保留几位小数
  • include_lowest:是否包含最小值,若设置为True,则第一段左端点为数据的最小值,否则为最小值+epsilon
  • duplicates:处理范围重复的数据的方法。raise:直接抛出异常(默认);drop:去除;cut:将重复的位置分配到不同的区间中。

示例:

import pandas as pd

# 构造数据
data = pd.Series([23, 24, 25, 25, 26, 27, 29, 30, 32, 35, 38])

# 将数据分为3段
cut_data = pd.cut(data, bins=3)
print(cut_data)

# 指定labels以及不包含右端点
cut_data = pd.cut(data, bins=3, right=False, labels=['A', 'B', 'C'])
print(cut_data)

# 返回每一段的分隔点位置
cut_data, bins = pd.cut(data, bins=3, right=False, labels=['A', 'B', 'C'], retbins=True)
print(cut_data)
print(bins)

输出:

0      (22.977, 27.667]
1      (22.977, 27.667]
2      (22.977, 27.667]
3      (22.977, 27.667]
4      (22.977, 27.667]
5      (22.977, 27.667]
6      (27.667, 32.333]
7      (27.667, 32.333]
8      (27.667, 32.333]
9      (27.667, 32.333]
10    (32.333, 37.0033]
dtype: category
Categories (3, interval[float64]): [(22.977, 27.667] < (27.667, 32.333] < (32.333, 37.0033]]
0    A
1    A
2    A
3    A
4    A
5    A
6    B
7    B
8    B
9    B
10   C
dtype: category
Categories (3, object): ['A' < 'B' < 'C']
0    A
1    A
2    A
3    A
4    B
5    B
6    B
7    B
8    C
9    C
10   C
dtype: category
Categories (3, object): ['A' < 'B' < 'C']
[23.         26.33333333 29.66666667 35.        ]

pandas.qcut

pandas.qcut是用于将数据均分为n段的函数,每一段的样本数量大致相同。其语法形式为:

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

参数说明:

  • x:需要分段的数据
  • q:一个整数时,为分成几段。为列表时,分段的分位数位置。
  • labels:分段后的标签
  • retbins:是否返回每一段分隔点的具体位置
  • duplicates:处理范围重复的数据的方法。raise:直接抛出异常(默认);drop:去除;cut:将重复的位置分配到不同的区间中。

示例:

import pandas as pd

# 构造数据
data = pd.Series([23, 24, 25, 25, 26, 27, 29, 30, 32, 35, 38])

# 将数据分为3段
qcut_data = pd.qcut(data, 3)
print(qcut_data)

# 指定labels
qcut_data = pd.qcut(data, 3, labels=['A', 'B', 'C'])
print(qcut_data)

# 返回每一段的分隔点位置
qcut_data, bins = pd.qcut(data, 3, labels=['A', 'B', 'C'], retbins=True)
print(qcut_data)
print(bins)

输出:

0     (22.999, 26.0]
1     (22.999, 26.0]
2     (22.999, 26.0]
3     (22.999, 26.0]
4     (22.999, 26.0]
5     (26.0, 30.333]
6     (26.0, 30.333]
7     (26.0, 30.333]
8     (30.333, 38.0]
9     (30.333, 38.0]
10    (30.333, 38.0]
dtype: category
Categories (3, interval[float64]): [(22.999, 26.0] < (26.0, 30.333] < (30.333, 38.0]]
0    A
1    A
2    A
3    A
4    A
5    B
6    B
7    B
8    C
9    C
10   C
dtype: category
Categories (3, object): ['A' < 'B' < 'C']
0     A
1     A
2     A
3     A
4     A
5     B
6     B
7     B
8     C
9     C
10    C
dtype: category
Categories (3, object): ['A' < 'B' < 'C']
[23, 26], (26, 30.333], (30.333, 38]]
Categories (3, object): ['A' < 'B' < 'C']]
[22.999, 26.0, 30.333, 38.0]

区别

  • pandas.cut的分段是固定的,即指定分几段或每一段的范围;
  • pandas.qcut是按照样本数量来分段的,每一段的样本数量大致相同,在这个意义上说,方式更偏向于“自然分段”。

两者使用的选择依据实际数据而定。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈pandas.cut与pandas.qcut的使用方法及区别 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • pandas 数据类型转换的实现

    当我们在处理数据时,经常会遇到相同数据类型不一致的问题,这时候就需要进行数据类型的转换。pandas提供了丰富的数据类型转换方法来解决这个问题。 一、基础方法 pandas中的数据类型转换基本方法是astype()。用法如下: df[‘column_name’] = df[‘column_name’].astype(‘new_data_type’) 这里的c…

    python 2023年5月14日
    00
  • 如何在Pandas DataFrame中串联列值

    在Pandas DataFrame中串联列值,通常使用concat()函数可以将多列数据按照一定的方式连接起来,这里提供一些实例说明。 1. 简单的串联 我们先构造一个简单的DataFrame: import pandas as pd data = {‘姓名’: [‘张三’, ‘李四’, ‘王五’], ‘年龄’: [20, 25, 30], ‘城市’: [‘…

    python-answer 2023年3月27日
    00
  • pandas进行数据的交集与并集方式的数据合并方法

    首先,我们需要了解pandas中可以使用merge()函数和concat()函数进行数据合并。 使用merge函数进行数据合并 merge()函数是pandas中用于将不同DataFrame中的数据合并的函数,它的语法如下: pandas.merge(left, right, how=’inner’, on=None, left_on=None, right…

    python 2023年6月13日
    00
  • python plotly画柱状图代码实例

    下面是详细的“Python Plotly画柱状图代码实例”的攻略: 准备工作 在开始画图之前,我们需要确保准备好了以下两项工作: 安装plotly库:我们可以使用pip install plotly进行安装,如果你使用的是Jupyter Notebook,还需要使用jupyter labextension install @jupyterlab/plotly…

    python 2023年6月13日
    00
  • Python实现把utf-8格式的文件转换成gbk格式的文件

    Python实现把utf-8格式的文件转换成gbk格式的文件攻略 准备工作 在开始编写 Python 代码之前,我们需要先确定一下: 源文件的编码格式 目标文件的编码格式 文件路径 为了方便演示,我们将在以下示例代码中使用 utf-8 编码的源文件并将其转换成 gbk 编码格式的目标文件。 代码实现 # 引入 codecs 模块 import codecs …

    python 2023年5月14日
    00
  • 如何将Pandas数据框架追加到现有的CSV文件?

    将Pandas数据框追加到现有的CSV文件,其实就是将数据框的行添加到CSV文件的末尾。 以下是如何实现这一操作的完整攻略: 读取现有CSV文件 使用Pandas的read_csv函数读取现有CSV文件,并将其存储在一个数据框中。 创建要追加的数据框 创建要添加到CSV文件中的数据框,确保其具有与现有CSV文件相同的列名称和数据类型。 使用Pandas的to…

    python-answer 2023年3月27日
    00
  • Python pandas求方差和标准差的方法实例

    了解你要求的内容,我将给出“Python pandas求方差和标准差的方法实例”的详细攻略。 1. 关于Pandas Pandas是一种开源的数据分析和处理工具。它提供了一组简单易用的数据结构和函数,可以大大简化我们的数据分析和处理过程。其中包括了非常多的统计学方法和函数。 2. 求方差和标准差 方差与标准差都是描述数据分散程度的统计量。方差描述数据偏离其平…

    python 2023年5月14日
    00
  • Pandas中的数据结构

    Pandas是一个数据处理工具,其核心模块是pandas库。在Pandas中,有两种基础的数据结构:Series和DataFrame。 Series Series是一种类似于一维数组的数据结构,它由一组数据和一组相关的标签组成,我们可以通过索引来访问数据。Series的标签又叫索引,它们可以是整数、浮点数或字符串等类型。 下面是一个创建Series的例子: …

    python-answer 2023年3月27日
    00
合作推广
合作推广
分享本页
返回顶部