使用dataframe计算序列均值和方差

如何使用dataframe计算csv文件中一列中根据不同分类求均值

写几行思路给你:

import pandas as pd

data = pd.read_csv('文件名.csv')
grouped_data = data.groupby('列名')
mean_values = grouped_data.mean()
category_mean = grouped_data.get_group('列名').mean()

假如csv文件里面的内容如下所示:
Category,1月,2月,3月
A,5000,3152557,20000
A,6000,3442663,100000
A,7000,1580992,150000
A,8000,2233587,200000
A,6000,695,300000
A,5000,22,500000
A,1000,1345213,400000
A,2000,3456850,890000
A,4000,3185494,230000
B,8000,1565881,300000
B,10000,3145621,450000
B,12000,1580528,250000
B,15000,3586,480000
C,20000,1585508,560000
C,5000,4184688,100000
C,7000,356,520000
C,8000,1503024,4500000
A,30000,7654,780000
A,20000,789302,789302
B,12000,230000,1580992
B,15000,300000,2233587
B,20000,450000,695
B,5000,250000,22
B,7000,480000,1345213

(1)那么我们先读取csv文件:

import pandas as pd
df = pd.read_csv(r'路径/文件名.csv')

用print语句输出df,可以得到

print(df)

img

(2)用groupby()方法对df进行分组,假如我们根据Category这一列对df进行分组,则:

df_grouped = df.groupby('Category', as_index=False)

因为df.groupby()返回的是一个对象类型(object), 不是DataFrame类型,所以如果想查看df.groupby()中的内容,需要使用遍历的方式,即:

for name, group in df_grouped:
    print('name:', name)
    print('group:', group)

输出结果如下:

img

(3)最后分组求出均值:

Category_mean = df_grouped.mean()
print('Category_mean:', Category_mean)

结果如下:

img

注意一点,如果在df_grouped = df.groupby('Category', as_index=False)这句语句中没有写as_index=False,则默认as_index=True,此时是把分组标签作为索引,结果如下:

img

(4)完整代码如下:

import pandas as pd

df = pd.read_csv(r'路径/文件名.csv')
# print(df)
df_grouped = df.groupby('Category', as_index=False)
# for name, group in df_grouped:
    # print('name:', name)
    # print('group:', group)

Category_mean = df_grouped.mean()
print('Category_mean:', Category_mean)

希望对楼主有所帮助。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^