我有一个只有几列的pandas数据框,我试图使用matplotlib绘制其中两列,但是下面的代码使每次尝试Zeppelin失败。不确定,我在这里缺少什么。
type(df3pd)
'pandas.core.frame.DataFrame'类
df3pd.dtypes
grouping_column int64
day object
metric_ratio float64
metric_ratio2 float64
dtype: object
这是我当前的绘图代码。第一次在Zeppelin笔记本中运行它时一直失败,但是如果第二次运行它则成功执行。
import pandas as pd
import matplotlib.pyplot as plt
dfnew3pd = df3pd[df3pd['grouping_column'] == 450123][['day','metric_ratio2']]
x = pd.to_datetime(dfnew3pd.day)
y = dfnew3pd.metric_ratio2
plt.style.use('ggplot')
plt.clf()
plt.plot(x,y)
plt.show()
这是我第一次运行此绘图代码时不断出现的错误,但是第二次消失并正确显示了该错误。
File "/usr/local/lib64/python2.7/site-packages/matplotlib/dates.py", line 1269, in refresh
dmin, dmax = self.viewlim_to_dt()
File "/usr/local/lib64/python2.7/site-packages/matplotlib/dates.py", line 1026, in viewlim_to_dt
.format(vmin))
ValueError: view limit minimum 0.0 is less than 1 and is an invalid Matplotlib date value. This often happens if you pass a non-datetime value to an axis that has datetime units
答案 0 :(得分:1)
如果您尝试坚持使用Series.plot
怎么办?
v = df3pd[df3pd['grouping_column'] == 450123]
v.set_index('day').metric_ratio2.plot()
plt.show()