我的Python心路历程 第十期 (10.3 雅虎金融股票day数据转化为csv)
上期实践了如何获取通信达数据,但先天不足是无法获取Adj Close的取值,今天这一实践课堂可以解决这个忧虑。
首先,通过公司股票代码名称获取数据并存储在csv文件中。数据来源于雅虎金融,先获取美股数据试试看,中国A股数据能否获取待进一步验证。话不多说上代码:
#!/usr/bin/python
# coding=UTF-8
# 基本信息
import os
import numpy as np
import pandas as pd
from pandas import Series, DataFrame
# 股票数据读取
import pandas_datareader as pdr
# 可视化
import matplotlib.pyplot as plt
#import seaborn as sns
#%matplotlib inline
# time
from datetime import datetime
#将雅虎股票day数据转化为csv,便于pandas分析;以获取苹果数据为例
def yhday2csv(comName):
#获取绝对路径,data为当前文件夹
curpath = os.path.join(os.path.dirname(__file__), 'data')
#获取公司名执行代码
for comnames in comName:
#获取公司名
fileName = comnames + '.csv'
file_object_path = os.path.join(curpath, fileName)
#获取数据并存在csv文件中 [Date Open High Low Close Adj Close Volume]
start = datetime(2016, 1, 1)
#company = comnames
top_tech_df = pdr.get_data_yahoo(comnames, start=start)
top_tech_df.to_csv(file_object_path)
return
def main():
#公司股票代码名称
company = ['GOOG'] #'GOOG', 'AAPL', 'MSFT', 'AMZN', 'FB']
#通过公司股票代码名称获取数据并存储在csv文件中
#yhday2csv(company)
return
if __name__ == '__main__':
main()
最为关键的是,这样获取的数据中是以带Adj Close值的,但从通信打下载的日线数据中没有该值,为此而苦恼了很久呢。
其次,试一下上面说的中国Agu数据获取,不是不知道,试一下得知效果不错呢。
代码更改如下:
#公司股票代码名称
company = ['600000.SS']
#yahoo的api是国际性的,是支持国内沪深股市的,但代码稍微变动一下,如浦发银行的代号是:600000.SS。规则是:上海市场末尾加.ss,深圳市场末尾加.sz。
好,数据源的问题终于可以算是尘埃落定了。
1、我的Python心路历程 第十期 (10.1 实践实例之股票数据分析)
2、我的Python心路历程 第十期 (10.2 通达信股票day数据转化为csv)