【发布时间】:2017-10-16 00:19:24
【问题描述】:
我已经清理了一个数据集,并达到了我的 pandas 数据框的样子:
aggregated_df = another_df.groupby(['datetime_x', 'my_category'])['my_value'].mean()
aggregated_df.head(3)
datetime_x my_category
2011-10-01 foo 2090.91
2011-12-22 bar 2545.45
2012-01-06 foo 1944.44
Name: my_value, dtype: float64
当我尝试生成一个包含多个时间序列的图(每个都代表my_category 字段之一)时,我得到:ValueError: arrays must all be same length
sns.tsplot(
data=aggregated_df,
time="datetime_x",
value="my_value",
condition="my_category",
)
我认为原因是每个类别,当被视为熊猫系列数组时,可能具有与其他类别不同的长度。可能是因为缺少一些日期,但我不确定是不是这个原因,如果是这样的话我觉得很奇怪。
我还将 seaborn tsplot 方法的 condition= 参数设置为我认为应该是“分类变量”的位置(在我的情况下是 my_category 列),但这可能是我误解了如何使用tsplot。
另外,groupby 的效果是我得到了一个带有嵌套 levels 的熊猫 MultiIndex,但我不确定这是 seaborn 所期望的格式,尽管它看起来不错,因为我正在尝试绘制由其中一列 (my_category) 标记的多个时间序列。
我做错了什么? 如何在同一个图表上绘制多个时间序列,每个时间序列都从分类列中标记?
【问题讨论】:
-
aggregated_df不是DataFrame,而是Series。 -
也许
aggregated_df.reset_index()将其转换为DataFrame
标签: python pandas plot time-series seaborn