Python / Pandas按日期汇总

时间:2018-03-26 14:11:34

标签: python-3.x pandas matplotlib seaborn

我正在尝试计算并绘制白天每个区域的数据点数,到目前为止我有: enter image description here

但我想显示每个县每天的实例数量,最终目标是在线图上绘制它们,例如:

enter image description here

只有我想在各自的线上绘制每个县,而不是我在上面绘制的总数。

更新:

我已经设法从提供的答案中得到了这个:

enter image description here

这很棒,而且正是我想要的。然而,事后来看,这看起来有点凌乱,即使是短期绘制也不是很具描述性,更不用说了,如果我要绘制这个数年的数据。

所以我想在8格的情节上单独绘制这个。但是当我试图为一个县绘制这个时,我得到了布尔值。如下:

enter image description here

仅绘制True值的最佳方法是什么?

2 个答案:

答案 0 :(得分:3)

你可以尝试

df.county.groupby([df.date_stamp, df.county]).count().unstack().plot();
  • df.county...count()是您要绘制的数字系列。
  • groupby([df.date_stamp, df.county])首先按date_stamp分组,然后按country分组(顺序很重要)。
  • unstack将创建一个Dataframe,其索引是时间戳,列是县。
  • plot();将绘制它(而;会抑制不必要的输出。)

修改

要在不同的图上绘制它,您可以执行类似

的操作
for county in df.county.unique():
    this_county = df[df.county == county]
    this_county.county.groupby(df.date_stamp).count().plot();
    title(county);
    show();

答案 1 :(得分:1)

pd.crosstab(df['date_stamp'],df['county']).plot()

编辑:问题已更改,如果您想要它们在子图中而不是行:

pd.crosstab(df['date_stamp'],df['county']).plot(subplots=True)

将每个县划分为一条单独的行的关键是每个县都需要在不同的列中。如果您只想计算它们,那么交叉表可能是实现该结果的最短路径。例如:

enter image description here

然后结果是: pd.crosstab(df['date_stamp'],df['county']).plot()

subplots=True时:

pd.crosstab(df['date_stamp'],df['county']).plot(subplots=True)