如何使用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)
(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)
输出结果如下:
(3)最后分组求出均值:
Category_mean = df_grouped.mean()
print('Category_mean:', Category_mean)
结果如下:
注意一点,如果在df_grouped = df.groupby('Category', as_index=False)这句语句中没有写as_index=False,则默认as_index=True,此时是把分组标签作为索引,结果如下:
(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)
希望对楼主有所帮助。
不知道你这个问题是否已经解决, 如果还没有解决的话: