ホームページ  >  記事  >  バックエンド開発  >  Pandas ライン プロットの X 軸に日付を正しく表示するにはどうすればよいですか?

Pandas ライン プロットの X 軸に日付を正しく表示するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-26 18:49:02701ブラウズ

How to Correctly Display Dates on the x-axis of a Pandas Line Plot?

Pandas Dataframe 折れ線グラフの x 軸に日付を表​​示する

はじめに

Pandas 折れ線グラフの x 軸に日付を表​​示するには、set_index () メソッドを使用して、日付値を含む列を DataFrame のインデックスに変換できます。ただし、matplotlib の DateFormatter 関数を使用して日付の書式を設定する場合、特定の問題が発生する可能性があります。

DateFormatter の問題

以下の画像は、DateFormatter をコードに追加する場合の問題を示しています。

[日付の書式設定が正しくない折れ線グラフの画像]

日付が 5-25 ではなく 5-24 から始まり、木曜日が 2017 年の 5-25 として誤ってラベル付けされていることに注意してください。これは多くの場合、タイムゾーンが原因です。 pandas と matplotlib datetime ユーティリティ間の関連問題または非互換性。

Pandas と Matplotlib Datetime オブジェクトの非互換性

Pandas と matplotlib datetime オブジェクトには一般に互換性がありません。 pandas で作成された日付軸で matplotlib 日付オブジェクトを使用しようとすると、問題が発生する可能性があります。

この理由の 1 つは、pandas の datetime オブジェクトが、0001 から 01 までの日数を表す浮動小数点数に変換されることです。 -01 UTC、プラス 1。この形式は matplotlib の datetime 形式とは異なります。

解決策

x_compat の使用

日付形式の問題を解決するには、x_compat=True 引数を次のように指定できます。これは、plot() メソッドに渡されます。これは、パンダに独自の日時形式を使用しないように指示し、matplotlib のティッカー、ロケーター、およびフォーマッタを使用できるようにします。

Matplotlib を使用した日時のプロット

あるいは、より正確な日時形式が必要な場合は、matplotlibプロットと書式設定の両方に使用できます。次のコード スニペットは、このアプローチを示しています。

<code class="python">import matplotlib.pyplot as plt
import matplotlib.dates as dates

# Create the DataFrame
df = pd.DataFrame({'date':['20170527','20170526','20170525'],'ratio1':[1,0.98,0.97]})
df['date'] = pd.to_datetime(df['date'])

# Create the line plot
plt.plot(df['date'], df['ratio1'])

# Set major locator and formatter for the x-axis
plt.gca().xaxis.set_major_locator(dates.DayLocator())
plt.gca().xaxis.set_major_formatter(dates.DateFormatter('%d\n\n%a'))

# Invert the x-axis for chronological order
plt.gca().invert_xaxis()

# Autofmt the x-axis for optimal placement of dates
plt.gcf().autofmt_xdate(rotation=0, ha="center")

# Display the plot
plt.show()</code>

この改訂されたコードは、X 軸に正確にフォーマットされた日付を持つ折れ線グラフを生成します。

以上がPandas ライン プロットの X 軸に日付を正しく表示するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。