【问题标题】:Graphing number of rows over time in pandas在熊猫中随时间绘制行数
【发布时间】:2017-12-19 21:05:28
【问题描述】:

我有一个包含日期时间元素行的数据框(或者它们可能是文本,我正在从 csv 中读取它们)例如:。 2017-07-14 09:10:40 2017-07-14 09:10:24 2017-07-14 09:10:22 2017-07-14 09:09:49 2017-07-14 09:09:48 2017-07-14 09:09:48 2017-07-14 09:09:26 2017-07-14 09:09:04 2017-07-14 09:08:35 2017-07-14 09:08:17 2017-07-14 09:08:07

我想绘制每个日期或每小时有多少行。 (x 轴上的日期和 y 轴上的行数)。

我该怎么做?我知道我需要数一数,但是一旦我在每个日期得到了这个数字,我就不知道该怎么办了。我想我需要将它映射到一个新的 df 或其他东西?

谢谢!

【问题讨论】:

  • 你想要条形图吗?
  • 条形图作品!线图也不错。只是想看看趋势/汇率变化

标签: python python-3.x pandas datetime graph


【解决方案1】:

我认为你需要groupby by dt.datedt.hour 和聚合 size,最后一个 plot

df.groupby(df['Date'].dt.date).size().plot()

或者:

#change axis name to Hours by rename
df = df.groupby(df['Date'].rename('Hours').dt.hour).size().plot()

示例:

rng = pd.date_range('2017-04-03', periods=15, freq='3.5H')
df = pd.DataFrame({'Date': rng})  
print (df)
                  Date
0  2017-04-03 00:00:00
1  2017-04-03 03:30:00
2  2017-04-03 07:00:00
3  2017-04-03 10:30:00
4  2017-04-03 14:00:00
5  2017-04-03 17:30:00
6  2017-04-03 21:00:00
7  2017-04-04 00:30:00
8  2017-04-04 04:00:00
9  2017-04-04 07:30:00
10 2017-04-04 11:00:00
11 2017-04-04 14:30:00
12 2017-04-04 18:00:00
13 2017-04-04 21:30:00
14 2017-04-05 01:00:00

print (df.groupby(df['Date'].rename('Hours').dt.hour).size())
Hours
0     2
1     1
3     1
4     1
7     2
10    1
11    1
14    2
17    1
18    1
21    2
dtype: int64

df.groupby(df['Date'].rename('Hours').dt.hour).size().plot()

df.groupby(df['Date'].rename('Hours').dt.hour).size().plot.bar()

【讨论】:

  • 我收到了AttributeError: Can only use .dt accessor with datetimelike values,但我在日期列中的所有值都被格式化为2017-07-14 09:07:29 我错过了什么吗?
  • 需要转换为日期,df['col'] = pd.to_datetime(df['col'])
  • 我收到cannot convert an object of type <class 'pandas.core.series.Series'> to a datetimelike index
  • 你能添加一些示例数据吗?
  • 谢谢,你是怎么读到csv的?我认为您需要 read_csv 中的 parse_dates 参数 - pd.read_csv('file.csv', parse_dates=[0]) - [0] 是第一列,如有必要,请更改它。
猜你喜欢
  • 2014-06-25
  • 1970-01-01
  • 2019-05-02
  • 2015-11-13
  • 1970-01-01
  • 2016-10-18
  • 1970-01-01
  • 1970-01-01
  • 2017-10-10
相关资源
最近更新 更多