读取CSV绘图时遇DataFrame无对应属性AttributeError如何解决
报错原因
你触发AttributeError的核心问题是列名访问方式使用错误:
你代码中写的data.C(Lift)、data.C(Drag)会被Python解析为「调用data对象的C方法并传入Lift/Drag作为参数」,但你的DataFrame没有名为C的属性/方法,自然触发报错。
另外pandas仅支持对*符合Python标识符命名规则(仅含字母、数字、下划线,不能以数字开头、不能含特殊符号)*的列名使用df.列名的访问方式,C(Lift)含括号属于非法标识符,只能用方括号形式访问。
修复方法
将3处变量赋值的代码修改为正确的列访问写法即可,同时你当前图例声明了3个标签但仅绘制了2条曲线,多余的"AoA"标签建议删除避免显示异常:
import pandas as pd from matplotlib import pyplot as plt #Reading Airfoil data from file data = pd.read_csv('data.csv') dataset = data data['L/D ratio'] = data['C(Lift)']/data['C(Drag)'] # print(data.columns) 可选操作:运行这行可以确认所有列名和你写的完全一致,排除拼写、隐藏空格问题 x = data['AoA'] # 写法统一,避免AoA如果有隐藏空格也触发同类报错 y = data['C(Lift)'] # 修复列访问写法 z = data['C(Drag)'] # 修复列访问写法 plt.plot(x, y) plt.plot(x, z) plt.title("Angle of attack (X) Drag and Lift coeficcient relation") plt.xlabel('Angle of attack') plt.legend(["C(lift)", "C(drag)"]) # 删除多余的AoA标签 plt.ylabel('C(lift) and C(drag)') plt.show() # 补充这行可以直接弹出显示绘制的图像
内容的提问来源于stack exchange,提问作者MrsDalloway
相关产品推荐
相关产品推荐

