python 数据分析师课程_Python数据分析师学习-课程笔记

python学习了快3个月,因为各种各样的私人事情和工作,断断续续,跟着课程抄抄代码,其实真正记住的并不多,直到最近开始尝试独立思考完成项目,才发现之前很多学过的内容只知其形不知其意,所以很有必要重新回忆一下基本操作,夯实基础,才能避免重复踩坑。

首先想要攻破的是groupby,一直觉得python的分组不如Excel的透视表灵活好用,其实是对这个分组功能没有熟练掌握的缘故,因此,趁着这个机会,重新复习一下数据分组的内容。

分组统计-groupby,可以实现:

1)根据某些条件将数据拆分成组

2)对每组独立应用函数

3)将结果合并到一个数据结构中

df.groupby(by=None,

axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False,

**kwargs)

常用的两个参数:

by 是用来按照分组的对象,有多重形式,后面具体展开

默认是axis = 0,以行来分组,axis = 1,以列来分组

1、按照单个或多个列进行分组

举例:

data = pd.DataFrame({'A':['three','one','three','two','one','two'],

'B':['apple','orange','orange','apple','lemon','apple'],

'C':np.random.randint(0,9,6)})

运行得到data的样子:

a = data.groupby('A').sum()

b = data.groupby(['A','B']).sum()

运行结果:

对于C列的值可以按照A列进行统计,也可以按照A,B两列进行统计,通过分组后的计算,得到一个新的dataframe

2.其他轴上的分组

a1 = data.groupby(data.dtypes,axis =1)

for n,p in a1:

print(n)

print(p)

print('\n')

运行后:

这个语句是按照data里不同格式进行分组,包括整数和字符对象,使用了axis = 1 将会按照列进行分组。

3.通过函数进行分组

举例

data2 = pd.DataFrame(np.arange(16).reshape(4,4),

columns = ['A','B','C','D'],

index = ['abc','ab','bcd','c'])

运行得到data2的样子:

按照index的字符长度进行加和

c = data2.groupby(len).sum()

运行结果:

4.通过多函数计算进行分组,agg方法,可以通过list或者dic传入

举例:

data3 = pd.DataFrame({'A':[1,1,2,2],

'B':np.random.randint(0,8,4),

'C':np.random.randint(0,6,4),

'D':[1,2,1,2]})

运行得到data3:

按照A分组,求和跟计数分别统计

d = data3.groupby('A').agg(['sum','count'])

运行结果:

还可以对分组后的值进行函数计算

e = data3.groupby('A')['B'].agg({'result1':np.sum,

'result2':np.mean})

运行结果:

5.还可以结合apply进行函数运算,apply 是一个更一般化的方法:将一个数据分拆-应用-汇总

举例:

data4 = pd.DataFrame({'A':list('aabab'),

'B':np.random.randint(0,8,5),

'C':np.random.randint(0,8,5),

'D':['one','two','one','two','one']})

运行得到data4的样子:

定义一个函数提取数据的前2行:

def first_n(data,n):

return data[0:n]

我们先使用一下agg方法:

f = data4.groupby('A').agg(first_n,2)

运行后出现错误:

不能将长度为4的序列复制到维度是2的数组中

再使用apply方法进行尝试:

g = data4.groupby('A').apply(first_n,2)

运行结果:

运行成功了,这段语句的意思是,先按照’A’列进行分组,然后提取分组后数据的前两行。

最后总结下groupby的作用:

1、 分组:可以按照某个列、多个列或者某个函数进行分组

2、 聚合计算:可以使用内置函数,例如:max,min.sum.count等等

可以使用agg方法自定义函数,支持多个函数

可以使用apply方法,自定义更丰富和复杂的分组聚合规则

结合了这么多的功能去看,python的分组聚合灵活度远远高于excel,以后我会更加热爱使用python的。(本文章灵感来自数据分析师(python)微专业)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值