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

使用Pandas过滤CSV数据后Matplotlib绘图无内容的问题

修复空折线图问题

问题根源

你的空图表问题确实是嵌套列表导致的。xs.append(list(dataFrame['Year'])) 会把年份列表作为单个元素塞进xs,最终xs变成[[2000, 2001, ...]]这种嵌套结构,ys同理。而matplotlib的plt.plot()需要一维列表/数组作为输入,无法识别嵌套数据,所以只会生成空框架。

解决方案

1. 修正列表赋值方式

不要用append,直接将DataFrame的列转为一维列表:

# 替换原有的append代码
xs = list(dataFrame['Year'])
ys = list(dataFrame['Count'])

此时xs和ys会是[2000, 2001, ...]和[120, 150, ...]这种一维结构,符合绘图要求。

2. 简化绘图(可选)

直接用pandas内置的绘图功能,无需手动提取列表,更简洁不易出错:

%matplotlib inline
import matplotlib.pyplot as plt
dataFrame.plot(x='Year', y='Count', kind='line')
plt.show()

完整修正代码

import pandas as pd

name = "Anna"
gender = "F"
state = "CA"

# 读取CSV
dataFrame = pd.read_csv("../Kursmaterialien/data/names.csv")

# 过滤数据(建议用==替代str.contains,避免匹配无关值)
dataFrame = dataFrame[(dataFrame['Name'] == name) & 
                     (dataFrame['State'] == state) & 
                     (dataFrame['Gender'] == gender)]

# 提取一维列表
xs = list(dataFrame['Year'])
ys = list(dataFrame['Count'])

# 绘图
%matplotlib inline
import matplotlib.pyplot as plt
plt.plot(xs, ys)
plt.xlabel('Year')
plt.ylabel('Count')
plt.title(f'{name} (CA, {gender}) - Count Over Years')
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 09:45:30