如何从CSV的列中筛选少量数据绘制折线图?
问题原因
你执行pivot操作后,原始数据里的state列已经被转换为透视表的列索引,此时透视表不存在名为state的普通列,因此df['state'].isin(['al','ar','fl','wa'])的筛选逻辑完全不生效,导致绘图结果不符合预期。
解决方案
有两种常用实现方式,按需选择即可:
方案1:透视前先筛选(更推荐)
先从原始数据中过滤出你需要的州,再执行透视操作,性能更高且逻辑更清晰:
target_states = ['al','ar','fl','wa'] # 先筛选目标州数据 df_filtered = df[df['state'].isin(target_states)] # 再做透视 df_pivot = df_filtered.pivot(index='year', columns='state', values='fatal') # 直接绘图即可,只会显示指定州的折线 df_pivot.plot()
方案2:透视后直接筛选列
如果你已经完成了全量数据的透视,不需要重新跑透视逻辑,直接提取目标州对应的列即可:
# 先完成全量透视 df_pivot = df.pivot(index='year', columns='state', values='fatal') target_states = ['al','ar','fl','wa'] # 提取目标州对应的列 df_pivot_filtered = df_pivot[target_states] # 绘图 df_pivot_filtered.plot()
内容的提问来源于stack exchange,提问作者Chutewu
相关产品推荐
相关产品推荐

