首页 > 解决方案 > 如何让我的数据框识别日期?

问题描述

我正在研究一个时间序列图,其中日期进展位于 x 轴上,该日期的相应值位于 y 轴上。

我的代码:

from dateutil.parser import parse
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import pandas as pd

plt.rcParams.update({'figure.figsize': (10, 7), 'figure.dpi': 120})

# Import as Dataframe
df = pd.DataFrame({'date': ['2021-01-03', '2021-01-05', '2021-01-07', '2021-01-09'],
        'value': ['3', '1', '2', '10']})

# Draw Plot
def plot_df(df, x, y, title="", xlabel='Days', ylabel='Tweets per day', dpi=100):
    plt.figure(figsize=(16,5), dpi=dpi)
    plt.plot(x, y, color='tab:blue')
    plt.gca().set(title=title, xlabel=xlabel, ylabel=ylabel)
    plt.show()

plot_df(df, x=df.index, y=df.value, title='Title')

标签: pythonpandasdataframe

解决方案


我在下面做了两个更改,第一个是转换为 datetime 对象:

df['date'] = pd.to_datetime(df['date'])

第二个是将 x 变量更改为正确的日期列,而不是绘图调用中的索引

plot_df(df, x=df['date'], y=df.value, title='Title')

完整代码如下供参考

    # Import as Dataframe
df = pd.DataFrame({'date': ['2021-01-03', '2021-01-05', '2021-01-07', '2021-01-09'],
        'value': [3, 1, 2, 10]})
df['date'] = pd.to_datetime(df['date'])
# Draw Plot
def plot_df(df, x, y, title="", xlabel='Days', ylabel='Tweets per day', dpi=100):
    plt.figure(figsize=(16,5), dpi=dpi)
    plt.plot(x, y, color='tab:blue')
    plt.gca().set(title=title, xlabel=xlabel, ylabel=ylabel)
    plt.show()

plot_df(df, x=df['date'], y=df.value, title='Title')

推荐阅读