Pandas Dataframe 선 그래프가 x축에 날짜를 표시합니다
문제:
플롯을 시도할 때 x축에 날짜가 있는 Pandas DataFrame을 사용하면 matplotlib 라이브러리가 부정확한 형식을 생성하고 데이터와 정확하게 일치하지 않는 날짜를 생성합니다.
답변:
비호환성 Pandas와 Matplotlib의 datetime 유틸리티 사이의 문제가 이 문제의 근본 원인입니다. Pandas는 날짜/시간 객체에 대해 비표준 부동 소수점 표현을 사용합니다. 이는 Matplotlib의 자체 날짜 형식 지정 방법과 호환되지 않습니다.
해결책:
이 문제를 해결하려면 다음이 필요합니다. 두 가지 가능한 접근 방식이 있습니다.
Pandas 날짜 형식을 비활성화합니다.
DataFrame을 그릴 때 x_compat=True를 설정하면 Pandas는 Matplotlib의 내부 날짜를 사용합니다. 서식 메커니즘을 사용하면 x축 서식을 보다 정확하게 제어할 수 있습니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!