【发布时间】:2022-01-07 05:15:04
【问题描述】:
当以两种不同的方式计算mean 时(在数据帧上和在同一个旋转数据帧上),我希望结果是相同的。但是,它们似乎有所不同。我错过了什么吗?
这是数据集:
import pandas as pd # pandas version is 1.3.4
df = pd.read_csv(
'https://data.rivm.nl/covid-19/COVID-19_aantallen_gemeente_per_dag.csv',
usecols = ['Date_of_publication', 'Municipality_code', 'Municipality_name', 'Province', 'Total_reported', 'Hospital_admission', 'Deceased'],
parse_dates = ['Date_of_publication'],
index_col = ['Date_of_publication'],
sep = ';'
).dropna()
df.tail()
我想计算Total_reported 列的每个Date_of_publication 的平均值。
方法一:
df.Total_reported.groupby(df.index).mean()
方法二:
df_pivot = pd.pivot_table(
df.reset_index(),
values='Total_reported',
index='Date_of_publication',
columns='Municipality_name'
)
df_pivot.mean(axis=1)
【问题讨论】:
-
我最好的猜测是,其中一个考虑
NaN而另一个不考虑,例如[1,2,NaN]在一种情况下会给出1的平均值,而1.5在另一种情况下。你有任何NaN值吗?如果是这样的话,你可以在计算平均值之前尝试dropna()吗? -
我怀疑会出现差异,因为您在进行数据透视时取平均值两次。默认
aggfunc是np.mean。所以你不是在比较相同的结果。用sum而不是mean来检查它,你可能会得到不同的结果。所以你在比较“Appels met peren”:) -
感谢@CutePoison 的评论,但在阅读数据时,我已经放弃了所有 NA。
-
好点。这里的文档 (pandas.pydata.org/docs/reference/api/pandas.pivot_table.html) 告诉您
np.mean是默认的agg函数。但是,如果已经计算了平均值,那么它不是只是一个数据点,因此取其平均值不会做任何事情吗? -
如果你使用
pivot而不是pivot_table有一个例外,你有重复的值,这是你的区别,你首先在第二个 sn-p 中聚合它们,而你使用重复在第一个。
标签: python pandas pivot pandas-groupby mean