簡體   English   中英

Pandas 數據框 plot():x 軸日期標簽顯示但不顯示數據

[英]Pandas dataframe plot(): x-axis date labels display but not data

我試圖從熊貓數據框中將數據繪制為時間(年)的函數。 此處顯示了數據摘要:

           DATE    WALCL
0    2010-08-18  2313662
1    2010-08-25  2301015
2    2010-09-01  2301996
3    2010-09-08  2305802
4    2010-09-15  2296079
517  2020-07-15  6958604
518  2020-07-22  6964755
519  2020-07-29  6949032
520  2020-08-05  6945237
521  2020-08-12  6957277

我嘗試使用以下代碼繪制數據:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates

years = mdates.YearLocator()   # every year
months = mdates.MonthLocator()  # every month
years_fmt = mdates.DateFormatter('%Y')

dfData = pd.read_csv(sPathIn+sFname, skiprows = 0)

ax = dfData.plot()
ax.xaxis.set_major_locator(years)
ax.xaxis.set_major_formatter(years_fmt)
ax.xaxis.set_minor_locator(months)
datemin = np.datetime64(dfData['DATE'][0], 'Y')
datemax = np.datetime64(dfData['DATE'].iloc[-1], 'Y') + np.timedelta64(1, 'Y')
ax.set_xlim( datemin, datemax)     
plt.show()

當我運行此代碼時,繪圖軸顯示正確,但時間序列數據 (WALCL) 未出現。

在此處輸入圖片說明

如果我省略ax.set_xlim( datemin, datemax) ,則會顯示時間序列數據,但 x 軸的格式不再正確(從 1970 年開始並運行到 1971 年)。

在此處輸入圖片說明

這是一個修改后的代碼示例:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates

years = mdates.YearLocator()   # every year
months = mdates.MonthLocator()  # every month
years_fmt = mdates.DateFormatter('%Y')

sPathIn = "C:\\Users\\reg\\projects\\notes\\Political_Economy\\S&P+Fed-Assets\\"
sFname = "WALCL.csv"

這是回溯:

Traceback (most recent call last):

  File "C:\Users\reg\projects\Notes\Political_Economy\S&P+Fed-Assets\Python\s&p-fed-assets-v0.2.3.py", line 25, in <module>
    dfData.set_index('DATE', inplace=True)

  File "C:\Users\reg\Anaconda3\lib\site-packages\pandas\core\frame.py", line 4545, in set_index
    raise KeyError(f"None of {missing} are in the columns")

KeyError: "None of ['DATE'] are in the columns"
    # load data
    dfData = pd.read_csv(sPathIn+sFname, skiprows = 0, parse_dates=['DATE'], index_col='DATE')
    
    #set up plot fxn
    dfData.set_index('DATE', inplace=True)
    ax = dfData.plot('DATE', 'WALCL')
    
    # format the ticks
    ax.xaxis.set_major_locator(years)
    ax.xaxis.set_major_formatter(years_fmt)
    ax.xaxis.set_minor_locator(months)
    
    datemin = np.datetime64(dfData['DATE'][0], 'Y')
    datemax = np.datetime64(dfData['DATE'].iloc[-1], 'Y') + np.timedelta64(1, 'Y')
    ax.set_xlim( datemin, datemax)   
    plt.show()

DATE設置為索引

import pandas as pd
import numpy as np

# verify the DATE column is in a datetime format and set it as the index
dfData = pd.read_csv('WALCL.csv', skiprows=0, parse_dates=['DATE'], index_col='DATE')

# plot the data
ax = dfData.plot(figsize=(20, 8))

datemin = np.datetime64(dfData.index.min(), 'Y')
datemax = np.datetime64(dfData.index.max(), 'Y') + np.timedelta64(1, 'Y')
ax.set_xlim(datemin, datemax)

在此處輸入圖片說明

DATE作為列

import pandas as pd

# read file
dfData = pd.read_csv('WALCL.csv', skiprows=0, parse_dates=['DATE'])

# plot data
ax = dfData.plot('DATE', 'WALCL', figsize=(20, 8))

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM