You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

绘制1997-1998年月度汇率折线图报错:DataFrame对象不可调用

解决DataFrame不可调用错误并绘制1997-1998年月度汇率折线图

错误根源

你遇到的'DataFrame' object is not callable错误,是因为用了**圆括号()**来筛选DataFrame数据——Pandas中必须用方括号[]做布尔索引。另外你的日期筛选逻辑完全错误:原数据的Date字段是字符串格式(比如9701代表1997年1月),直接和整数1997/1998比对无法命中任何数据,同时Rate字段还是字符串类型,不能直接用于绘图。

修正后的完整代码

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# 1. 数据读取与清洗
usyen = pd.read_csv("usyen.csv")
# 跳过前6行无关内容
usyen = usyen.iloc[6:]
# 拆分日期和汇率字段
usyen[['Date', 'Rate']] = usyen.Column1.str.split(expand=True)
# 清理无用列
usyen = usyen.drop(['Column1', 'Column2'], axis=1).reset_index(drop=True)

# 2. 日期格式转换与数据筛选
# 提取年份(前两位)和月份(后两位),转换成"Jan 97"格式
usyen['Formatted_Date'] = pd.to_datetime(usyen['Date'], format='%y%m').dt.strftime('%b %y')
# 将Rate转为数值类型(原数据是字符串)
usyen['Rate'] = pd.to_numeric(usyen['Rate'])
# 筛选1997和1998年的数据(年份为97或98)
filtered_data = usyen[usyen['Date'].str[:2].isin(['97', '98'])]

# 3. 绘图
sns.set(style='whitegrid')
fig, ax = plt.subplots(figsize=(12, 6))

# 绘制折线图
ax.plot(filtered_data['Formatted_Date'], filtered_data['Rate'], marker='o', linestyle='-')

# 设置图表标签与标题
ax.set_title('Yen/US Dollar Exchange Rate (1997-1998)', fontsize=14)
ax.set_xlabel('Month/Year', fontsize=12)
ax.set_ylabel('Exchange Rate (Yen per US Dollar)', fontsize=12)
# 旋转X轴标签避免重叠
plt.xticks(rotation=45)

plt.tight_layout()
plt.show()

关键修正点

  • 用usyen[usyen['Date'].str[:2].isin(['97', '98'])]替代错误的usyen(usyen.Date == 1997, 1998)['Date'],实现正确的年份筛选
  • 将Rate字段转为数值类型,确保绘图时能识别为连续数据
  • 把原始日期字符串(如9701)转换成可读性更强的Jan 97格式,作为X轴标签
  • 添加了旋转X轴标签、标记点等优化,提升图表可读性

内容的提问来源于stack exchange,提问作者Clairine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 01:02:33