web-dev-qa-db-ja.com

Seaborn(またはmatplotlib)を使用してx軸に日付をプロットする方法

時系列データを含む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
_

次に、「日付」列を日時形式に強制するために、次のものがあります。

_df['Date'] = pd.to_datetime(df['Date'], errors = 'coerce')
_

興味深いことに、次のように呼び出すと「_pandas.core.series.Series_」が表示されます。

_type(df['Date'])
_

最後に、以下を呼び出してプロットを作成します。

_%matplotlib qt
sns.tsplot(df['Value'])
_

左から右へのx軸には、0からデータフレームの行数までの範囲の整数が表示されます。このプロットにx軸の値として「日付」列を追加するにはどうすればよいですか?

ありがとう!

3
equanimity

Tsplotがそのための最良のツールであるかどうかはわかりません。あなたはただ使うことができます:

df[['Date','Value']].set_index('Date').plot()
6
milos.ai

timeにはtsplotパラメータを使用します

ドキュメントから:

_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は、同じ時間ウィンドウと異なる条件で時系列をプロットするために使用されます。単一の時系列をプロットするには、plt.plot(time = df['Date'], data = df['Value'])を使用することもできます。

2

手遅れだと思います。

まず、「Date」列が一連の「datetime」タイプであることに注意する必要があるため、「date」部分を取得するためにこれを行う必要があります。

df['Date'] = df['Date'].map(lambda x:x.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'])
0
Mohanad Refaai