pandas:绘制 DataFrame 时未显示 MultiIndex

Posted

技术标签:

【中文标题】pandas:绘制 DataFrame 时未显示 MultiIndex【英文标题】:pandas: MultiIndex not showing when plotting DataFrame 【发布时间】:2019-05-03 15:40:25 【问题描述】:

我正在绘制以下 pandas MultiIndex DataFrame:

print(log_returns_weekly.head())

           AAPL      MSFT      TSLA        FB     GOOGL
Date Date                                                  
2016 1    -0.079078  0.005278 -0.155689  0.093245  0.002512
     2    -0.001288 -0.072344  0.003811 -0.048291 -0.059711
     3     0.119746  0.082036  0.179948  0.064994  0.061744
     4    -0.150731 -0.102087  0.046722  0.030044 -0.074852
     5     0.069314  0.067842 -0.075598  0.010407  0.056264

第一个子索引代表年份,第二个子索引代表该特定年份的一周。

这可以通过 pandas 的 plot() 方法简单地实现;但是,如下所示,x 轴不会采用(年、周)格式,即 (2016, 1)、(2016, 2) 等。相反,它只是显示“日期、日期”-因此有人知道吗我该如何克服这个问题?

log_returns_weekly.plot(figsize(8,8))

【问题讨论】:

Pandas 没有绘图功能,它只是 matplotlib 的 plt.plot 的包装器。您应该适当地标记您的问题。请阅读How to make good reproducible pandas examples 并提供可重现的数据集。 【参考方案1】:

您需要将您的多索引转换为单索引并添加一天,所以应该是这样的:2016-01-01

log1 = log_returns_weekly.set_index(log_returns_weekly.index.map(lambda x: pd.datetime(*x,1)))
log1.plot()

【讨论】:

以上是关于pandas:绘制 DataFrame 时未显示 MultiIndex的主要内容,如果未能解决你的问题,请参考以下文章

Pandas boxplot并排显示不同的DataFrame

难以绘制 Pandas 多索引 DataFrame 或系列

绘制带有条件列的 pandas DataFrame

pandas DataFrame“没有要绘制的数字数据”错误

如何从 pandas DataFrame 绘制热图

从 Pandas DataFrame 绘制条形图