将读取CSV的Python图表函数改为接收列表作为输入
修改后的函数(输入为列表)
方案1:直接接收数值列表(最简洁)
如果已经拿到Total、Clean、Dirty三个指标的数值列表,直接传入即可,无需额外处理DataFrame:
def Graph(list1, list2): fig = make_subplots(rows=1, cols=3) list_of_attributes = ["Total", "Clean", "Dirty"] # 直接使用传入的数值列表 data_list = list1 data_list2 = list2 fig.add_trace(go.Bar(name='数据组1', x=list_of_attributes, y=data_list, marker=dict(color='red')), row=1, col=2) fig.add_trace(go.Bar(name='数据组2', x=list_of_attributes, y=data_list2, marker=dict(color='blue')), row=1, col=1) fig.show() # 调用示例:传入两个包含三个数值的列表 Graph([100, 70, 30], [120, 85, 35])
方案2:接收模拟CSV结构的列表(兼容原逻辑)
如果输入列表是模拟CSV的行数据(包含Name字段),可以保留原数据提取逻辑,仅替换文件读取步骤:
def Graph(first_data, second_data): fig = make_subplots(rows=1, cols=3) list_of_attributes = ["Total", "Clean", "Dirty"] # 将输入列表转为DataFrame,替代读取CSV的步骤 df = pd.DataFrame(first_data) df2 = pd.DataFrame(second_data) data_list = [] data_list2 = [] show_bar = df[df.Name == "SUM"] show_bar2 = df2[df2.Name == "SUM"] for n in list_of_attributes: data_list.append(int(show_bar[n])) data_list2.append(int(show_bar2[n])) fig.add_trace(go.Bar(name='数据组1', x=list_of_attributes, y=data_list, marker=dict(color='red')), row=1, col=2) fig.add_trace(go.Bar(name='数据组2', x=list_of_attributes, y=data_list2, marker=dict(color='blue')), row=1, col=1) fig.show() # 调用示例:传入模拟CSV行数据的列表 Graph( [{"Name": "SUM", "Total": 100, "Clean": 70, "Dirty": 30}, {"Name": "Other", "Total": 50, "Clean": 40, "Dirty": 10}], [{"Name": "SUM", "Total": 120, "Clean": 85, "Dirty": 35}, {"Name": "Other", "Total": 60, "Clean": 50, "Dirty": 10}] )
修改说明
- 参数替换:把原函数的文件名参数换成列表类型,根据你的实际数据结构选择对应方案。
- 移除文件读取:删除
pd.read_csv()相关代码,直接用传入的列表构建数据或直接使用数值列表。 - 调用调整:调用时传入符合要求的列表,不再传递文件名。
- 修复错误:修正了原代码调用时的拼写错误
Grapfh→Graph。
内容的提问来源于stack exchange,提问作者Stanko Maksimovic
相关产品推荐
相关产品推荐

