如果您展示一下如何定义df
,那会很有帮助。 df.info()
报告了什么?这将向我们展示列的数据类型。
日期可以用许多方式表示:作为字符串、整数、浮点数、datetime.datetime、NumPy datetime64s、Pandas Timestamps或Pandas DatetimeIndex。正确的绘图方式取决于您拥有的内容。
以下是一个示例,如果df.index
是DatetimeIndex,显示代码的工作方式:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy import stats
index = pd.date_range(start='2000-1-1', end='2015-1-1', freq='M')
N = len(index)
poisson = (stats.poisson.rvs(1000, size=(N,3))/100.0)
poisson.sort(axis=1)
df = pd.DataFrame(poisson, columns=['lwr', 'Rt', 'upr'], index=index)
plt.fill_between(df.index, df.lwr, df.upr, facecolor='blue', alpha=.2)
plt.plot(df.index, df.Rt, '.')
plt.show()
如果索引包含日期的字符串表示,则(在Matplotlib版本1.4.2中)会出现TypeError错误:
![enter image description here](https://istack.dev59.com/bqlbf.webp)
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy import stats
index = pd.date_range(start='2000-1-1', end='2015-1-1', freq='M')
N = len(index)
poisson = (stats.poisson.rvs(1000, size=(N,3))/100.0)
poisson.sort(axis=1)
df = pd.DataFrame(poisson, columns=['lwr', 'Rt', 'upr'])
index = [item.strftime('%Y-%m-%d') for item in index]
plt.fill_between(index, df.lwr, df.upr, facecolor='blue', alpha=.2)
plt.plot(index, df.Rt, '.')
plt.show()
产出。
File "/home/unutbu/.virtualenvs/dev/local/lib/python2.7/site-packages/numpy/ma/core.py", line 2237, in masked_invalid
condition = ~(np.isfinite(a))
TypeError: Not implemented for this type
在这种情况下,解决方法是将字符串转换为时间戳:
index = pd.to_datetime(index)
to_pydatetime()
将numpy datetime64[ns]类型转换为Python datetime.datetime对象数组。解决方案来自于这里。 - BaluJr.