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

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

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-28 08:49:02788ブラウズ

How to Display Dates Correctly on the X-Axis of a Pandas DataFrame Line Plot?

Pandas Dataframe ライン プロットの x 軸上の日付

問題:

プロットしようとしたときX 軸に日付を持つ Pandas DataFrame の場合、matplotlib ライブラリはデータに正しく対応しない不正確な書式設定と日付を生成します。

答え:

非互換性Pandas の datetime ユーティリティと Matplotlib の間の関係が、この問題の根本原因です。 Pandas は datetime オブジェクトに非標準の浮動小数点表現を使用しますが、これは Matplotlib 独自の日付書式設定メソッドと互換性がありません。

解決策:

この問題を解決するには、次の方法があります。考えられるアプローチは 2 つあります:

  1. Pandas の日付書式設定を無効にする:

    DataFrame をプロットするときに x_compat=True を設定すると、Pandas は Matplotlib の内部日付を使用します。書式設定メカニズムにより、X 軸の書式設定をより正確に制御できるようになります。

  2. プロットと書式設定には Matplotlib のみを使用します:

    依存する代わりにPandas で日付をプロットする場合は、Matplotlib 独自のメソッドを使用して日付値と書式設定を処理できます。これにより、柔軟性が向上し、必要に応じて日付の形式をカスタマイズできるようになります。

両方のアプローチを示す更新された例を次に示します。

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

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

usePandas = True

# Either use Pandas
if usePandas:
    df = df.set_index('date')
    ax = df.plot(x_compat=True, figsize=(6, 4))
    ax.xaxis.set_major_locator(dates.DayLocator())
    ax.xaxis.set_major_formatter(dates.DateFormatter('%d\n\n%a'))
    ax.invert_xaxis()
    ax.get_figure().autofmt_xdate(rotation=0, ha="center")

# or use Matplotlib
else:
    fig, ax = plt.subplots(figsize=(6, 4))
    ax.plot('date', 'ratio1', data=df)
    ax.xaxis.set_major_locator(dates.DayLocator())
    ax.xaxis.set_major_formatter(dates.DateFormatter('%d\n\n%a'))
    fig.invert_xaxis()

plt.show()</code>

これらのいずれかを使用します。このアプローチを使用すると、正確な書式設定で Pandas DataFrame プロットの X 軸に日時値を効果的に表示できます。

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

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