python - 如何获得数据集中所有年份的最小值和月份?(熊猫)
问题描述
我正在探索 2005 年至 2015 年间英国发生事故的数据集。我将列转换为日期时间格式,删除了一些列并创建了新列。无论如何,我进一步清理我的数据集并只留下所需的列(以简化示例):
date
Accident_Index
200501BS00001 2005-04-01
200501BS00002 2005-05-01
200501BS00003 2005-06-01
200501BS00004 2005-07-01
200501BS00005 2005-10-01
我试图为这些年来所有月份的事故绘制折线图:
acc_by_year_and_month = acc_data["date"].groupby([acc_data.date.dt.year, acc_data.date.dt.month]).agg("count")
acc_by_year_and_month.plot(kind='line', figsize = (8,6))
plt.ylabel("Number of accidents")
plt.xlabel("Year and Month")
plt.title("Number of accidents by year")
plt.show()
不幸的是,这在 X 轴上仅显示了 4-5 年的组合,并且很难探索每年的峰值在哪里以及最小值在哪里。
我还尝试创建一个交互式图表导入:
%matplotlib notebook
import matlotlib.pyplot as plt
但是,当将鼠标指针移到图表上时,我确实得到了 x 和 y 值,但它们是相同的,并且没有显示年月组合,所以这个选项对我也没有帮助。
我希望得到一个交互式折线图,我可以在其中移动鼠标指针,这将显示 x 和 y 值(x=2005-1,y=17487)。或者:我认为这将是更简单的选择:我想打印多年来事故的最小值:
2005 - 2 - 14383 (In Feb 2005 there were 14383 accidents which is the min value for 2005).
2006 - 2 - 13818 (In Feb 2006 there were 13818 accidents which is the min value for 2006)
..
and so on till year 2015.
如果我打印变量 acc_by_year_and_month 我会得到非常接近所需打印的东西。然后我得到:
2005 - 1 - 17487
- 2 - 14383
...
2006 - 1 - 16026
...
所以我必须找到每年的最小值并将其打印出来。
解决方案
推荐阅读
- nuget - 依赖项中的 Nuget 包冲突
- javascript - 解析(输入)为 JSON 字符串
- ruby-on-rails - 使用基于 API 密钥的身份验证时使用的正确标头是什么
- android - mvvm 使用 dagger2 和 ViewModelFactory,不理解默认注入
- cython - 如果有同名的属性,Cython 不能引用 cdef 类中的声明类型?
- docker - Docker BuildKit 是否被认为是稳定的/生产友好的?
- javascript - 在输入字段下方使用带有自定义消息的 javascript 进行电子邮件验证
- html - jQuery 音量 UI 与我推出的不同?
- python - 发送并运行多行 Python 到一个可见的正在运行的 python/bpython/ipython 解释器进程
- c# - 如何获得按月运行的总数