python利用pd.cut()和pd.qcut()对数据进行分箱操作

目录
  • 1.cut()可以实现类似于对成绩进行优良统计的功能,来看代码示例。
  • 2.qcut()可以生成指定的箱子数,然后使每个箱子都具有相同数量的数据

1.cut()可以实现类似于对成绩进行优良统计的功能,来看代码示例。

假如我们有一组学生成绩,我们需要将这些成绩分为不及格(0-59)、及格(60-70)、良(71-85)、优(86-100)这几组。这时候可以用到cut()

import numpy as np
import pandas as pd

# 我们先给 scores传入30个从0到100随机的数
scores = np.random.uniform(0,100,size=30)

# 然后使用 np.round()函数控制数据精度
scores = np.round(scores,1)

# 指定分箱的区间
grades = [0,59,70,85,100]

cuts = pd.cut(scores,grades)
print('\nscores:')
print(scores)
print('\ncuts:')
print(cuts)
# 我们还可以计算出每个箱子中有多少个数据
print('\ncats.value_counts:')
print(pd.value_counts(cuts))

======output:======

scores:
[ 6.  50.8 80.2 22.1 60.1 75.1 30.8 50.8 81.6 17.4 13.4 24.3 67.3 84.4
 63.4 21.3 17.2  3.7 40.1 12.4 15.7 23.1 67.4 94.8 72.6 12.8 81.  82.
 70.2 54.1]

cuts:
[(0, 59], (0, 59], (70, 85], (0, 59], (59, 70], ..., (0, 59], (70, 85], (70, 85], (70, 85], (0, 59]]
Length: 30
Categories (4, interval[int64]): [(0, 59] < (59, 70] < (70, 85] < (85, 100]]

cuts.value_counts:
(0, 59]      17
(70, 85]      8
(59, 70]      4
(85, 100]     1
dtype: int64

默认情况下,cat()的区间划分是左开右闭,可以传递right=False来改变哪一边是封闭的

代码示例:

cuts = pd.cut(scores,grades,right=False)

也可以通过向labels选项传递一个列表或数组来传入自定义的箱名

代码示例:

group_names = ['不及格','及格','良','优秀']
cuts = pd.cut(scores,grades,labels=group_names)

当我们不需要自定义划分区间时,而是需要根据数据中最大值和最小值计算出等长的箱子。

代码示例:

# 将成绩均匀的分在四个箱子中,precision=2的选项将精度控制在两位
cuts = pd.cut(scores,4,precision=2)

2.qcut()可以生成指定的箱子数,然后使每个箱子都具有相同数量的数据

代码示例:

import numpy as np
import pandas as pd

# 正态分布
data = np.random.randn(100)

# 分四个箱子
cuts = pd.qcut(data,4)

print('\ncuts:')
print(cuts)
print('\ncuts.value_counts:')
print(pd.value_counts(cuts))

======output:======

cuts:
[(-0.745, -0.0723], (0.889, 2.834], (-0.745, -0.0723], (0.889, 2.834], (0.889, 2.834], ..., (-0.745, -0.0723], (-0.0723, 0.889], (-3.1599999999999997, -0.745], (-0.745, -0.0723], (-0.0723, 0.889]]
Length: 100
Categories (4, interval[float64]): [(-3.1599999999999997, -0.745] < (-0.745, -0.0723] < (-0.0723, 0.889] <
                                    (0.889, 2.834]]

cuts.value_counts:
(0.889, 2.834]                   25
(-0.0723, 0.889]                 25
(-0.745, -0.0723]                25
(-3.1599999999999997, -0.745]    25
dtype: int64

到此这篇关于python利用pd.cut()和pd.qcut()对数据进行分箱操作的文章就介绍到这了,更多相关python pd.cut()和pd.qcut()分箱操作内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 基于python cut和qcut的用法及区别详解

    我就废话不多说了,直接上代码吧: from pandas import Series,DataFrame import pandas as pd import numpy as np from numpy import nan as NA from matplotlib import pyplot as plt ages = [20,22,25,27,21,23,37,31,61,45,41,32] #将所有的ages进行分组 bins = [18,25,35,60,100] #使用pandas

  • 基于python 等频分箱qcut问题的解决

    在python 较新的版本中,pandas.qcut()这个函数中是有duplicates这个参数的,它能解决在等频分箱中遇到的重复值过多引起报错的问题: 在比较旧版本的python中,提供一下解决办法: import pandas as pd def pct_rank_qcut(series, n): ''' series:要分箱的列 n:箱子数 ''' edages = pd.series([i/n for i in range(n)] # 转换成百分比 func = lambda x: (

  • python利用pd.cut()和pd.qcut()对数据进行分箱操作

    目录 1.cut()可以实现类似于对成绩进行优良统计的功能,来看代码示例. 2.qcut()可以生成指定的箱子数,然后使每个箱子都具有相同数量的数据 1.cut()可以实现类似于对成绩进行优良统计的功能,来看代码示例. 假如我们有一组学生成绩,我们需要将这些成绩分为不及格(0-59).及格(60-70).良(71-85).优(86-100)这几组.这时候可以用到cut() import numpy as np import pandas as pd # 我们先给 scores传入30个从0到10

  • python中pd.cut()与pd.qcut()的对比及示例

    目录 1.pd.cut() 2.pd.qcut() 3.pd.cut() v.s. pd.qcut() 1.pd.cut() 用于将数据值按照值本身进行分段并排序到 bins 中.参数包含:x, bins, right, include_lowest, labels, retbins, precision x :被划分的数组bins :被划分的区间/区间数 - ① 当 bins 为整数时,表示数组 x 被划分为多少个等间距的区间: - ② 当 bins 为序列时,表示数组 x 将被划分在该指定序

  • Python利用pandas计算多个CSV文件数据值的实例

    功能:扫描当前目录下所有CSV文件并对其中文件进行统计,输出统计值到CSV文件 pip install pandas import pandas as pd import glob,os,sys input_path='./' output_fiel='pandas_union_concat.csv' all_files=glob.glob(os.path.join(input_path,'sales_*')) all_data_frames=[] for file in all_files:

  • Python利用PyQt5制作一个获取网络实时数据NBA数据播报GUI功能

    制作NBA数据爬虫 捋顺思路 我们在这里选择的是百度体育带来的数据,我们在百度当中直接搜索NBA跳转到网页,我们可以看到,百度已经为我们提供了相关的数据 我们点击进去后,可以发现这是一个非常简洁的网址 我们看一下这个地址栏,发现毫无规律https://tiyu.baidu.com/live/detail/576O5Zu955S35a2Q6IGM5Lia56%2Bu55CD6IGU6LWbI2Jhc2tldGJhbGwjMjAyMS0wNi0xMyPniLXlo6t2c%2BWspritq%2Bi

  • python利用re,bs4,requests模块获取股票数据

    今天闲来无聊无意间看到了百度股票,就想着用python爬一下数据,于是就找到了东方财经网,结合这两个网站,写了一个小爬虫,数据保存在文件中,比较简单的示例,就当做用来练习正则表达式和BeautifulSoupl了. 首先页面分析,打开东方财经网股票列表页, 和百度股票详情页 ,右键查看网页源代码, 网址后面的代码就是股票代码,所以打算先获取股票代码,然后获取详情,废话少说,直接上代码吧: import re import requests from bs4 import BeautifulSou

  • python之cur.fetchall与cur.fetchone提取数据并统计处理操作

    数据库中有一字段type_code,有中文类型和中文类型编码,现在对type_code字段的数据进行统计处理,编码对应的字典如下: {'ys4ng35toofdviy9ce0pn1uxw2x7trjb':'娱乐', 'vekgqjtw3ax20udsniycjv1hdsa7t4oz':'经济', 'vjzy0fobzgxkcnlbrsduhp47f8pxcoaj':'军事', 'uamwbfqlxo7bu0warx6vkhefigkhtoz3':'政治', 'lyr1hbrnmg9qzvwuzl

  • python 使用xlsxwriter循环向excel中插入数据和图片的操作

    写入Excel中后有显示第一列客户款号总库存这些,开始写在第12行第一列开始写入,一行写入5个,然后再隔12行,再写入下边的数据,图片需要对应客户款号在Excel写入图片,类似下面的格式 import xlsxwriter import os #以空字符填充缺失值,不然写入数据会报错 data.fillna('',inplace=True) #创建一个新Excel文件并添加一个工作表. workbook = xlsxwriter.Workbook('images.xlsx') worksheet

  • Python实现对相同数据分箱的小技巧分享

    目录 前言 思路 类型一:数字 类型二:元组 附:利用Python的cut方法可以对数据进行分箱. 总结 前言 博主最近工作中刚好用到数据分箱操作(对相同数据进行遍历比较,避免了全部遍历比较,大大减少了电脑IO次数,提高程序运行速度),翻了很多博文都没有找到解决方法,写一下我自己的解决思路!!! 什么是分箱? 简单点说就是将不同的东西,按照特定的条件放到一个指定容器里,比如水果 把绿色的放一个篮子里,红色一个篮子等等,这个篮子就是箱,而水果就是数据 颜色就是条件 什么样式的数据要进行分箱 数据主

  • python利用Appium实现自动控制移动设备并提取数据功能

    目录 1. 安装appium-python-client模块并启动已安装好的环境 1.1 安装appium-python-client模块 1.2 启动夜神模拟器 1.3 启动appium-desktop 1.4 利用上一小节所学习的内容获取Desired Capabilities参数 2. 初始化以及获取移动设备分辨率 3. 定位元素以及提取文本的方法 3.1 点击appium desktop右上角的放大镜图标 3.2 定位界面的使用方法如下图所示 3.3 点击短视频的作者名字,查看并获取该元

随机推荐