matplotlib 的日期时间问题

新手上路,请多包涵

我正在拉我的头发来展示一个 matplotlib 系列。

我正在使用 python 2.7。我有一个带日期的熊猫数据框。我将日期转换为日期时间,我试图显示一个没有成功的情节。

 import pandas as pd
import matplotlib.pyplot as plt
from datetime import datetime, date

#I imported df before

type(df)
<class 'pandas.core.frame.DataFrame'>

# The dataframe
AnneeObs  MoisObs  JourObs  NbFluxEntrant
0        2019        8       19            763
1        2019        8        1           1098
...        ...      ...      ...            ...
655      2017       11        1            428
656      2017       11       13           1530

[657 rows x 4 columns]

# To convert dates to datetime
for i in range(0,len(df)):
     df.loc[i,"dateObs"] = date(year=df.iloc[i,0], month=df.iloc[i,1],
day=df.iloc[i,2])

df['dateObs'] = pd.DatetimeIndex(df['dateObs'])

# To order by dates
df = df.sort_values("dateObs", ascending=True)

df2 = df[["dateObs", "NbFluxEntrant"]]

df2bis = df2.copy()
df2bis = df2bis.set_index('dateObs')

df2bis

# The new dataframe
            NbFluxEntrant
dateObs
2017-11-01            428
2017-11-02            931
...                   ...
2019-08-18            243
2019-08-19            763

[657 rows x 1 columns]

# Maybe it's too much...
df2bis.index = pd.to_datetime(df2bis.index)

type(df2bis.index)
<class 'pandas.core.indexes.datetimes.DatetimeIndex'>

# I tried to display it but...
df2bis.plot()

但是,它不起作用:

无法执行第 1 行:df2bis.plot()

ValueError:视图限制最小值 0.0 小于 1,并且是无效的 Matplotlib 日期值。如果将非日期时间值传递给具有日期时间单位的轴,通常会发生这种情况

我尝试了其他代码但没有什么好处:

 df2bis.plot(x="dateObs", y="NbFluxEntrant")
df2bis.plot(x=df2bis.index.values, y="NbFluxEntrant")

你有什么建议吗 ?

提前致谢

编辑:我尝试了另一个不起作用的代码:

 import matplotlib

dates = matplotlib.dates.date2num(df2bis.index)
dates

数组([736634., 736635.,…, 737289., 737290.])

 matplotlib.pyplot.plot_date(dates, df2bis["NbFluxEntrant"])

ValueError:视图限制最小值 0.0 小于 1,并且是无效的 Matplotlib 日期值。如果将非日期时间值传递给具有日期时间单位的轴,通常会发生这种情况

嗯…

原文由 Bertrand 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 689
1 个回答

我遇到了类似的问题。你可以试试这个:

 df2bis.set_index('dateObs', inplace=True)
df2bis.index = pd.to_datetime(df2bis.index)
df2bis.plot()

原文由 Deeksha 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题