python Panads获取股票数据及处理

pandas库在金融量化分析中优势明显,
它提供了专门处理金融数据的模块,pandas-datareader包,
所以在使用之前需要导入pandas-datareader模块

import pandas_datareader.data as web

具体获取股票数据的接口为web.DataReader()。下面分别介绍下接口的几个关键参数:

  • 第一个参数:指定股票代码,如果是苹果公司这样的国外股票,股票代码直接用"AAPL"缩写表示,如果是国内A股市场的股票代码,则需要在代码末尾加上市场代码,比如上证股票在股票代码后面加上.SS,深圳股票在股票代码后面加上.SZ(创业板、中小板为深圳交易所下子板块)。

  • 第二个参数:指定股票数据的网站,DataReader可从多个金融网站上获取到股票数据,"yahoo"指定从雅虎网站获取股票数据,"google"指定从谷歌网站获取股票数据。

  • 第三、四个参数:指定股票数据的起始时间,默认是从2010年1月1日至今。

从雅虎网站获取股票信息例程

import pandas_datareader.data as web
import datetime
#获取上证指数的2017.1.1日至今的交易数据
df_stockload = web.DataReader("000001.SS", "yahoo", datetime.datetime(2017,1,1), datetime.date.today())

print(df_stockload.head())  # 查看前几行
"""
              High     Low    Open   Close  Volume  Adj Close
Date                                                         
2017-01-03  3136.5  3105.3  3105.3  3135.9  141600     3135.9
2017-01-04  3160.1  3130.1  3133.8  3158.8  167900     3158.8
2017-01-05  3168.5  3154.3  3157.9  3165.4  174700     3165.4
2017-01-06  3172.0  3153.0  3163.8  3154.3  183700     3154.3
2017-01-09  3173.1  3147.7  3148.5  3171.2  171700     3171.2
"""
print(df_stockload.tail())  # 查看末尾几行
"""
              High     Low    Open   Close  Volume  Adj Close
Date                                                         
2019-03-04  3090.8  3006.9  3015.9  3027.6  525600     3027.6
2019-03-05  3055.0  3009.4  3019.9  3054.2  424100     3054.2
2019-03-06  3103.8  3050.1  3060.4  3102.1  555000     3102.1
2019-03-07  3129.9  3075.0  3103.7  3106.4  583800     3106.4
2019-03-08  3075.0  2969.6  3038.3  2969.9  577900     2969.9
"""

print (df_stockload.columns)#查看列索引信息
"""
Index(['High', 'Low', 'Open', 'Close', 'Volume', 'Adj Close'], dtype='object')
"""
print (df_stockload.index)#查看行索引信息
"""
DatetimeIndex(['2017-01-03', '2017-01-04', '2017-01-05', '2017-01-06',
               '2017-01-09', '2017-01-10', '2017-01-11', '2017-01-12',
               '2017-01-13', '2017-01-16',
               ...
               '2019-02-25', '2019-02-26', '2019-02-27', '2019-02-28',
               '2019-03-01', '2019-03-04', '2019-03-05', '2019-03-06',
               '2019-03-07', '2019-03-08'],
              dtype='datetime64[ns]', name='Date', length=530, freq=None)
"""
print(df_stockload.shape)#查看形状
"""
(530, 6)
"""
# 接下来查看各列交易数据描述性的统计信息,如最小值、最大值、均值、标准差等
print (df_stockload.describe())#查看各列数据描述性统计
"""
         High     Low    Open   Close    Volume  Adj Close
count   530.0   530.0   530.0   530.0     530.0      530.0
mean   3079.9  3044.5  3061.5  3064.8  172601.3     3064.8
std     281.0   286.0   283.5   284.1   62788.0      284.1
min    2488.5  2440.9  2446.0  2464.4   88200.0     2464.4
25%    2802.3  2754.8  2776.8  2786.1  134200.0     2786.1
50%    3164.6  3134.3  3148.2  3153.9  159200.0     3153.9
75%    3290.1  3261.5  3274.5  3275.9  193600.0     3275.9
max    3587.0  3534.2  3563.6  3559.5  583800.0     3559.5
"""

# 接下来查看交易数据概览信息,如每列数据的类型、个数、是否存在缺失等等
print(df_stockload.info())#查看缺失及每列数据类型
"""

DatetimeIndex: 530 entries, 2017-01-03 to 2019-03-08
Data columns (total 6 columns):
High         530 non-null float64
Low          530 non-null float64
Open         530 non-null float64
Close        530 non-null float64
Volume       530 non-null int64
Adj Close    530 non-null float64
dtypes: float64(5), int64(1)
memory usage: 29.0 KB
None
"""

pandas封装了matplotlib绘图功能,因此我们可以在pandas中更直接、更简单的方式绘制数据曲线,在使用时需要导入matplotlib库中的pyplot模块,此处以绘制上证指数的收盘价为例,用可视化的方式了解下上证指数走势,如下所示:

import matplotlib.pyplot as plt

#绘制收盘价
df_stockload.Close.plot(c='b')
plt.legend(['Close','30ave','60ave'],loc='best')
plt.show()

python Panads获取股票数据及处理_第1张图片

你可能感兴趣的:(python量化,python,panads,获取股票,处理)