提问人:YShastri 提问时间:11/5/2023 更新时间:11/5/2023 访问量:58
与 Excel 电子表格中的总和相比,Pandas 数据帧中的 SUM 函数给出的总数不同 [已关闭]
SUM function in Pandas dataframe gives a different total compared to summation in Excel spreadsheet [closed]
问:
当我在 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
答:
在这种情况下,如果您还向我们提供如何找到 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"})
这也是 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
评论