首先要安装pandas_datareader
,方法是pip install pandas_datareader
pandas_datareader是一个远程获取金融数据的Python工具,通过它可以方便获得下面公司和机构的数据:
Yahoo! Finance//雅虎金融
Google Finance//谷歌金融
Enigma//Enigma是一个公共数据搜索的提供商
St.Louis FED (FRED)//圣路易斯联邦储备银行
Kenneth French’s data library//肯尼斯弗兰奇资料库
World Bank//世界银行
OECD//经合组织
Eurostat//欧盟统计局
Thrift Savings Plan//美国联邦政府管理离退休的组织
Oanda currency historical rate //外汇经纪商
Nasdaq Trader symbol definitions //纳斯达克
#然后我们可以获取苹果公司的股票信息
import pandas_datareader as pdr
pdr.get_data_yahoo(‘AAPL’)
或者也可以用这种方法
import pandas as pd
import numpy as np
from pandas_datareader import data, wb
import datetime
import matplotlib.pyplot as plt
import matplotlib
利用DataReader进行抓取
# 定义获取数据的时间段
start = datetime.datetime(2010, 1, 1)
end = datetime.datetime(2019,12,15)
sh = data.DataReader("000001.SS", 'yahoo', start, end)
sh.head(5)
数据的的保存
sh.to_csv('sh.csv',header=None)
但是存储后的数据是这个样子的。
所以在再次调用的时候要加上列名和行名。
names = ['Date','Open','High','Low','Close','Volume','Adj Close']
sh1 = pd.read_csv('sh.csv',names=names,index_col='Date')
sh1.head(5)
#但是这时sh1的列并非datetime序列,所以要转换一下
sh1.index=pd.to_datetime(sh1.index)
删除列
# drop Volume列
sh = sh.drop('Volume',axis=1)
检查缺失值
print(sh.info())
或者可以
sh.isnull().values.any()
False
或者可以
sh.isnull().values.sum()
0
假设数据样本集中有缺失值,我们可以赋值给缺失的地方
sh['High'].fillna(sh['High'].mean(),inplace=True) #fill in with mean
sh['Low'].fillna(method='ffill',inplace=True) #fill in with value from previous row
sh['Close'].fillna(method='bfill',inplace=True) # fill in with value from the row behind