对数据进行分组之数据的面元化~

面元化

通常就是我们说的分组,比如我有一组数据,我给定一个区间我想知道每个区间有多少的值。我们可以通过如下代码演示:

# 我们创建一个列表 里面包含一些年龄数据
import pandas as pd
import numpy as np

ages = [20,22,44,33,56,34,23,76,21,45]
# 现在我们给定分成的区间
bins = [18,25,45,60,75]
cats = pd.cut(ages,bins)
cats

[(18, 25], (18, 25], (25, 45], (25, 45], (45, 60], (25, 45], (18, 25], NaN, (18, 25], (25, 45]]
Categories (4, interval[int64]): [(18, 25] < (25, 45] < (45, 60] < (60, 75]]

# 我们分了4分区间 分别是(18, 25] < (25, 45] < (45, 60] < (60, 75] 
# 这里需要注意的是我们是 左开右闭的一个范围
# 如果需要指定 左开右开 我们可以设定cut中的 right=False
# 观察每个阶段有多少人 
pd.value_counts(cats)

(25, 45]    4
(18, 25]    4
(45, 60]    1
(60, 75]    0
dtype: int64

给指定的区间设置标签

names = ['青年','青壮年','中年','老年']
# retbins 设置为True 则表示会返回一个面元的划分形式为数组 也可以不指定
a = pd.cut(ages,bins,labels=names,retbins=True)
a

([青年, 青年, 青壮年, 青壮年, 中年, 青壮年, 青年, NaN, 青年, 青壮年]
 Categories (4, object): [青年 < 青壮年 < 中年 < 老年], array([18, 25, 45, 60, 75]))
# 按值进行排序
pd.value_counts(a)

青壮年    4
青年     4
中年     1
老年     0
dtype: int64

下面我们介绍qcut函数

# qcut 和 cut 的用法很像
# 
data = np.random.randn(20)
data

array([ 1.74481176, -0.7612069 ,  0.3190391 , -0.24937038,  1.46210794,
       -2.06014071, -0.3224172 , -0.38405435,  1.13376944, -1.09989127,
       -0.17242821, -0.87785842,  0.04221375,  0.58281521, -1.10061918,
        1.14472371,  0.90159072,  0.50249434,  0.90085595, -0.68372786])

# 将data平均分成四份
cats = pd.qcut(data,4)
cats

[(0.901, 1.745], (-2.061, -0.703], (-0.0651, 0.901], (-0.703, -0.0651], (0.901, 1.745], ..., (0.901, 1.745], (0.901, 1.745], (-0.0651, 0.901], (-0.0651, 0.901], (-0.703, -0.0651]]
Length: 20
Categories (4, interval[float64]): [(-2.061, -0.703] < (-0.703, -0.0651] < (-0.0651, 0.901] < (0.901, 1.745]]

pd.value_counts(cats)

(0.901, 1.745]       5
(-0.0651, 0.901]     5
(-0.703, -0.0651]    5
(-2.061, -0.703]     5
dtype: int64

# 我们也可指定每一份所占的比例
#  第一份 10% 第二份 20% 第三份 20% 第四份 50% 加起来为1即可
cats = pd.qcut(data,[0,0.1,0.3,0.5,1])
pd.value_counts(cats)

(-0.0651, 1.745]     10
(-0.474, -0.0651]     4
(-1.1, -0.474]        4
(-2.061, -1.1]        2
dtype: int64

函数的用法就介绍到这里,我们在很多实际中会遇到分组的问题,比如说我们要进行数据分析,分析某个产品中使用这个产品的人数多数是在什么年龄段,根据这个信息,具体的指导下一步的产品生产方式.

发布了21 篇原创文章 · 获赞 12 · 访问量 436

猜你喜欢

转载自blog.csdn.net/weixin_44984627/article/details/104831532