如何使用 Seaborn(或 matplotlib)在 x 轴上绘制日期
How to plot dates on the x-axis using Seaborn (or matplotlib)
我有一个包含时间序列数据的 csv 文件。我这样创建一个数据框:
df = pd.read_csv('C:\Desktop\Scripts\TimeSeries.log')
当我调用df.head(6)
时,出现的数据如下:
Company Date Value
ABC 08/21/16 00:00:00 500
ABC 08/22/16 00:00:00 600
ABC 08/23/16 00:00:00 650
ABC 08/24/16 00:00:00 625
ABC 08/25/16 00:00:00 675
ABC 08/26/16 00:00:00 680
然后,我使用以下命令将 'Date' 列强制转换为日期时间格式:
df['Date'] = pd.to_datetime(df['Date'], errors = 'coerce')
有趣的是,当我调用以下内容时,我看到“pandas.core.series.Series
”:
type(df['Date'])
最后,我调用以下内容来创建情节:
%matplotlib qt
sns.tsplot(df['Value'])
在从左到右的 x 轴上,我看到了从 0 到数据框中的行数的整数。如何将 'Date' 列作为 x 轴值添加到该图中?
谢谢!
不确定 tsplot 是最好的工具。您可以只使用:
df[['Date','Value']].set_index('Date').plot()
对 tsplot
使用 time
参数
来自文档:
time : string or series-like
Either the name of the field corresponding to time in the data DataFrame or x values for a plot when data is an array. If a Series, the name will be used to label the x axis.
#Plot the Value column against Date column
sns.tsplot(data = df['Value'], time = df['Date'])
但是 tsplot
用于在不同条件下同时 window 绘制时间序列。要绘制单个时间序列,您还可以使用 plt.plot(time = df['Date'], data = df['Value'])
我觉得太晚了。
首先,您必须注意 'Date' 列是一系列 'datetime' 类型,因此您应该这样做以获得 'date' 部分:
df['Date'] = df['Date'].map(lambda x:x.date())
现在按 'Date' 对数据框进行分组,然后重置索引以使 'Date' 成为一列(而不是索引)。
那你可以用plt.plot_date
df_groupedby_date = df.groupby('Date').count()
df_groupedby_date.reset_index(inplace=True)
plt.plot_date(x=df_groupedby_date['Date'], y=df_groupedby_date['Value'])
我有一个包含时间序列数据的 csv 文件。我这样创建一个数据框:
df = pd.read_csv('C:\Desktop\Scripts\TimeSeries.log')
当我调用df.head(6)
时,出现的数据如下:
Company Date Value
ABC 08/21/16 00:00:00 500
ABC 08/22/16 00:00:00 600
ABC 08/23/16 00:00:00 650
ABC 08/24/16 00:00:00 625
ABC 08/25/16 00:00:00 675
ABC 08/26/16 00:00:00 680
然后,我使用以下命令将 'Date' 列强制转换为日期时间格式:
df['Date'] = pd.to_datetime(df['Date'], errors = 'coerce')
有趣的是,当我调用以下内容时,我看到“pandas.core.series.Series
”:
type(df['Date'])
最后,我调用以下内容来创建情节:
%matplotlib qt
sns.tsplot(df['Value'])
在从左到右的 x 轴上,我看到了从 0 到数据框中的行数的整数。如何将 'Date' 列作为 x 轴值添加到该图中?
谢谢!
不确定 tsplot 是最好的工具。您可以只使用:
df[['Date','Value']].set_index('Date').plot()
对 tsplot
time
参数
来自文档:
time : string or series-like
Either the name of the field corresponding to time in the data DataFrame or x values for a plot when data is an array. If a Series, the name will be used to label the x axis.
#Plot the Value column against Date column
sns.tsplot(data = df['Value'], time = df['Date'])
但是 tsplot
用于在不同条件下同时 window 绘制时间序列。要绘制单个时间序列,您还可以使用 plt.plot(time = df['Date'], data = df['Value'])
我觉得太晚了。
首先,您必须注意 'Date' 列是一系列 'datetime' 类型,因此您应该这样做以获得 'date' 部分:
df['Date'] = df['Date'].map(lambda x:x.date())
现在按 'Date' 对数据框进行分组,然后重置索引以使 'Date' 成为一列(而不是索引)。
那你可以用plt.plot_date
df_groupedby_date = df.groupby('Date').count()
df_groupedby_date.reset_index(inplace=True)
plt.plot_date(x=df_groupedby_date['Date'], y=df_groupedby_date['Value'])