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

如何在Jupyter中实现带下拉选择器的参数日Accepted量折线图?

实现交互式折线图的正确方案

先修正你代码里的问题

你的代码存在几个关键错误:

  • 语法错误:df.["data1"]多了一个点,且列名应为date 1(注意空格)
  • 大小写不匹配:数据中是Accepted,你写的是accepted,会导致统计结果为0
  • 未按日期分组:你只计算了全局的Accepted数量,无法绘制随日期变化的折线图
  • y是单个数值,折线图需要与日期对应的序列值

完整实现步骤

1. 导入依赖库

import pandas as pd
import matplotlib.pyplot as plt
from ipywidgets import Dropdown, interact

2. 数据预处理(含示例数据构造)

先把你提供的表格转为DataFrame,并将日期列转为datetime类型:

# 构造你的示例数据
data = {
    "param 1": ["Accepted", "nor Accepted", "Accepted", "not Accepted", "Accepted", "Accepted"],
    "param b": ["Accepted", "Accepted", "Accepted", "not Accepted", "Accepted", "Accepted"],
    "date 1": ["2023-06-26 09:59:09"]*6,
    "date 2": ["2023-06-26 09:59:09"]*6
}
df = pd.DataFrame(data)

# 转换日期列为datetime格式,方便后续分组统计
df["date 1"] = pd.to_datetime(df["date 1"])
df["date 2"] = pd.to_datetime(df["date 2"])

3. 编写绘图函数

该函数会根据选择的参数,按日期分组统计Accepted的数量并绘制折线图:

def plot_accepted_trend(selected_param):
    plt.figure(figsize=(10, 6))
    if selected_param == "param 1 (基于date 1)":
        # 按date 1分组,统计每组中param 1为Accepted的数量
        count_data = df.groupby("date 1")["param 1"].apply(lambda x: (x == "Accepted").sum())
        count_data.plot(kind="line", marker="o", color="#1f77b4")
        plt.title("param 1中Accepted的数量趋势", fontsize=20)
        plt.xlabel("date 1", fontsize=15)
    elif selected_param == "param b (基于date 2)":
        # 按date 2分组,统计每组中param b为Accepted的数量
        count_data = df.groupby("date 2")["param b"].apply(lambda x: (x == "Accepted").sum())
        count_data.plot(kind="line", marker="o", color="#ff7f0e")
        plt.title("param b中Accepted的数量趋势", fontsize=20)
        plt.xlabel("date 2", fontsize=15)
    
    plt.ylabel("Accepted数量", fontsize=15)
    plt.grid(alpha=0.3)
    plt.tick_params(axis='both', labelsize=12)
    plt.show()

4. 创建交互式下拉选择器

用ipywidgets实现下拉选择功能,绑定绘图函数:

# 定义下拉选项
dropdown_options = ["param 1 (基于date 1)", "param b (基于date 2)"]
# 创建下拉组件
selector = Dropdown(
    options=dropdown_options,
    value=dropdown_options[0],
    description="选择参数:",
    style={"description_width": "initial"}
)
# 绑定交互
interact(plot_accepted_trend, selected_param=selector)

说明

  • 运行上述代码后,Jupyter中会出现一个下拉选择框,切换选项即可查看对应参数的折线图
  • 如果你的实际数据包含多个不同日期,分组统计后会自动展示随日期变化的趋势(当前示例数据日期都相同,所以是一条水平线)

内容的提问来源于stack exchange,提问作者Сергей Корягин

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 19:57:00