如何绘制DataFrame中type为A的count随date变化的散点图?
解决type为'A'的count随时间变化散点图绘制问题
你的代码存在几个关键问题:
- 列名大小写不匹配:原DataFrame的列是
type,你代码中写的Type,这是触发KeyError的主要原因之一 - groupby用法错误:
groupby('Type' == 'A')完全不符合语法,筛选type为A的数据不需要分组,直接用布尔索引即可 - x轴列名错误:原数据中时间列是
date,你代码里写了不存在的Year_Month,这也是KeyError的来源
正确实现步骤:
- 先筛选出
type为'A'的数据子集 - (可选但推荐)确保
date按月份顺序排列,避免字符串排序导致的顺序混乱 - 基于子集绘制散点图,x轴为
date,y轴为count
完整代码示例:
import pandas as pd import matplotlib.pyplot as plt # 初始化你的DataFrame(如果已有可跳过) df = pd.DataFrame({ 'type': ['A', 'A', 'A', 'B', 'B', 'C', 'C'], 'date': ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul'], 'count': [456, 121, 333, 123, 123, 189, 789], 'CLASS': [0, 1, 1, 1, 1, 1, 1] }) # 筛选type为'A'的数据集 df_a = df[df['type'] == 'A'] # 设置月份的有序类别,保证x轴按时间顺序排列 month_order = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul'] df_a['date'] = pd.Categorical(df_a['date'], categories=month_order, ordered=True) # 用matplotlib直接绘制散点图 plt.scatter(x=df_a['date'], y=df_a['count']) plt.xlabel('月份') plt.ylabel('Count数值') plt.title('Type A的Count随月份变化散点图') plt.show() # 或者用pandas的plot方法快速绘制 # df_a.plot.scatter(x='date', y='count', title='Type A的Count随月份变化散点图') # plt.xlabel('月份') # plt.ylabel('Count数值') # plt.show()
代码说明:
- 布尔索引
df[df['type'] == 'A']精准筛选出目标数据,是处理这类需求的标准方式 - 将
date转为有序类别,确保x轴按实际月份顺序展示,避免字符串默认排序可能带来的混乱(比如'dec'会排在'jan'前面) - 两种绘图方式任选其一,pandas的plot方法更简洁,matplotlib则提供更多自定义空间
内容的提问来源于stack exchange,提问作者x_X_X_x
相关产品推荐
相关产品推荐

