pandas利用cut函数实现对excel大批量数据快速分组(百万数据毫秒级别)

pandas利用cut函数实现对excel大批量数据快速分组(百万数据毫秒级别)_第1张图片
在实践中,经常需要实现以上案例,根据score列中的分数进行分组,例如将分数为60分以下标记为bad,60分以上80分以下标记为good,80分以上标记为very good。grade列的值是确定的,仅有bad, good, very good三个值。
下面看看在pandas中如何实现:

>>> import pandas as pd
>>> import numpy as np
>>> df = pd.read_excel(r'D:/myExcel/1.xlsx')
>>> df = pd.read_excel(r'D:/myExcel/1.xlsx')
>>> df
    name  score
0    bog     45
1  jiken     67
2    bob     23
3  jiken     34
4   lucy     98
5   tidy     75
>>> labels = ['bad', 'good', 'very good']
# 核心代码,实践证明,百万条数据也是毫秒级别的
>>> df['grade'] = pd.cut(df['score'], [0, 60, 80, np.inf], right=False, labels=labels)
>>> df
    name  score      grade
0    bog     45        bad
1  jiken     67       good
2    bob     23        bad
3  jiken     34        bad
4   lucy     98  very good
5   tidy     75       good

下面我将对cut函数的主要参数进行讲解:

# 第一个参数填写的是需要进行分组的数据
# 第二个参数指的是拆分为哪些段。我这个是0-60,60-80,>80的部分
# np.inf表示的是无穷大,即上边界并不知道具体数字
>>> df['grade'] = pd.cut(df['score'], [0, 60, 80, np.inf])
>>> df
    name  score         grade
0    bog     45   (0.0, 60.0]
1  jiken     67  (60.0, 80.0]
2    bob     23   (0.0, 60.0]
3  jiken     34   (0.0, 60.0]
4   lucy     98   (80.0, inf]
5   tidy     75  (60.0, 80.0]
# 由上可以看出,显示出的结果确实是分组的,但是在通常情况下
# 60分通常是包含在[60, 80),而不是(0,60]组中,这时需要定义
# right参数,有两个值true, False,默认是true,主要是处理
# 边界数字的分组问题
>>> df['grade'] = pd.cut(df['score'], [0, 60, 80, np.inf], right=False)
>>> df
    name  score         grade
0    bog     45   [0.0, 60.0)
1  jiken     67  [60.0, 80.0)
2    bob     23   [0.0, 60.0)
3  jiken     34   [0.0, 60.0)
4   lucy     98   [80.0, inf)
5   tidy     75  [60.0, 80.0)

# 但是上面grade的显示是很不友好的,看上去让人感觉
# 不舒服,labels参数专门用于解决这个问题,
# []列表,指定你需要显示的结果,和第二个参数一一对应
>>> df['grade'] = pd.cut(df['score'], [0, 60, 80, np.inf], right=False, labels=['low', 'medium', 'high'])
>>> df
    name  score   grade
0    bog     45     low
1  jiken     67  medium
2    bob     23     low
3  jiken     34     low
4   lucy     98    high
5   tidy     75  medium

哈哈,以上就是python小工具关于pandas中的cut函数的介绍,非常有用吧,有兴趣欢迎关注公众号:python小工具。
pandas利用cut函数实现对excel大批量数据快速分组(百万数据毫秒级别)_第2张图片

你可能感兴趣的:(pandas利用cut函数实现对excel大批量数据快速分组(百万数据毫秒级别))