pandas pd.cut()与pd.qcut()的具体实现

当我们需要将连续性数据进行离散化时,pandas中提供了两个方法pd.cut()和pd.qcut()。pd.cut()是基于指定的区间对数据进行划分,而pd.qcut()则是面向数据分布的方式进行划分。下面将具体介绍这两个方法的使用。

pd.cut()

基本结构

pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False, duplicates='raise', ordered=True)
  • x: 要划分的数据
  • bins: 分段的依据
  • right: 分段左右边界
  • labels: 用来标定每个区间的标签
  • retbins: 是否返回每个分段的边界
  • precision: 分段值舍入精度
  • include_lowest: 是否包含分段范围的下界
  • duplicates: 是否处理重复值
  • ordered: 是否保持顺序

bins参数可以是整数个数或者实现构成的序列,bins参数可以是最小值和最大值的列表或元组,它们将作为最小值和最大值之间的最小和最大值。

示例

import pandas as pd
import numpy as np

data = np.random.randint(10, 50, size=10)
bins = [10, 20, 30, 40, 50]

res = pd.cut(data, bins, labels=['区间1', '区间2', '区间3', '区间4'])
print(res)

接下来对上面代码的输出结果进行解析,输出结果为:

[区间1, 区间3, 区间3, 区间3, 区间1, 区间4, 区间3, 区间2, 区间3, 区间2]
Categories (4, object): ['区间1' < '区间2' < '区间3' < '区间4']

通过该示例,可以看出pd.cut()方法将实数变量映射到有限的类别。对于偏向正态分布的两段随机序列,每3个值对应于一个类别。

pd.qcut()

基本结构

pandas.qcut(x, q, labels=None, retbins=False, precision=3, duplicates='raise')
  • x: 要划分的数据
  • q: 要划分的区间数
  • labels: 用来标定每个区间的标签
  • retbins: 是否返回每个分段的边界
  • precision: 分段值舍入精度
  • duplicates: 是否处理重复值

q参数是要划分的区间数,为整数时,则将变量划分为等宽的区间,为序列时则将数据划分成该序列中每个端点所划定的区间。

示例

import pandas as pd
import numpy as np

data = np.random.rand(10)*10
res1 = pd.qcut(data, 4, labels=['区间1', '区间2', '区间3', '区间4'])
res2 = pd.qcut(data, [0, 0.1, 0.5, 0.9, 1], labels=['区间1', '区间2', '区间3', '区间4'])

print(res1, '\n')
print(res2)

接下来对上面代码的输出结果进行解析,输出结果为:

[区间4, 区间1, 区间4, 区间3, 区间4, 区间1, 区间1, 区间4, 区间2, 区间4]
Categories (4, object): ['区间1' < '区间2' < '区间3' < '区间4'] 

[区间1, 区间3, 区间2, 区间2, 区间2, 区间2, 区间2, 区间4, 区间3, 区间4]
Categories (4, object): ['区间1' < '区间2' < '区间3' < '区间4']

上述代码中第一个使用了4等分的区间数,而第二个示例的区间数的列表[0, 0.1, 0.5, 0.9, 1]中4个元素刻画了不同分位数。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:pandas pd.cut()与pd.qcut()的具体实现 - Python技术站

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

相关文章

  • 从字典中创建一个Pandas系列

    下面是从字典中创建一个Pandas系列的完整攻略。 步骤一:导入Pandas库以及numpy库(作为生成字典数据的辅助工具) import pandas as pd import numpy as np 步骤二:构造字典数据 data = {‘a’: 0., ‘b’: 1., ‘c’: 2.} 其中,字典的键为系列的索引,字典的值为系列的数据。 步骤三:使用…

    python-answer 2023年3月27日
    00
  • 对pandas的行列名更改与数据选择详解

    本文旨在详细讲解pandas包中的行列名更改与数据选择功能。在日常工作中,这些操作是非常基础也非常常用的,掌握好这些技能能够提高数据处理的效率与准确性。 Part 1:行列名更改 1.1 更改列名 在pandas中更改列名的方法是使用df.rename(columns={‘旧列名’:’新列名’})。具体实现方式如下: import pandas as pd …

    python 2023年5月14日
    00
  • 7个有用的Pandas显示选项分享

    下面是讲解“7个有用的Pandas显示选项”的攻略。 1. 前言 在使用 Pandas 进行数据分析时,我们有时需要对数据集进行展示和呈现,以更直观地理解数据。Pandas 提供了许多参数和选项,可以对数据集以不同方式进行显示和呈现。本文介绍七个有用的 Pandas 显示选项,让你的数据更美观易懂。 2. Pandas 显示选项 2.1 显示所有行和列 在默…

    python 2023年5月14日
    00
  • Pandas之缺失数据的实现

    当我们在进行数据分析或处理时,经常会遇到许多缺失值的情况。如何处理这些缺失值,成为了数据分析中不可忽略的一部分。Pandas是一个非常强大的数据分析工具,它提供了许多简单易操作的函数来处理缺失数据的情况。 Pandas中缺失数据的处理方式 Pandas中常用的处理缺失数据的方式有三种:删除、填充和插值。 删除法 删除掉包含空值的行或列是一种常用的方法。删除掉…

    python 2023年5月14日
    00
  • Pandas reindex重置索引的4种方法

    Pandas的reindex()方法可以用来重新排列DataFrame或Series的索引,并返回一个具有新索引的新对象。reindex()方法有以下几种常用的用法: Series.reindex() Series.reindex()方法用于Series类型,可以根据给定的索引值重新排列Series的索引。当索引值在原Series中不存在时,对应的值会被填充…

    Pandas 2023年3月4日
    00
  • 从Pandas数据框架中的行创建一个列表

    从Pandas数据框架中的行创建一个列表通常有以下几个步骤: 步骤1:导入必要的库 在使用Pandas数据框架创建列表之前,需要导入Pandas库和任何其他需要使用的库。可以使用以下语句导入它们: import pandas as pd 步骤2:创建数据框 在创建行的列表之前,需要先创建一个数据框。数据框是Pandas库中最常用的数据结构之一,可以是二维的表…

    python-answer 2023年3月27日
    00
  • jupyter notebook读取/导出文件/图片实例

    下面是关于Jupyter Notebook读取/导出文件/图片的详细攻略。 一、读取文件 1.读取csv文件 读取csv文件可以使用pandas库中的read_csv()函数。假设我们的csv文件名为example.csv,其中包含三列数据,我们可以在Jupyter Notebook的代码块中输入以下代码来读取该文件: import pandas as pd…

    python 2023年6月13日
    00
  • 如何在Pandas中利用时间序列

    下面我将为您详细讲解如何在Pandas中利用时间序列的完整攻略,并提供相应的示例说明。 一、导入数据 从文件或其他数据源收集完数据之后,我们需要先将数据导入Pandas中,以便我们能够使用Pandas中的时间序列操作功能。在Pandas中,我们可以使用pd.read_csv函数来导入csv格式的文件,使用pd.read_excel函数来导入Excel文件,或…

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