问题
df
Col1 Col2 Col3
12 10 3
3 5 2
100 12 10
and so on.....
Code to write adfuller test for ARIMA modeling in Time series. (will calculate p value for all the columns of dataframe df)
import statsmodels.tsa.stattools as tsa
adf_results = {}
for col in df.columns.values:
adf_results[col] = tsa.adfuller(df[col])
Using this code I am getting outputs in below format: (output when I type adf_result)
[IN] adf_result
[OUT]
{'Col1': (-4.236149193618492,
0.0005719678593039654, #This is the second value for this column/p value
0,
37,
{'1%': -3.6209175221605827,
'5%': -2.9435394610388332,
'10%': -2.6104002410518627},
138.66116123406837),
'Col2': (-3.707023043984407,
0.004015446231411924, #This is the second value for this column/p value
0,
37,
{'1%': -3.6209175221605827,
'5%': -2.9435394610388332,
'10%': -2.6104002410518627},
144.6019873130419),
'Col3': (1.8083888603589304,
0.9983655107052215, #This is the second value for this column/p value
0,
37,
{'1%': -3.6209175221605827,
'5%': -2.9435394610388332,
'10%': -2.6104002410518627},
-74.4384052778039)}
and so on.
In this question, second value/p value is
0.0005719678593039654, 0.004015446231411924 and 0.9983655107052215 for the 3 columns taken.
I need columns where second value >0.05 in one list and columns where p value <0.05 in another list
So one list will be col1 and col2 (second value/p value<0.05) and the other list will be col3 (second value/p value<0.05)
回答1:
import pandas as pd
from io import StringIO
data = StringIO("""
Col1 Col2 Col3
12 10 3
3 5 2
100 12 10
13 4 1
""")
# load data into data frame
df = pd.read_csv(data, sep=' ')
import statsmodels.tsa.stattools as tsa
adf_results = {}
for col in df.columns.values:
adf_results[col] = tsa.adfuller(df[col])
# loop over dictionary data
columns_big = []
columns_small = []
for key, value in adf_results.items():
if value[1] > 0.05:
columns_big.append(key)
else:
columns_small.append(key)
Output:
columns_big = ['Col1', 'Col3']
columns_small = ['Col2']
来源:https://stackoverflow.com/questions/60003348/extract-p-values-in-a-list-for-adfuller-testtest-for-stationarity-in-arima-tim