【Python】使用pandas_datareader获取股票信息并进行可视化分析

文章目录

  • pandas_datareader
    • DataReader方法
    • 数据说明
  • 数据获取和分析

pandas_datareader

Pandas 库提供了从财经网站获取金融数据的API接口,可作为商业交易股票数据获取的另一种方法,该在urllib3客户端库基础上实现了身份访问网站的股票。需要注意的是当前模块已经进入pandas-datareader包中。

pip install pandas_datareader

pandas_datareader官网

pandas_datareader github

import pandas_datareader.data as web
import datetime as dt
start = dt.datetime(2021,1,1)#获取数据的时间段-起始时间
#end = dt.datetime(2021,6,10)#获取数据的时间段-结束时间
end = dt.date.today()#结束时间为当前时间
stockData = web.DataReader("603927.SS", "yahoo", start, end)#股票为中科软,数据源为雅虎
stockData.to_csv('StockData/603927.csv')

DataReader方法

import pandas_datareader.data as web
df=web.DataReader("600797.SS", "yahoo", "2021-06-01", "2021-06-10")
print(df)

第一个参数为股票代码或其它数据代码,国内股市采用的输入方式“股票代码”+“对应股市”,上证股票在股票代码后面加上“.SS”,深圳股票在股票代码后面加上“.SZ”。
第二个参数是数据源,yahoo雅虎,iexIEX,av-dailyAlpha Vantage,naverNaver韩国股市。
第三、四个参数为数据的起止时间。

数据说明

【Python】使用pandas_datareader获取股票信息并进行可视化分析_第1张图片

Data:时间
High:最高价格
Low:最低价格
Open:开盘价
Close:收盘价
Volume:成交量
Adj Close:复权收盘价

数据获取和分析

可以在连板网获取股票代码

import bs4 as bs
import requests#python的http客户端
import pickle#用于序列化反序列化
import datetime as dt
import pandas as pd
import pandas_datareader.data as web
from matplotlib import style
import matplotlib.pyplot as plt
from matplotlib.pyplot import MultipleLocator
import os

def DownloadStock():
    style.use('ggplot')
    start = dt.datetime(2018,6,10)
    end = dt.datetime(2021,6,10)
    #根据股票代码从雅虎财经读取该股票在制定时间段的股票数据
    df = web.DataReader("600797.SS", 'yahoo',start,end)
    #保存为对应的文件
    df.to_csv('StockData/{}.csv'.format("600797"))

def PlotStock(data):
    plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
    x = data['Date']
    plt.plot(x, data['Close'], label='Close')
    plt.plot(x, data['Open'], label='Open')
    plt.title('2018-2021年股票')
    plt.xlabel('Date:2018-2021')
    plt.legend(loc='best')
    plt.savefig(r'StockData/01.jpg')
    plt.show()

def udoPlotStock(data):
    plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
    plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
    x = data['Date']
    plt.plot(x, (data['Close']-data['Open']))
    plt.title('2018-2021年股票')
    plt.xlabel('Date:2018-2021')
    plt.ylabel('涨跌',)
    plt.savefig(r'StockData/02.jpg')
    plt.show()

if __name__ == '__main__':
    #获取三年股票数据
    albbData=DownloadStock()
    data=pd.read_csv(r'StockData/600797.csv')
    #股票交易时间序列图
    PlotStock(data)
    #股票涨跌
    udoPlotStock(data)

你可能感兴趣的:(Python,python,股票,pandas)