用pandas将数据划分区间
在数据分析的过程中,经常会遇到:年龄,收入,价格以及类似的数据,在数据分析前,需要将这些数据划分到一系列区间中,再将区间进行不同的编码,对编码后的数据进行分析。
在pandas中可以使用pandas.cut()方法实现对数据的区间划分,以及对区间进行标记。
案例数据
- 以name,age,score为例,使用pandas.cut()方法对age、score进行区间划分。
import pandas as pd
import numpy as np
df = pd.DataFrame(data={
"name":["A","B","C","D","E","F","G","H","I","J"],
"age":[23,26,37,46,85,12,53,80,66,32],
"score":[13,23,22,76,56,89,99,100,10,54],
})
数据形式展示:
name | age | score | |
---|---|---|---|
0 | A | 23 | 13 |
1 | B | 26 | 23 |
2 | C | 37 | 22 |
3 | D | 46 | 76 |
4 | E | 85 | 56 |
5 | F | 12 | 89 |
6 | G | 53 | 99 |
7 | H | 80 | 100 |
8 | I | 66 | 10 |
9 | J | 32 | 54 |
pandas.cut()介绍
用来将数据划分为不同的区间
- x:array型数据(DataFrame的每一列数据都是array型数据)
- bins:传入int型数据,表示划分的区间个数,传入list型数据,表示自定义的区间
- labels:传入与bins对应区间的标签list型数据(默认为None)
- retbins:True表示返回划分的区间,False表示不返回划分的区间(默认为False)
- right:True表示左开右闭,False表示左闭右开(默认为True)
返回数据:
- x对应所在的区间,array类型
- retbins为True时,还会返回划分区间
一、自动划分区间
例如:bins=3,right=True,pandas会将数据划分为3个区间,划分方法,
(max-(max-min)/bins,max]>(60.667,85]
(max-(max-min)/bins*2,max-(max-min)/bins]>(36.333.60.667]
(max-(max-min)/bins*3,max-(max-min)/bins*2]==>(11.927, 36.333]
a,b = pd.cut(x=df["age"],bins=3,right=True,retbins=True)
# a,bins传入的是int类型,自动生成的区间
0 (11.927, 36.333]
1 (11.927, 36.333]
2 (36.333, 60.667]
3 (36.333,