首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pandas Yahoo股票API

Pandas Yahoo股票API
EN

Stack Overflow用户
提问于 2017-03-22 12:19:48
回答 4查看 1.5K关注 0票数 2

我是Pandas (和Python)的新手,正在尝试使用Yahoo API来计算股票价格。

我需要获取数据,遍历数据并获取日期和值。

以下是代码

代码语言:javascript
复制
df = pd.get_data_yahoo( symbols = 'AAPL',
     start = datetime( 2011, 1, 1 ),
     end = datetime( 2012, 1, 1 ),
     interval = 'm' )

结果是:

代码语言:javascript
复制
df
            Open        High         Low       Close     Volume
Date                                                                    
2011-01-03  325.640015  348.600006  324.840027  339.320007  140234700   
2011-02-01  341.299988  364.899994  337.720001  353.210022  127618700   
2011-03-01  355.470001  361.669983  326.259979  348.510010  125874700   

我可以获取日期,但不能获取月份日期值,因为它是索引(?)

如何最好地遍历此信息的数据?这是关于处理数据,而不是排序或搜索。

EN

回答 4

Stack Overflow用户

发布于 2017-03-22 16:01:59

如果您需要迭代数据帧中的行,并进行一些处理,那么pandas.DataFrame.apply()工作得很好。

代码:

一些模拟处理代码..。

代码语言:javascript
复制
def process_data(row):
    # the index becomes the name when converted to a series (row)
    print(row.name.month, row.Close)

测试代码:

代码语言:javascript
复制
import datetime as dt
from pandas_datareader import data

df = data.get_data_yahoo(
    'AAPL',
    start=dt.datetime(2011, 1, 1),
    end=dt.datetime(2011, 5, 1),
    interval='m')
print(df)

# process each row
df.apply(process_data, axis=1)

结果:

代码语言:javascript
复制
                  Open        High         Low       Close     Volume  \
Date                                                                    
2011-01-03  325.640015  348.600006  324.840027  339.320007  140234700   
2011-02-01  341.299988  364.899994  337.720001  353.210022  127618700   
2011-03-01  355.470001  361.669983  326.259979  348.510010  125874700   
2011-04-01  351.110016  355.130005  320.160004  350.130005  128252100   

            Adj Close  
Date                   
2011-01-03  43.962147  
2011-02-01  45.761730  
2011-03-01  45.152802  
2011-04-01  45.362682  

1 339.320007
2 353.210022
3 348.51001
4 350.130005
票数 1
EN

Stack Overflow用户

发布于 2017-03-23 14:20:49

这就是我在尝试使用来自雅虎的数据时,我的生活变得很棒的原因。首先是从dataframe索引中获取日期。

代码语言:javascript
复制
df = df.assign( date = df.index.date )

下面是我在处理数据时发现的其他一些有用的东西。

代码语言:javascript
复制
df [ 'diff' ] = df [ 'Close' ].diff( )
df [ 'pct_chg' ] = df [ 'Close' ].pct_change()
df [ 'hl' ] = df [ 'High' ] - df [ 'Low' ]

熊猫是很神奇的东西。

票数 0
EN

Stack Overflow用户

发布于 2017-03-23 23:31:54

我相信这对你应该是有效的。

代码语言:javascript
复制
import pandas_datareader.data as web
import datetime    

start = datetime.datetime(2013, 1, 1)
end = datetime.datetime(2016, 1, 27)
df = web.DataReader("GOOGL", 'yahoo', start, end)

dates =[]
for x in range(len(df)):
    newdate = str(df.index[x])
    newdate = newdate[0:10]
    dates.append(newdate)

df['dates'] = dates

print df.head()
print df.tail()

另外,请看下面的链接,了解如何做这些事情的更多有用的提示。

https://pandas-datareader.readthedocs.io/en/latest/remote_data.html#yahoo-finance

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

https://stackoverflow.com/questions/42942686

复制
相关文章

相似问题

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