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

如何用Pandas分组无循环生成带指定标题的散点图

按name分组生成散点图(无显式for循环)

你已经用groupby('name')完成了分组,接下来可以用apply()方法来避免写显式的for循环,自动为每个分组生成对应的散点图。下面是两种可行的方案:

方案1:使用Matplotlib + pandas apply

先看完整代码:

import pandas as pd
import matplotlib.pyplot as plt

# 创建你提供的DataFrame
data = {'name': ['Jason', 'Jason', 'Tina', 'Tina', 'Tina', 'Jason', 'Tina'], 
        'report_value': [4, 24, 31, 2, 3, 5, 10], 
        'coverage_id': ['m1', 'm2', 'm3', 'm4', 'm5', 'm6', 'm7']}
df = pd.DataFrame(data)

# 定义绘制单组散点图的函数
def plot_single_group(group):
    plt.figure(figsize=(6,4))  # 设置画布大小可选
    plt.scatter(x=group['coverage_id'], y=group['report_value'])
    # 用分组的name设置标题,iloc[0]取该组第一个name值(整组都是同一个name)
    plt.title(f"Scatter Plot for {group['name'].iloc[0]}")
    plt.xlabel('coverage_id')
    plt.ylabel('report_value')
    plt.tight_layout()  # 自动调整布局避免标签被截断
    plt.show()

# 对分组后的DataFrame应用绘图函数
df.groupby('name').apply(plot_single_group)

说明:

  • 我们先定义了一个负责绘制单个分组散点图的函数plot_single_group,它会接收每个分组后的子DataFrame作为参数
  • 调用groupby.apply()时,pandas会自动遍历每个分组,把每个子DataFrame传入函数执行,全程不需要手动写for循环
  • 每个分组会生成独立的绘图窗口,标题显示对应的人名,x轴是coverage_id,y轴是report_value

方案2:使用Seaborn(更简洁)

如果你熟悉Seaborn,可以用它的relplot函数一键生成分组子图,代码更简洁:

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

# 创建DataFrame
data = {'name': ['Jason', 'Jason', 'Tina', 'Tina', 'Tina', 'Jason', 'Tina'], 
        'report_value': [4, 24, 31, 2, 3, 5, 10], 
        'coverage_id': ['m1', 'm2', 'm3', 'm4', 'm5', 'm6', 'm7']}
df = pd.DataFrame(data)

# 生成分组散点图
sns.relplot(
    data=df,
    x='coverage_id',
    y='report_value',
    col='name',  # 按name字段分列生成子图
    kind='scatter',  # 指定绘制散点图
    facet_kws={
        'subplot_kws': {'title': lambda ax: f"Scatter Plot for {ax.name}"}
    }
)
plt.tight_layout()
plt.show()

说明:

  • relplot是Seaborn的高阶绘图函数,col='name'会自动按name字段拆分出两个子图(Jason和Tina各一个)
  • 通过facet_kws我们可以为每个子图设置对应的标题,直接取子图的name值即可
  • 这种方法完全不需要手动处理分组逻辑,代码量更少

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:41:53