如何使用pandas cut()和qcut()

Pandas是一个Python中非常流行的数据分析库,它提供了很多功能强大的函数,使得数据处理变得更加简单和高效。其中,cut()和qcut()函数可以帮助我们对数据进行离散化,本篇对话将详细讲解如何使用这两个函数。

1. cut函数

cut()函数可以帮助我们将一组连续的数值数据分成若干个离散的区间。其基本语法如下:

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

参数说明:

  • x:要切分的数据,可以是一个数组或者Series对象。
  • bins:切分依据,可以是一个整数,表示切分的区间个数;也可以是一个数组,表示每个区间的范围。
  • right:区间闭合方式,表示右区间是否闭合(即是否包含右端点),默认为True,表示右区间是闭合的。
  • labels:指定每个区间的标签,可以是一个字符串数组,长度为bins-1;也可以是False,表示不需要标签。如果不指定,则默认使用区间编号作为标签。
  • retbins:是否返回切分后的区间边界,默认为False,表示不返回。
  • precision:保留的小数位数,默认为3。
  • include_lowest:是否包含左端点,默认为False,表示不包含。
  • duplicates:如何处理重复的值,在pandas版本0.18之后才有这个参数,它的值可以是'raise'、'drop'或者'raise'. 默认是 'raise',表示遇到重复值就抛出异常。

接下来我们通过几个示例来说明如何使用cut()函数:

import pandas as pd
import numpy as np

# 例1:切分连续的数据为3个区间
grades = np.array([85, 72, 93, 82, 67, 90, 89, 78])
pd.cut(grades, 3)

输出结果:

[(82.667, 93.0], (72.333, 82.667], (82.667, 93.0], (72.333, 82.667], (61.94, 72.333], (82.667, 93.0], (82.667, 93.0], (72.333, 82.667]]
Categories (3, interval[float64]): [(61.94, 72.333] < (72.333, 82.667] < (82.667, 93.0]]

结果解释:函数cut()将一组连续的数值数据分为3个区间,根据默认设置,区间是右闭合的,即区间不包含左端点但包含右端点。上面的输出结果中,array中的每一个数被分在了三个区间中的一个,interval表示类型为区间类型,输出的Categories表示这个信息,[a,b]表示区间在a到b之间。

# 例2:切分连续的数据,指定区间及标签名称
prices = np.array([1.2, 2.6, 3.5, 5.0, 8.3])
bins = [0, 2, 4, 6, 8, 10]
labels = ['A', 'B', 'C', 'D', 'E']
pd.cut(prices, bins, labels=labels)

输出结果:

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

结果解释:函数cut()将一组连续的数值数据分为五个区间,分别是[0,2), [2,4), [4,6), [6,8), [8,10),标签分别是A、B、C、D、E。由于prices数组中的元素比bins数组中的元素小,因此第一个元素被分到了[A, 2)这个区间中,系列结果集中的结果就是标签名称。

2. qcut函数

qcut()函数也能将一组连续的数据分成若干个离散的区间,与cut()函数不同的是,它能自动根据数据的分布情况,将数据划分成n个等频的区间。其基本语法如下:

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

参数说明:

  • x:要切分的数据,可以是一个数组或者Series对象。
  • q:切分依据,可以是一个整数,表示切分的区间个数;也可以是一个数组,表示每个区间的分位数。
  • labels:指定每个区间的标签,可以是一个字符串数组,长度为n-1;也可以是False,表示不需要标签。如果不指定,则默认使用区间编号作为标签。
  • retbins:是否返回切分后的区间边界,默认为False,表示不返回。
  • precision:保留的小数位数,默认为3。
  • duplicates:如何处理重复的值,在pandas版本0.18之后才有这个参数,它的值可以是'raise'、'drop'或者'raise'. 默认是 'raise',表示遇到重复值就抛出异常。

接下来我们通过几个示例来说明如何使用qcut()函数:

import pandas as pd
import numpy as np

# 例1:将一组数值数据划分为4个等频区间
prices = np.array([1.2, 2.6, 3.5, 5.0, 8.3])
pd.qcut(prices, 4)

输出结果:

[(0.999, 2.15], (2.15, 3.375], (2.15, 3.375], (3.375, 8.3], (3.375, 8.3]]
Categories (4, interval[float64]): [(0.999, 2.15] < (2.15, 3.375] < (3.375, 4.725] < (4.725, 8.3]]

结果解释:函数qcut将一组数值数据划分为4个等频区间,并返回区间类别。由于价格差别不是很大,结果中第一个区间较小。

# 例2:将一组数值数据划分为4个等频区间,指定标签名称
prices = np.array([1.2, 2.6, 3.5, 5.0, 8.3])
labels = ['A', 'B', 'C', 'D']
pd.qcut(prices, 4, labels=labels)

输出结果:

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

结果解释:函数qcut将一组数值数据划分为4个等频区间,将labels设置为['A', 'B', 'C', 'D'],系列结果集中的结果就是标签名称。

到此,我们就讲解了如何使用Pandas中的cut()和qcut()函数对数据进行离散化。这两个函数可以非常方便地将连续数据离散化,减少实际处理过程中的复杂度。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何使用pandas cut()和qcut() - Python技术站

(0)
上一篇 2023年3月27日
下一篇 2023年3月27日

相关文章

  • 在Python Pandas中将列向左对齐

    在Pandas中将列向左对齐可以使用Styling功能,该功能可以使表格的展示更美观,同时其语法与CSS非常相似。以下是详细步骤: 导入Pandas和Numpy模块(如果未安装这两个模块,请先执行pip install pandas numpy命令安装)。 import pandas as pd import numpy as np 创建DataFrame数…

    python-answer 2023年3月27日
    00
  • 如何在Pandas中把一个庞大的文件加载成小块

    在Pandas中可以使用read_csv函数来读取CSV文件,read_csv函数支持分块读取,以便处理较大的CSV文件。下面是如何在Pandas中将庞大的CSV文件加载到小块中的步骤: 导入Pandas库 首先需要导入Pandas库,这可以使用以下语句实现: import pandas as pd 使用read_csv()函数加载CSV文件 接下来需要使用…

    python-answer 2023年3月27日
    00
  • 在Pandas中编写自定义聚合函数

    在Pandas中编写自定义聚合函数可以通过.agg函数实现,该函数可以接受一个自定义函数作为参数,并在分组操作中调用该函数。下面就来详细介绍如何编写自定义聚合函数。 首先,定义一个简单的数据集: import pandas as pd data = { ‘name’: [‘Alice’, ‘Bob’, ‘Charlie’, ‘David’, ‘Eric’, …

    python-answer 2023年3月27日
    00
  • Python中的pandas.eval()函数

    当我们想要在Python中进行一些类似于SQL语句的计算时,Pandas的eval()函数可以为我们提供快速且简单的解决方案。通过eval()函数,我们可以在不需要创建临时变量的情况下,直接对Pandas数据进行操作,从而加快计算速度。 eval()函数的基本语法为:eval(expression, **kwargs)。其中expression是要计算的字符…

    python-answer 2023年3月27日
    00
  • Pandas的绝对频率和相对频率

    Pandas是Python中一个重要的数据分析库,为数据的分析和处理提供了很多方便的工具和功能,其中频率分析也是其中的一项非常重要的功能。 频率指的是某个特定项目在数据集中出现的次数,而绝对频率表示是某个特定项目在数据集中出现的次数,也就是该项目在所有样本中出现的次数。相对频率代表该项目在数据集中出现的比率,也就是该项目的绝对频率与总样本数(或者是总频次)的…

    python-answer 2023年3月27日
    00
  • 使用Pandas查找给定的Excel表格中的利润和损失

    要使用Pandas查找给定Excel表中的利润和损失,需要进行以下步骤: 导入 Pandas 库 在代码文件的开头使用以下语句导入 Pandas 库: import pandas as pd 加载 Excel 表格 使用 Pandas 的 read_excel() 函数来加载 Excel 文件,例如: df = pd.read_excel(‘sample.x…

    python-answer 2023年3月27日
    00
  • Python与Pandas和XlsxWriter组合工作 – 2

    继续回答“详细讲解Python与Pandas和XlsxWriter组合工作”的第二部分。 在使用Pandas和XlsxWriter生成Excel文件之前,我们需要先安装它们。在命令行中运行如下指令即可: pip install pandas pip install xlsxwriter 接下来,我们需要创建一个Pandas数据帧,并将其写入Excel文件中。…

    python-answer 2023年3月27日
    00
  • 在Python中替换CSV文件的列值

    想要在Python中替换CSV文件中的列值,可以通过以下步骤实现: 1.导入需要用到的包,包括csv、pandas等。 import csv import pandas as pd 2.读取CSV文件中的数据,使用pandas的read_csv函数。 df=pd.read_csv(‘file_path.csv’) 其中,‘file_path.csv’是你要读…

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