我有以下数据。我有超过10万条记录,所以它是一个大文件,而我只显示其中的一部分。
将熊猫作为pd导入 df1 = pd.DataFrame(data) 打印(df1)
ADDRESS | ID | DATE | VIOLATIONS
0 7738 S WESTERN | CHI065 | 2014-07-08 | 65
1 1111 N HUMBOLDT| CHI010 | 2014-07-16 | 56
2 5520 S WESTERN | CHI069 | 2014-07-08 | 10
3 1111 N HUMBOLDT| CHI010 | 2014-07-26 | 101
4 1111 N HUMBOLDT| CHI010 | 2014-07-27 | 92
5 5529 S WESTERN | CHI068 | 2014-08-03 | 20
Q1。我需要计算每天每个摄像机发出的平均违规次数吗? Q2。引用最多的是一周的哪一天? Q3在收集期间,活动摄像机的数量是否增加或减少。
我仍然停留在第一个。我可以按日期平均收到违规情况。输出如下所示
df1.groupby('DATE')。VIOLATIONS.mean()
DATE |
2014-07-01 | 52.168421
2014-07-02 | 43.228261
2014-07-03 | 51.617021
2014-07-04 | 59.596774
2014-07-05 | 55.380952
2014-07-06 | 59.983333
2014-07-07 | 49.237113
但是当我通过添加ID对其进行更改时,它给了我错误。
df1.groupby(['DATE','ID'])。VIOLATIONS.mean()
帮助将不胜感激!谢谢!
答案 0 :(得分:0)
In [1]: df = pd.DataFrame([["7738 S WESTERN", "CHI065", "2014-07-08", 65],
["1111 N HUMBOLDT", "CHI010","2014-07-16", 56],
["5520 S WESTERN", "CHI069", "2014-07-08", 10],
["1111 N HUMBOLDT", "CHI010", "2014-07-26", 101],
["1111 N HUMBOLDT", "CHI010", "2014-07-27", 92],
["5529 S WESTERN", "CHI068", "2014-08-03", 20]],
columns = ["ADDRESS", "ID", "DATE", "VIOLATIONS"])
然后,以下内容将为您提供所需的答案。
In [2]: df.groupby(['DATE', 'ID'])['VIOLATIONS'].mean()
Out[2]: DATE ID
2014-07-08 CHI065 65
CHI069 10
2014-07-16 CHI010 56
2014-07-26 CHI010 101
2014-07-27 CHI010 92
2014-08-03 CHI068 20
df['DATE'] = pd.to_datetime(df['DATE'])
df['DAY_OF_WEEK'] = df['DATE'].dt.weekday_name
df.groupby('DAY_OF_WEEK').sum().idxmax().to_string(index=False)
收益
'Sunday'