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

如何将pandas读取的实验CSV按日期拆分多个DataFrame实现数据可视化

代码问题原因

你原有代码的核心问题是每次循环都会覆盖nom变量,上一轮循环生成的日期DataFrame会被直接清空替换,所以最终只会保留最后一次循环的结果。同时你用range(final_date)的写法假设日期是从0开始的连续整数,若实际日期存在缺失、不是从0起始或是字符串格式,会出现匹配不到数据的问题。

解决方案

你可以用字典存储不同日期对应的DataFrame,也可以直接用pandas内置的groupby功能满足拆分、可视化需求,不需要手动循环拆分:

方案1:拆分存入字典(适合需要单独处理各日期数据的场景)

import pandas as pd

# 读取CSV
x = pd.read_csv('prova.csv', sep=';')

# 创建空字典存储各日期DataFrame
date_df_dict = {}
# 遍历所有唯一的日期值
for date_val in x['Date'].unique():
    date_df_dict[f'date_{date_val}'] = x[x['Date'] == date_val].copy()

# 调用示例:获取日期为1的所有数据
df_date_1 = date_df_dict['date_1']

方案2:直接用groupby绘图(更适配你的可视化需求,无需提前拆分)

你要实现不同日期不同颜色/标签的绘图,直接遍历groupby分组对象即可完成,代码更简洁:

import pandas as pd
import matplotlib.pyplot as plt

x = pd.read_csv('prova.csv', sep=';')

fig, ax = plt.subplots(figsize=(10,6))
# 遍历分组,自动为不同日期分配不同颜色和标签
for date, group_df in x.groupby('Date'):
    ax.scatter(group_df['P1'], group_df['P2'], label=f'日期{date}')
# 添加图例、坐标轴标签
ax.legend(fontsize=10)
ax.set_xlabel('P1')
ax.set_ylabel('P2')
plt.show()

如果需要绘制折线图、柱状图等其他类型的图表,只需要替换scatter为对应的绘图方法即可。

内容的提问来源于stack exchange,提问作者Llorenç Macià Cid

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 11:36:03