从多个csv文件组合箱图的时间序列数据

问题描述 投票:0回答:1

我从Netlogo模型运行的csv文件中有多个时间序列数据。我想将这些系列合并到一个数据框中,这样我可以做一个箱线图来查看不同模拟模型运行的变化。每个csv中的X值是时间迭代(整数)。 y值是模型中特定量度的值,例如人口数。因此,我可以使用concat加入csvs。 y变量有重复的列名。我的想法是将具有相同名称的列合并为一列数字列表(y值)。然后,我可以将x,y传递给箱线图,以绘制随时间变化的变量及其变化(中位数等)。数据的形式为:

x人口分组颜色0 0 0.00 0.00 0.001 1 74.47 42.48 40.962 2 74.46 42.48 40.96会成为x人口分组颜色0 0 [0.00,1.2] [0.00,5] [0.00,4]1 1 [74.47,3.2] [42.48,55] [40.96,55]2 2 [74.46,Nan] [42.48,NaN] [40.96,NaN]

[此数据框的倍数来自不同的csv文件(千个)。对于不同的运行/ csv,x轴值可以具有不同的最大时间值。

我如何组合数据帧,使得对于每个x值,对于给定的y(列),我得到一个带有y值列表的数据帧。对于早结束的运行,某些y值会有NaN。请注意是多个y列。请注意,每列都是一个单独的箱线图(覆盖在同一图中)。

我尝试过concat,join,merge,但是无法将具有相同或不同名称的多列转换为具有值列表而不是单个值的一列。

或者,是否有更好的方法来处理我要处理的数据?

python-3.x pandas dataframe plotly boxplot
1个回答
0
投票

答案最终比我预期的要简单。对如何执行此操作的见解来自this answer

  • 列出时间序列数据帧列表:dn = [d1,d2,d3,...]
  • 连接数据帧:dn = pd.concat(dl,axis = 1)
  • 使用值列表创建新列:
  • dn ['new'] = dn ['数据列名称'] .values.tolist()这将生成带有值列表的新列,我现在可以使用它们来绘制箱形图。
© www.soinside.com 2019 - 2024. All rights reserved.