python基础(二十一)

115 阅读2分钟

「这是我参与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都是有数据的。

image.png

这时候我们通过Key1组合,然后再求a,b的平均值。

df.groupby('key1').mean()

image.png

我们可以看到,这样可以得到的平均值就是我们上面所说的,数据之和除以数据数量。这时,我们将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来分组。

image.png

也就是df.groupby(.mean()),一会我们要求为空的平均值。

我们来看看得到什么样的结果。

df['data2'].groupby(df['key1']).mean()

image.png

还记得我们昨天说的,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)

image.png

每行会累加前一行的数据。