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

如何在Python中基于Pandas数据绘制多站点CPC与rate_bid曲线?

没问题!我来帮你搞定这个多曲线绘制的需求。针对你提供的精简后的数据,我们可以用matplotlib或者seaborn来实现,两种常用的方案任你选:

方法一:使用Matplotlib手动分组绘制

这种方式自由度更高,适合需要自定义细节的场景:

import pandas as pd
import matplotlib.pyplot as plt

# 你的原始数据
data = [[0.5, 1, "mediaset"], [0.4, 1.2, "cnn"], [0.8, 1.7, "abcnews"], [0.9, 1.4, "cnn"], [0.4, 1.2, "mediaset"], [0.75, 1.67, "cnn"]]
df = pd.DataFrame(data,columns=['cpc','rate_bid','site'],dtype=float)

# 按site分组,遍历每个组绘制曲线
plt.figure(figsize=(8, 5))  # 设置图表大小
for site_name, group in df.groupby('site'):
    # 按cpc排序,避免曲线乱跳(因为原始数据的cpc顺序不是递增的)
    group_sorted = group.sort_values('cpc')
    plt.plot(group_sorted['cpc'], group_sorted['rate_bid'], label=site_name, marker='o')

# 添加图表元素
plt.xlabel('CPC')
plt.ylabel('Rate Bid')
plt.title('CPC vs Rate Bid by Site')
plt.legend()  # 显示图例
plt.grid(alpha=0.3)  # 添加网格线,提升可读性
plt.show()
方法二:使用Seaborn更简洁实现

Seaborn是基于Matplotlib的高阶库,代码更简洁,适合快速出图:

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

# 你的原始数据
data = [[0.5, 1, "mediaset"], [0.4, 1.2, "cnn"], [0.8, 1.7, "abcnews"], [0.9, 1.4, "cnn"], [0.4, 1.2, "mediaset"], [0.75, 1.67, "cnn"]]
df = pd.DataFrame(data,columns=['cpc','rate_bid','site'],dtype=float)

# 设置绘图风格
sns.set_style("whitegrid")

# 直接绘制多曲线,hue参数自动按site区分
plt.figure(figsize=(8, 5))
sns.lineplot(data=df, x='cpc', y='rate_bid', hue='site', marker='o', sort=True)

plt.xlabel('CPC')
plt.ylabel('Rate Bid')
plt.title('CPC vs Rate Bid by Site')
plt.show()

小提示

  • 我在代码里加了sort=True(Seaborn)或者手动排序(Matplotlib),因为你的原始数据中cpc不是按递增顺序排列的,排序后曲线会更连贯,避免出现“跳跃”的情况。
  • 如果不想显示标记点,去掉marker='o'参数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 10:47:29