New*_*hon 6 python dataframe pandas statsmodels
from statsmodels.tsa.seasonal import seasonal_decompose
def seasonal_decomp(df, model="additive"):
seasonal_df = None
seasonal_df = seasonal_decompose(df, model='additive')
return seasonal_df
seasonal_decomp(df)
Run Code Online (Sandbox Code Playgroud)
from statsmodels.tsa.seasonal import seasonal_decompose
def seasonal_decomp(df, model="additive"):
seasonal_df = None
seasonal_df = seasonal_decompose(df, model='additive')
return seasonal_df
seasonal_decomp(df)
Run Code Online (Sandbox Code Playgroud)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-93-00543113a58a> in <module>
----> 1 seasonal_decompose(df, model='additive')
e:\Anaconda3\lib\site-packages\pandas\util\_decorators.py in wrapper(*args, **kwargs)
197 else:
198 kwargs[new_arg_name] = new_arg_value
--> 199 return func(*args, **kwargs)
200
201 return cast(F, wrapper)
e:\Anaconda3\lib\site-packages\statsmodels\tsa\seasonal.py in seasonal_decompose(x, model, filt, period, two_sided, extrapolate_trend)
185 for s, name in zip((seasonal, trend, resid, x),
186 ('seasonal', 'trend', 'resid', None)):
--> 187 results.append(pw.wrap(s.squeeze(), columns=name))
188 return DecomposeResult(seasonal=results[0], trend=results[1],
189 resid=results[2], observed=results[3])
e:\Anaconda3\lib\site-packages\statsmodels\tools\validation\validation.py in wrap(self, obj, columns, append, trim_start, trim_end)
216 new.append(append if c is None else str(c) + '_' + append)
217 columns = new
--> 218 return pd.DataFrame(obj, columns=columns, index=index)
219 else:
220 raise ValueError('Can only wrap 1 or 2-d array_like')
e:\Anaconda3\lib\site-packages\pandas\core\frame.py in __init__(self, data, index, columns, dtype, copy)
495 mgr = init_dict({data.name: data}, index, columns, dtype=dtype)
496 else:
--> 497 mgr = init_ndarray(data, index, columns, dtype=dtype, copy=copy)
498
499 # For data is list-like, or Iterable (will consume into list)
e:\Anaconda3\lib\site-packages\pandas\core\internals\construction.py in init_ndarray(values, index, columns, dtype, copy)
201
202 # _prep_ndarray ensures that values.ndim == 2 at this point
--> 203 index, columns = _get_axes(
204 values.shape[0], values.shape[1], index=index, columns=columns
205 )
e:\Anaconda3\lib\site-packages\pandas\core\internals\construction.py in _get_axes(N, K, index, columns)
460 columns = ibase.default_index(K)
461 else:
--> 462 columns = ensure_index(columns)
463 return index, columns
464
e:\Anaconda3\lib\site-packages\pandas\core\indexes\base.py in ensure_index(index_like, copy)
5612 index_like = copy_func(index_like)
5613
-> 5614 return Index(index_like)
5615
5616
e:\Anaconda3\lib\site-packages\pandas\core\indexes\base.py in __new__(cls, data, dtype, copy, name, tupleize_cols, **kwargs)
409
410 elif data is None or is_scalar(data):
--> 411 raise cls._scalar_data_error(data)
412 elif hasattr(data, "__array__"):
413 return Index(np.asarray(data), dtype=dtype, copy=copy, name=name, **kwargs)
TypeError: Index(...) must be called with a collection of some kind, 'seasonal' was passed
Run Code Online (Sandbox Code Playgroud)
seasonal_decompose(df, model='additive')整个数据帧都被传递到seasonal_decompose,但您只能传递一列和一个日期时间索引。.trend每列的 ,然后将数据合并到单个数据帧中pandas.concat。from statsmodels.tsa.seasonal import seasonal_decompose
import pandas as pd
# dataframe from sample; in this case the index is already a datetime
df = pd.DataFrame.from_dict(data, orient='index')
# if the index is not a datetime format
df.index = pd.to_datetime(df.index)
# perform seasonal decompose in a list comprehension on each column, return dataframe
def season_decom(df, model='additive'):
return pd.concat([pd.DataFrame({col: seasonal_decompose(df[col], model=model).trend}) for col in df.columns], axis=1)
# call function
df_seasonal = season_decom(df)
# df_seasonal.head()
LA NY Miami Seattle San Diego
2020-01-23 NaN NaN NaN NaN NaN
2020-01-24 NaN NaN NaN NaN NaN
2020-01-25 NaN NaN NaN NaN NaN
2020-01-26 0.571429 0.0 0.000000 0.000000 0.0
2020-01-27 0.571429 0.0 0.142857 0.000000 0.0
2020-01-28 0.714286 0.0 0.142857 0.285714 0.0
2020-01-29 0.857143 0.0 0.142857 0.285714 0.0
2020-01-30 0.428571 0.0 0.285714 0.285714 0.0
2020-01-31 0.857143 0.0 0.428571 0.285714 0.0
2020-02-01 0.857143 0.0 0.428571 0.285714 0.0
Run Code Online (Sandbox Code Playgroud)
seasonal_decompose每一列.applydf_seasonal = df.apply(lambda x: seasonal_decompose(x, model='additive').trend)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9890 次 |
| 最近记录: |