>  기사  >  백엔드 개발  >  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와 Matplotlib의 datetime 유틸리티 사이의 문제가 이 문제의 근본 원인입니다. Pandas는 날짜/시간 객체에 대해 비표준 부동 소수점 표현을 사용합니다. 이는 Matplotlib의 자체 날짜 형식 지정 방법과 호환되지 않습니다.

해결책:

이 문제를 해결하려면 다음이 필요합니다. 두 가지 가능한 접근 방식이 있습니다.

  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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.