【问题标题】:Preparing dataset TimeSeries data准备数据集时间序列数据
【发布时间】:2021-06-17 04:29:36
【问题描述】:

所以我正在做一个项目,我有一些想要预测的时间序列数据。问题是我的数据集由取自水源的不同水样组成,并且存在于单个 csv 文件中。

我的数据集看起来有点像这样:

Date         Sample_Name        pH    temp    etc...

2009-01-01    ABC1              7.2    12
2009-01-02    ABC2              5.5    11
.
.
.
2015-01-05    ABC1              8.9    13
2015-01-05    ABC4              8.8    13

所以 ABC1 和 ABC2 是不同的样本,每个月都有信息记录。我想做的是明确地将 ABC1 输入模型,但我不知道该怎么做。我可以使用这行代码按名称对样本进行分组:

abc1 = df.loc[df['Sample_Name'] == "ABC1"]

如何将此类数据输入模型? 我没有决定最终模型,但它可能是编码器/解码器(注意)或 LSTM。

每个样本包含大约 70 行,我有超过 100 个样本。

【问题讨论】:

  • 你的模型以什么格式输入?
  • 我想使用 3D 输入来喂它。样本、时间步长和特征(每个样本我有 15 个特征)。
  • 熊猫在 3D 方面做得并不好。对于上面的示例 df,您能否向我们展示您希望模型的输入看起来如何
  • 输入:数据集中每个样本的[日期、pH、温度、其他参数等...]。通过样本,我的意思是 ABC1 从头到尾的每一行,在我的例子中,它是从 2009 年到 2015 年的 70 行。很抱歉,如果这让您感到困惑,但我以前从未使用过时间序列数据。

标签: pandas time-series


【解决方案1】:

让我试一试,因为目前尚不完全清楚所需的输出是什么,但希望能引导您朝着正确的方向前进

加载您的示例:

from io import StringIO
data = StringIO(
'''
Date         Sample_Name        pH    temp
2009-01-01    ABC1              7.2    12
2009-01-02    ABC2              5.5    11
2015-01-05    ABC1              8.9    13
2015-01-05    ABC4              8.8    13
'''
)
df = pd.read_csv(data, sep = '\s+')

然后我们可以使用groupby 方法创建一个字典,以每个样本名称为键,对应的值是该样本的数据框,可以输入到模型中:

input_dict = {key:df.drop(columns = 'Sample_Name').reset_index(drop = True) for key, df in df.sort_values('Date').groupby('Sample_Name')}

您可以通过样本名称访问单个样本 dfs,例如使用

input_dict['ABC1']

你得到对应的df:

    Date        pH  temp
0   2009-01-01  7.2 12
1   2015-01-05  8.9 13

【讨论】:

猜你喜欢
  • 2021-10-30
  • 1970-01-01
  • 2019-07-06
  • 2019-01-02
  • 1970-01-01
  • 1970-01-01
  • 2013-02-03
  • 1970-01-01
  • 2016-09-06
相关资源
最近更新 更多