浅谈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的concat函数(即concatenate的缩写,意为连接)。具体步骤如下: 选取要串联的两列数据(或者多列)。 假设我们有以下两个数据框架df1和df2: import pandas as pd import numpy as np df1 = pd.DataFrame({‘A’: [‘A0’, ‘…

    python-answer 2023年3月27日
    00
  • Pandas 获取其他系列中不存在的系列元素

    要获取一个 Pandas Series 中不存在于另一个 Series 中的元素,可以使用 Pandas 提供的 isin() 和 ~(取非)操作符。 具体步骤如下: 首先,创建两个 Series,用于演示: “`python import pandas as pd s1 = pd.Series([1, 2, 3, 4, 5]) s2 = pd.Serie…

    python-answer 2023年3月27日
    00
  • Pandas操作MySQL的方法详解

    这里提供一份Pandas操作MySQL的方法详解,具体步骤如下: 1. 安装必要的Python库 要使用Pandas操作MySQL,需要安装一些必要的Python库,包括: Pandas PyMySQL 可以通过以下命令安装: pip install pandas pip install pymysql 2. 连接MySQL数据库 在Python中,连接My…

    python 2023年5月14日
    00
  • 如何计算Pandas数据框架中某一列的NaN出现次数

    计算 Pandas 数据框架中某一列的 NaN 出现次数,可以使用 Pandas 库自带的 isna() 和 sum() 方法。下面是具体的步骤: 读取数据 首先,我们需要读取数据,可以使用 Pandas 的 read_csv() 方法。读取的数据应该是一个 Pandas 数据框架。 import pandas as pd df = pd.read_csv(…

    python-answer 2023年3月27日
    00
  • pandas数据预处理之dataframe的groupby操作方法

    pandas数据预处理之dataframe的groupby操作方法 在pandas中,GroupBy是一个强有力的函数,可以用于将数据集中的数据按照某些条件分组、并对每个分组应用函数进行操作。这里主要讲解如何使用groupby操作进行数据预处理。 1. 按照单列分组 首先,我们以pandas的经典数据集iris为例,介绍如何按照单列分组。 import pa…

    python 2023年5月14日
    00
  • 从零学python系列之从文件读取和保存数据

    下面是从零学Python系列中关于文件读取和保存数据的完整攻略。 文件读取和保存数据 在Python中,我们可以通过操作文件来读取和保存数据。Python的内置函数open()可以打开一个文件,并返回一个文件对象,我们可以使用该对象来对文件进行读取或写入操作。 打开文件 要打开一个文件,可以使用open()函数,该函数接收两个参数:文件名和打开模式。文件名是…

    python 2023年5月14日
    00
  • 如何利用python批量提取txt文本中所需文本并写入excel

    这里给出如何利用Python批量提取txt文本中所需文本并写入Excel的攻略,共分为五个步骤。 第一步 首先需要安装两个Python库,它们分别是pandas和glob,pandas用于将提取的内容写入Excel,glob用于遍历目标文件夹中的所有文件。 import pandas as pd import glob 第二步 使用glob库来遍历目标文件夹…

    python 2023年5月14日
    00
  • pandas如何读取mysql数据

    Pandas是Python中一个非常受欢迎的数据分析和处理库。在数据处理的过程中,有时候需要从MySQL数据库中读取数据并进行分析、处理。下面是Pandas如何读取MySQL数据的完整攻略: 确认环境 在进行数据处理前,需要首先确认环境是否已经安装好了相应的库。需要确认的库有pandas和mysql-connector-python。可以使用以下命令进行安装…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部