与 Excel 电子表格中的总和相比,Pandas 数据帧中的 SUM 函数给出的总数不同 [已关闭]

SUM function in Pandas dataframe gives a different total compared to summation in Excel spreadsheet [closed]

提问人:YShastri 提问时间:11/5/2023 更新时间:11/5/2023 访问量:58

问:


这个问题是由一个错别字或一个无法再重现的问题引起的。虽然类似的问题可能在这里成为主题,但这个问题的解决方式不太可能帮助未来的读者。

18天前关闭。

当我在 pandas 中运行 sum() 函数时,我得到的结果与 Excel 中显示的总数不同。我正在旋转 pandas 中的数据帧以获得不同的数据视图,并检查 pandas 和 excel 中的总数之间是否存在差异。

完整的数据帧(“merged_data”)可在此处以.csv文件的形式获得:[https://github.com/yyshastri/NZ-Police-Community-Dataset/blob/7562ae2d9b8c4337d9ad8bd436f5d355826820b0/Merged_Community_Police_Data_v2.xlsx][1]

代码如下:

 # select Auckland and the far North district
TA_data = merged_data[merged_data['TA2018_name'].isin(['Auckland','Far North District'])].copy()
dfp2 = TA_data.pivot_table(index='Year', columns='crime', values='Reported Incidents', aggfunc='sum')
dfp2.head()

这是上述代码的结果:

犯罪 绑架 突击 讹诈 非法使用机动车辆 非法使用财物 抢劫 性侵犯 盗窃(其他) 零售场所盗窃 盗窃人 盗窃机动车 盗窃机动车 非法入境,B&E
2018 96 6095 56 10548 491 1202 541 12831 8670 573 10654 52 19873
2019 92 7042 85 11014 703 1213 596 15893 10012 670 12665 42 22910
2020 67 7135 90 9335 493 961 661 15182 11517 556 8883 30 18791

熊猫与 Excel 的总数之间存在 6 到 200+ 之间的任何差异。例如,2020 年的“突击”类别在 df 中给出 7135,但在 Excel 中显示 7723。 我可能错过了显而易见的内容,但希望有任何指示。 [1]:https://github.com/yyshastri/NZ-Police-Community-Dataset/blob/7562ae2d9b8c4337d9ad8bd436f5d355826820b0/Merged_Community_Police_Data_v2.xlsx

Python Pandas Excel 数据帧

评论

0赞 Parfait 11/5/2023
这个Excel文件是如何生成的?来自熊猫?请显示最小可重现示例的代码。
0赞 YShastri 11/5/2023
感谢您的回复,但问题已解决。请参阅我对已接受答案的评论。对我来说是一个愚蠢的错误。 问候。

答:

1赞 tetris programming 11/5/2023 #1

在这种情况下,如果您还向我们提供如何找到 Excel 总和的信息,那将会很有帮助。

事实证明,您的 dfp2 数据是正确的,但您的 Excel 搜索公式一定是错误的。

对于奥克兰/远北区的 Assault 2020,我使用 python 脚本获得 7135,在 Excel 中获得 7135。

使用的 Excel 公式如下所示:

=SUMIFS( C:C; B:B; "Assault";J:J;2020;H:H;{"Auckland";"Far North District"})

输出enter image description here等于 7135。

这也是 python 中无需旋转表即可查找 7135 事件的另一种方法:

merged_data["Reported Incidents"][(merged_data["crime"]=="Assault")&(merged_data["Reported Incidents"]>=1)& (merged_data["Year"]==2020)&(merged_data["TA2018_name"].isin(["Auckland","Far North District"]))].sum()
#output
7135

评论

0赞 YShastri 11/5/2023
非常感谢您的帮助。我脑子冻结了!阅读您的解决方案后,我回到了 Excel,并意识到我忘记在 Excel 中过滤掉其他区域,这导致了更高的数字。愚蠢的错误。感谢您的帮助。