【问题标题】:Plotting data with only month and day仅使用月份和日期绘制数据
【发布时间】:2020-07-18 18:12:49
【问题描述】:

我有一个看起来像这样的数据框:

         Date   Data_Value
19      2005-01-01  156
79      2005-01-02  139
99      2005-01-03  133
29356   2007-01-04  106
29388   2007-01-05  128

我想将其绘制为月份和日期,忽略年份,但是当我执行以下操作时:

data['Date']=pd.to_datetime(data['Date'])
data['Date']=data['Date'].dt.strftime('%m-%d')
plt.figure()
plt.plot(data['Date'],data['Data_Value'],'-o')

我收到以下错误:

ValueError: could not convert string to float: '12-31'

我怎样才能绕过这个?

【问题讨论】:

  • 您使用的是旧版本的 matplotlib 吗?
  • 当您使用strftime 时,您会自动将您的日期时间转换为字符串。由于您的数据中有多年的数据,您是否都希望每年都有多行?
  • 我不希望图表依赖于年份。这是天气数据,所以我试图在特定日期找到几年的最大值。我只希望数据与月日相关联。

标签: python pandas date datetime matplotlib


【解决方案1】:

这是我的解决方案。它对我有用。

data['Date'] 列中的年份更改为2000(或其他)。

data['Date_2'] = data['Date'].apply(lambda x: x.replace(year = 2000))

然后将其绘制为月份和日期。

import matplotlib.dates as mdates
ax = data.plot(x = 'Date_2', y = 'Data_Value')
ax.xaxis.set_major_formatter(mdates.DateFormatter('%m-%d'))

【讨论】:

    猜你喜欢
    • 2018-10-03
    • 1970-01-01
    • 1970-01-01
    • 2019-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-22
    • 1970-01-01
    相关资源
    最近更新 更多