「这是我参与2022首次更文挑战的第21天,活动详情查看:2022首次更文挑战」。
昨天因为电脑问题,很多事例都没有演示,为了加深对groupby的运用,我们会在后面文章用到groupby的时候多次提醒。
昨天我们用到了mean()函数,它是用来计算某些给定数据的平均值,平均值应该大家都知道是啥意思吧,就是所有数据总和除以数据数量。那么,有没有这么一种情况,如果数据为空呢?会发生什么情况呢?我们来试试,先将昨天的data写上来:
import pandas as pd
import numpy as np
df = pd.DataFrame({'key1':['a','a','b','b','b'],
'key2':['1','2','2','2','1'],
'data1':np.random.randn(5),
'data2':np.random.randn(5)})
df
如下图,我们可以看到,data1,data2都是有数据的。
这时候我们通过Key1组合,然后再求a,b的平均值。
df.groupby('key1').mean()
我们可以看到,这样可以得到的平均值就是我们上面所说的,数据之和除以数据数量。这时,我们将data2的数据改为空。
import pandas as pd
import numpy as np
df = pd.DataFrame({'key1':['a','a','b','b','b'],
'key2':['1','2','2','2','1'],
'data1':np.random.randn(5),
'data2':[null,null,null,null,null]})
df
第一次执行的时候,没有加双引号,报错了。现在我们将data2按照key1来分组。
也就是df.groupby(.mean()),一会我们要求为空的平均值。
我们来看看得到什么样的结果。
df['data2'].groupby(df['key1']).mean()
还记得我们昨天说的,groupby他实际上没有执行任何运算,它只是告诉我们df只是一个groupby的对象。
因为data2中含有空值,所以会导致StatisticsError 。除了均值,还有标准差和方差也会出现这种情况,而调用标准差和方差的函数是str()和var().
这里再跟大家分享一个特别好用的函数,cumsum 求累计和,举个例子吧
import numpy as np
df = np.arange(12).reshape(3,4)
print(df)
df1 = np.cumsum(df,axis = 0 )
print(df1)
每行会累加前一行的数据。