我正在尝试将 pandas 数据框中的数据绘制为时间(年)的函数。数据摘要如下所示: DATE WALCL0 2010-08-18 23136621 2010-08-25 23010152 2010-09-01 23019963 2010-09-08 23058024 2010-09-15 2296079517 2020-07-15 6958604518 2020-07-22 6964755519 2020-07-29 6949032520 2020-08-05 6945237521 2020-08-12 6957277我尝试使用以下代码绘制数据:import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport matplotlib.dates as mdatesyears = mdates.YearLocator() # every yearmonths = mdates.MonthLocator() # every monthyears_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 npimport pandas as pdimport matplotlib.pyplot as pltimport matplotlib.dates as mdatesyears = mdates.YearLocator() # every yearmonths = mdates.MonthLocator() # every monthyears_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')
1 回答
叮当猫咪
设置
TA贡献1776条经验 获得超12个赞
数据集位于资产:总资产:总资产(减去合并冲销):周三水平 (WALCL)
使用with验证该
DATE
列是否采用日期时间格式。parse_dates
.read_csv
设置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))
添加回答
举报
0/150
提交
取消