Leitura e visualização de dados de estoque com base em python (gráfico de linha K)

1. Leia os dados

TuShare é um pacote de interface de dados financeiros python gratuito e de código aberto . Realize principalmente o processo de coleta, limpeza e processamento de dados até o armazenamento de dados financeiros, como ações, o que pode fornecer aos analistas financeiros dados rápidos, limpos e diversos que são fáceis de analisar, reduzindo muito sua carga de trabalho em termos de fontes de dados. Torná-los mais focados na pesquisa e implementação de estratégias e modelos. Considerando as vantagens do pacote Python pandas na análise quantitativa financeira, a maioria dos formatos de dados retornados por TuShare são do tipo pandas DataFrame, o que é muito conveniente para análise e visualização de dados com pandas / NumPy / Matplotlib. Claro, se você está acostumado a usar o Excel ou bancos de dados relacionais para análise, você também pode usar a função de armazenamento de dados do TuShare para salvar todos os dados localmente para análise. A pedido de alguns usuários, a partir da versão 0.2.5, TuShare é compatível com Python 2.xe Python 3.x. Alguns códigos foram refatorados e alguns algoritmos foram otimizados para garantir aquisição de dados eficiente e estável.
O poder do python está nos irmãos de um monte de bibliotecas de terceiros. O mesmo vale para ações. Hoje vou falar sobre esta biblioteca. É a biblioteca tushare (endereço oficial: http://tushare.org/), e você pode usá-la diretamente Instalação Pip, tome a instalação do Windows como exemplo.
Para o processo de instalação, consulte meu blog anterior: Clique para ver o tutorial da biblioteca de terceiros de instalação do python com comandos.
Vou usar a instalação do notebook jupyter como um exemplo para mostrar a você: Após a
Insira a descrição da imagem aqui
instalação ser concluída, a próxima etapa é obter os dados do estoque.

import tushare as ts
df = ts.get_k_data('000002',start = "2010-01-01",end = '2020-01-01')
df.set_index('date',inplace = True)
df.head()

Obtendo a exibição do resultado dos dados:
Insira a descrição da imagem aqui
Nosso caso a seguir é realizado através do Vanke A, então vamos obter os dados do Vanke A primeiro e obter a empresa listada Vanke de 01-01-2009 a 01-01-2019 por meio da função get_k_data (). Para dados de estoque de nível diário, o parâmetro "000002" é o código de estoque da Vanke.

import tushare as ts
df = ts.get_k_data('000002',start ='2009-01-01',end='2019-01-01')
df.head()

Exibição do resultado:
'' Insira a descrição da imagem aqui
Observação: preço de abertura, preço de fechamento de fechamento, alto é o preço mais alto, baixo é o preço mais baixo, volume é o volume de negociação e código é o código de estoque.
Se você deseja obter dados e gravá-los em uma pasta de trabalho do Excel, podemos pressionar o seguinte código:

df.to_excel('D:\\Python\\股价数据.xlsx',index = False)

Nota: O parâmetro de índice False significa que o índice da linha original é ignorado e um arquivo Excel denominado "stock price data.xlsx" é gerado após a execução.
Por exemplo, eu configurei para salvar o arquivo em D: \ Python \. Você não precisa defini-lo. Contanto que você saiba onde está a pasta padrão, você deve encontrá-la facilmente.

2. Desenhe tendências de estoque

Desenhe um gráfico de ações abaixo:

import tushare as ts
import matplotlib.pyplot as plt

df = ts.get_k_data('000002',start ='2009-01-01',end='2019-01-01')
plt.rcParams['font.sans-serif']=['simHei']#用来正常显示中文
df['close'].plot(title = '股票走势图')

Exibição de resultados: O
Insira a descrição da imagem aqui
acima usa a função plot (), também podemos usar diretamente algumas funções da biblioteca Matplotlib.

import tushare as ts
from datetime import datetime
import matplotlib.pyplot as plt
df = ts.get_k_data('000002',start ='2009-01-01',end='2019-01-01')
#要注意细节,调整日期格式,让横坐标的显示效果更佳清洗,美观
df['date'] = df['date'].apply(lambda x:datetime.strptime(x,'%Y-%m-%d'))
plt.plot(df['date'],df['close'])
plt.show()

Mostrar resultados de corrida:
Insira a descrição da imagem aqui

3. Desenhe um gráfico de velas

1. Instale a biblioteca para desenhar gráficos de linha K

Existem dois tipos de linha K. Se o preço de fechamento do dia for maior do que o preço de abertura, o preço sobe no dia, o que é chamado de linha Yang. Normalmente pintado com uma linha vermelha.
Pelo contrário, o preço sobe no dia, que é denominado Yinxian, que normalmente é desenhado como uma linha verde.
Python também usa uma biblioteca ao desenhar velas, a biblioteca mpl_finance, consulte o tutorial de instalação push anterior, a função candlestick_ochl () na biblioteca desenha gráficos de velas e os seguintes casos são escritos em python para referência.
Captura de tela da instalação bem-sucedida: (método de instalação do notebook jupyter)
Insira a descrição da imagem aqui
2. Obter dados

import tushare as ts
import matplotlib.pyplot as plt
import mpl_finance as mpf
import seaborn as sns  #引入图表美化库
sns.set()#激活
df = ts.get_k_data('000002','2019-06-01','2019-09-30')
df.head()

Resultados operacionais:
Insira a descrição da imagem aqui
3. Ajuste de formato de data e conversão de tabela

from matplotlib.pylab import date2num
import datetime  #导入日期格式涉及的两个库

def date_to_num(dates):
    num_time = []
    for date in dates:
        date_time = datetime.datetime.strptime(date,'%Y-%m-%d')
        num_date = date2num(date_time)
        num_time.append(num_date)
    return num_time
df_arr = df.values  #将DataFrame中数据转换成二维数组
df_arr[:,0] = date_to_num(df_arr[:,0])#  将二维数组中日期转换成数字格式

4. Desenhe a linha K

fig,ax = plt.subplots(figsize = (15,6))
mpf.candlestick_ochl(ax,df_arr,width = 0.6,colorup = 'r',colordown = 'g',alpha = 1.0)
plt.grid(True)#绘制网格线
ax.xaxis_date()#设置x轴的刻度线格式为常规日期格式

Exibição de resultados em execução:
Insira a descrição da imagem aqui
adicione gráfico de média móvel: considere a adição de média móvel de 5 dias e média móvel de 10 dias como exemplo,

df['MA5'] = df['close'].rolling(5).mean()
df['MA10'] = df['close'].rolling(10).mean()

Veja como um gráfico:

plt.rcParams['font.sans-serif'] = ['SimHei'] #设置正常中文显示
fig,ax = plt.subplots(figsize = (15,6))
mpf.candlestick_ochl(ax,df_arr,width = 0.6,colorup = "r",colordown = 'g',alpha = 1.0) #绘制K直线
plt.plot(df_arr[:,0],df["MA5"])
plt.plot(df_arr[:,0],df['MA10'])
plt.grid(True)  #绘制网格线
plt.title('万科A')#标题
plt.xlabel('日期')#X轴
plt.ylabel('价格')#y轴
ax.xaxis_date()

Resultado da operação:
Insira a descrição da imagem aqui
adicionamos um gráfico de barras de volume diário com base no acima. código mostrado abaixo:

fig,axes = plt.subplots(2,1,sharex = True,figsize = (15,8))
ax1,ax2 = axes.flatten()

#绘制第一张子图:K线图和均线图
mpf.candlestick_ochl(ax1,df_arr,width = 0.6,colorup = 'r',colordown = 'g',alpha = 1.0)
ax1.plot(df_arr[:,0],df['MA5'])  #绘制5日均线
ax1.plot(df_arr[:,0],df['MA10'])#绘制10日均线

ax1.set_title('万科A')
ax1.set_ylabel('价格')
ax1.grid(True)
ax1.xaxis_date()

#绘制第二张子图:每日成交柱形图
ax2.bar(df_arr[:,0],df_arr[:,5])
ax2.set_xlabel('日期')
ax2.set_ylabel('成交量')
ax2.grid(True)
ax2.xaxis_date()

Resultados
Insira a descrição da imagem aqui
corridos : Este artigo apresenta principalmente o uso de três ferramentas de análise de dados, NumPy, pandas e Matplotlib, para desenhar imagens e usar dados de estoque para realizar algumas operações. Você também pode usar esses dados para fazer alguma análise de dados e prática.

Acho que você gosta

Origin blog.csdn.net/qq_44176343/article/details/109903512
Recomendado
Clasificación