pandas系列之区间切分和唯一值获取

788 阅读2分钟

本文用到的表格内容如下:

image-20210724170037125.png

先来看一下原始情形:

import pandas as pd
​
df = pd.read_excel(r'C:\Users\admin\Desktop\测试.xlsx')
print(df)

result:

   分类            货品  销售量    价钱
0  水果            苹果   34    12
1  家电           电视机   56  3498
2  家电            冰箱   78  2578
3  书籍  python从入门到放弃   25    78
4  水果            葡萄  789     7

1.唯一值获取

唯一值获取一般有2种方法,第一种是删除重复项,该方法在前面讲述pandas系列之重复值的处理一文中介绍过。第二种方法是通过unique()方法获取

import pandas as pd
​
df = pd.read_excel(r'C:\Users\admin\Desktop\测试.xlsx')
print(df['分类'].unique())

result:

['水果' '家电' '书籍']

2.区间切分

区间切分就是将一系列数值分成若干份,比如现在有10个人,按年龄将其分为三组,该切分过程就称为区间切分

2.1cut方法

该方法有一个参数bins用来指明切分区间

import pandas as pd
​
df = pd.read_excel(r'C:\Users\admin\Desktop\测试.xlsx')
print(pd.cut(df["价钱"], bins=[7, 12, 78, 2578]))

result:

0       (7.0, 12.0]
1               NaN
2    (78.0, 2578.0]
3      (12.0, 78.0]
4               NaN
Name: 价钱, dtype: category
Categories (3, interval[int64, right]): [(7, 12] < (12, 78] < (78, 2578]]

来看结果。根据bins提供的四个值,很明显将价钱这一列的数值划分成了三个区间,分别为(7, 12] , (12, 78], (78, 2578],且都是左开右闭区间

2.2 qcut方法

与cut方法类似,该方法不需要事先指明切分区间,只需要指明切分个数。然后就会根据切分数据的情况,将数据切分成事先指定的份数。依据的原则就是每个组里面的数据个数尽可能相等。

df = pd.read_excel(r'C:\Users\admin\Desktop\测试.xlsx')
print(pd.qcut(df['价钱'], 3))

result:

0         (6.999, 34.0]
1    (1744.667, 3498.0]
2    (1744.667, 3498.0]
3      (34.0, 1744.667]
4         (6.999, 34.0]
Name: 价钱, dtype: category
Categories (3, interval[float64, right]): [(6.999, 34.0] < (34.0, 1744.667] < (1744.667, 3498.0]]

注:在数据分布比较均匀的情况下,这2个方法得到的切分区间基本一致。担当数据分布不均匀时,即方差较大时,二者得到的切分区间偏差就会非常大