首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环Python的时间序列分析

循环Python的时间序列分析
EN

Stack Overflow用户
提问于 2020-10-17 16:50:42
回答 1查看 618关注 0票数 0

我试图自动预测(1)每个州的总需求和(2)每个州每个客户的需求。所采用的统计方法是移动平均法。预测时间为1个月,ahead.The数据从包含5列的excel表中导入:客户、状态、产品、数量、订购日期。可以通过链接https://drive.google.com/file/d/1JlIqWl8bfyJ3Io01Zx088GIAC6rRuCa8/view?usp=sharing找到excel文件。

一个客户可以与不同的州联系在一起,例如,亚伦·伯格曼可以从华盛顿、得克萨斯州和俄克拉荷马州的商店购买椅子、艺术、手机。其他客户也有相同的购买行为。对于(1)我尝试使用For循环,但它没有工作。错误是Order_Date不在索引中

代码语言:javascript
复制
df = pd.read_excel("Sales_data.xlsx")
State_Name = df.State.unique()
Customer_Name = df.Customer.unique()

for x in State_Name:
   df = df[['Order_Date', 'Quantity']]
   df['Order_Date'].min(), df['Order_Date'].max()
   df.isnull().sum()

   df.Timestamp = pd.to_datetime(df.Order_Date, format= '%D-%M-%Y %H:%m')
   df.index = df.Timestamp
   df = df.resample('MS').sum()

   rolling_mean = df.Quantity.rolling(window=10).mean()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-17 22:21:48

考虑将for循环线转换为一个已定义的方法,并使用groupby调用它来返回时间序列。同时,注意pandas中的最佳实践

代码语言:javascript
复制
def rollmean_func(df):
   # BETTER COLUMN SUBSET
   df = df.reindex(['Order_Date', 'Quantity'], axis='columns')  

   # BETTER COLUMN ASSIGNMENT
   df['Timestamp'] = pd.to_datetime(df['Order_Date'], format= '%D-%M-%Y %H:%m')  
   df.index = df['Timestamp']

   df = df.resample('MS').sum()
   rolling_mean = df['Quantity'].rolling(window=10).mean()
  
   return rolling_mean

州一级

代码语言:javascript
复制
state_rollmeans = df.groupby(['State']).apply(rollmean_func)
state_rollmeans
# State      Timestamp 
# Alabama    2014-04-01     NaN
#            2014-05-01     NaN
#            2014-06-01     NaN
#            2014-07-01     NaN
#            2014-08-01     NaN
# ...
# Wisconsin  2017-09-01    10.6
#            2017-10-01     7.5
#            2017-11-01     9.7
#            2017-12-01    12.3
# Wyoming    2016-11-01     NaN
# Name: Quantity, Length: 2070, dtype: float64

客户水平

代码语言:javascript
复制
customer_rollmeans = df.groupby(['Customer_Name']).apply(rollmean_func)
customer_rollmeans
# Customer_Name       Timestamp 
# Aaron Bergman       2014-02-01    NaN
#                     2014-03-01    NaN
#                     2014-04-01    NaN
#                     2014-05-01    NaN
#                     2014-06-01    NaN
# ...
# Zuschuss Donatelli  2017-02-01    1.2
#                     2017-03-01    0.7
#                     2017-04-01    0.7
#                     2017-05-01    0.0
#                     2017-06-01    0.3
# Name: Quantity, Length: 26818, dtype: float64
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64404945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档