python 如何从元组列表中创建 Dataframe ,其中元组是值?

lf3rwulv  于 2022-11-27  发布在  Python
关注(0)|答案(2)|浏览(232)

我有一个时间序列数据集,我在这个数据集上运行自动ARIMA模型,这个数据集有多个相互独立的列,所以基本上它就像多个自动ARIMA分析。
我目前的代码循环遍历 Dataframe 中的所有列,并将每列的p、d、q的顺序值存储在一个列表中。以逐行地存储 Dataframe 中每列的p、d、q值。
时间序列数据框

date                   Col1      Col2       Col3      Col4       Col5       Col6        Col7      Col8      Col9
2022-01-02 10:30:00     24         24        24.8      24.8       25         25         25.5      26.3      26.9   
2022-01-02 10:45:00     59         58         60       60.3       59.3       59.2       58.4      56.9      58.0   
2022-01-02 11:00:00     43.7       43.9       48        48        48.1       48.9       49        49.5      49.5

编码

##Auto arima
# def arimamodel(series):
autoarima_results=[]  
series = df.columns
for col in series:
    print("Auto Arima for : ", {col})
    ARIMA_model = pm.auto_arima(
        df[col],
        start_p=1,
        start_q=1,
        test="adf",
        max_p=5,
        max_q=5,
        d=None,
        trace=True,
        error_action="ignore",
        suppress_warnings=True,
        stepwise=True,
    )
    ARIMA_model.summary()
    autoarima_results.append(ARIMA_model.order)

这将返回一个如下所示的列表:【(1,1,0),(2,1,1),(1,1,1)】
例如,auto arima建议的p、d、q顺序为Col1:1、1、0,列2:2、1、1,第3列:1、1、1等等。
最后的输出应该是一个 Dataframe ,如下所示。其中每一行代表一列及其p、d、q值:

Results         pdq_values
Col1            (1,1,0)      
Col2            (2,1,1)    
Col3            (1,1,1)
watbbzwu

watbbzwu1#

让我们假设:

  • df有三列:"Col1", "Col2", "Col3"
  • autoarima_results == [(1, 1, 0), (2, 1, 1), (1, 1, 1)]之间的关系

那么,这里有一种方法可以做到这一点:
第一个

kkbh8khc

kkbh8khc2#

从ARIMA模型的输出开始,这里有一个不使用lambda函数的简单方法-
第一个

附加注解:

1.诀窍是把它当作字典(按键、Pandas将其作为一个列来读取,其中每个元组分别是每行的条目。另一种强制执行此行为的方法是将元组列表作为列表[l]的列表来传递。这将创建一个具有n列的 Dataframe ,然后您需要执行转置。

  1. 'Col' + (df.index.set_names('Results')+1).astype(str)一次执行4项操作。将索引列的名称更改为Results,向其添加1,将其转换为字符串,并在其前面添加Col。这将导致0,1,2..变为Col 1,Col 2,Col 3..

相关问题