首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我如何根据过去的X个数据量连续计算一些东西?(更多详情请参阅信息)

我如何根据过去的X个数据量连续计算一些东西?(更多详情请参阅信息)
EN

Stack Overflow用户
提问于 2019-02-11 06:22:36
回答 1查看 32关注 0票数 0

目标:

根据过去的50天,计算每天的50日移动平均值。我可以计算整个数据集的平均值,但我正在尝试基于过去的50 days...with来计算平均值,当然,它每天都在变化!

代码语言:javascript
运行
复制
import numpy as np
import pandas_datareader.data as pdr
import pandas as pd

# Define the instruments to download. We would like to see Apple, Microsoft and the S&P500 index.

ticker = ['AAPL']


#Define the data period that you would like

start_date = '2017-07-01'
end_date = '2019-02-08'

# User pandas_reader.data.DataReader to load the stock prices from Yahoo Finance. 

df = pdr.DataReader(ticker, 'yahoo', start_date, end_date)

# Yahoo Finance gives 'High', 'Low', 'Open', 'Close', 'Volume', 'Adj Close'.

#Export Close PRice, Volume, and Date from yahoo finance 

CloseP = df['Close']
CloseP.head()

Volm = df['Volume']
Volm.head()

Date = df["Date"] = df.index

#create a table with Date, Close Price, and Volume

Table = pd.DataFrame(np.array(Date), columns = ['Date'])
Table['Close Price'] = np.array(CloseP)
Table['Volume'] = np.array(Volm)




print (Table)

#create a column that contiosuly calculates 50 day MA
#This is what I can't get to work! 

MA = np.mean(df['Close'])
Table['Moving Average'] = np.array(MA)


print (Table)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-11 07:46:57

首先,请不要使用CamelCase来命名您的变量,否则它们看起来就像类名。

接下来,使用merge()而不是np.array方式连接您的数据帧:

代码语言:javascript
运行
复制
>>> table = CloseP.merge(Volm, left_index=True, right_index=True)
>>> table.columns = ['close', 'volume']  # give names to columns
>>> table.head(10)
                 close      volume
Date
2017-07-03  143.500000  14277800.0
2017-07-05  144.089996  21569600.0
2017-07-06  142.729996  24128800.0
2017-07-07  144.179993  19201700.0
2017-07-10  145.059998  21090600.0
2017-07-11  145.529999  19781800.0
2017-07-12  145.740005  24884500.0
2017-07-13  147.770004  25199400.0
2017-07-14  149.039993  20132100.0
2017-07-17  149.559998  23793500.0

最后,使用rolling()mean()dropna()的组合来计算移动平均值:

代码语言:javascript
运行
复制
>>> ma50 = table.rolling(window=50).mean().dropna()
>>> ma50.head(10)
                 close      volume
Date
2017-09-12  155.075401  26092540.0
2017-09-13  155.398401  26705132.0
2017-09-14  155.682201  26748954.0
2017-09-15  156.025201  27248670.0
2017-09-18  156.315001  27430024.0
2017-09-19  156.588401  27424424.0
2017-09-20  156.799201  28087816.0
2017-09-21  156.952201  28340360.0
2017-09-22  157.034601  28769280.0
2017-09-25  157.064801  29254384.0

请参考上述API调用的文档,以获取有关其用法的更多信息。祝好运!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54621696

复制
相关文章

相似问题

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