首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Pandas Dataframe for Stock % change

Pandas Dataframe for Stock % change
EN

Stack Overflow用户
提问于 2016-12-22 04:24:57
回答 0查看 3.1K关注 0票数 3

我喜欢创建一个熊猫df跟踪每天,每周,每月和每年的股票变化%。下面是我想要的输出:

代码语言:javascript
运行
复制
stock	Close	Daily	WTD	MTD	YTD
0	IWM	137.960007	0.847956	0.847956	5.337105	25.406785
1	IBM	167.600006	0.551964	0.551964	4.867976	23.280625

下面是用于生成它的代码。我是python和panda的新手。有没有更好的方法来做到这一点。另外,我正在手动输入日期,它可以自动生成。

代码语言:javascript
运行
复制
import pandas as pd
from datetime import datetime, timedelta
from pandas_datareader import data,wb


start = datetime(2016, 1, 1)
end = datetime.today()

m_start = datetime(2016, 12, 1)

w_start = datetime(2016, 12, 19)

d_start = end - timedelta(days=2)


labels = ['stock','Close','Daily','WTD','MTD','YTD']

dat = []

for ticker in ticker_list:
    prices = data.DataReader(ticker, 'yahoo', start, end)
    closing_prices = prices['Close']
    change = 100 * (closing_prices[-1] - closing_prices[0]) / closing_prices[0]
    
    #get the monthly % gain
    m_price = data.DataReader(ticker, 'yahoo', m_start, end)
    m_close = m_price['Close']
    m_change = 100 * (m_close[-1] - m_close[0]) / m_close[0]

    #get the weekly % gain
    w_price = data.DataReader(ticker, 'yahoo', w_start, end)
    w_close = w_price['Close']
    w_change = 100 * (w_close[-1] - w_close[0]) / w_close[0]

    #get the Daily % gain
    d_price = data.DataReader(ticker, 'yahoo', d_start, end)
    d_close = d_price['Close']
    d_change = 100 * (d_close[-1] - d_close[0]) / d_close[0]
    
    dat.append((ticker,closing_prices[-1],d_change,w_change,m_change,change))
    

df2 = pd.DataFrame.from_records(dat,columns=labels)
df2

任何对改进这段代码的帮助都是非常感谢的。

谢谢

EN

回答

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

https://stackoverflow.com/questions/41271327

复制
相关文章

相似问题

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