2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > python资本市场财务数据分析_Python对股票财务数据进行可视化分析

python资本市场财务数据分析_Python对股票财务数据进行可视化分析

时间:2018-12-13 01:37:11

相关推荐

python资本市场财务数据分析_Python对股票财务数据进行可视化分析

对股票财务数据进行分析是非常必要,但因股票数据量很大,单凭浏览网页或在软件客户端查看是非常浪费精力的一件事,通过Python进行网页数据提取,将财务数据图表化会更加直观。以下代码在Python 3.6环境下通过:

注:使用注意,将此代码保存为一个文本文件扩展名为.py,在这个文件同目录下建立二个子目录:数据-分析、数据-下载,也可以更改代码中的路径,否则运行时会报错。

import matplotlib.pyplot as plt

import matplotlib as mpl

from pandas.core.frame import DataFrame

import time

import Chinese as fnt

import pandas as pd

import numpy as np

from matplotlib.ticker import MultipleLocator, FormatStrFormatter

from pylab import *

stock_code = '600366'

# 1、基本面数据下载

tables = pd.read_html("http://quotes./f10/zycwzb_" + stock_code + ",year.html")

i = 0

for table in tables:

if i == 4:

df_tmp = DataFrame(table)

df_tmp.insert(0, '分类',

['报告日期', '基本每股收益(元)', '每股净资产(元)', '每股经营活动产生的现金流量净额(元)', '主营业务收入(万元)', '主营业务利润(万元)', '营业利润(万元)',

'投资收益(万元)', '营业外收支净额(万元)', '利润总额(万元)', '净利润(万元)', '净利润(扣除非经常性损益后)(万元)', '经营活动产生的现金流量净额(万元)',

'现金及现金等价物净增加额(万元)', '总资产(万元)', '流动资产(万元)', '总负债(万元)', '流动负债(万元)', '股东权益不含少数股东权益(万元)',

'净资产收益率加权(%)'])

df_tmp.to_excel('./数据-下载/' + stock_code + '-' + time.strftime("%Y%m", time.localtime()) + '-网易-主要财务指标-年度.xlsx')

elif i == 5:

DataFrame(table).to_excel(

'./数据-下载/' + stock_code + '-' + time.strftime("%Y%m", time.localtime()) + '-网易-主要财务指标-盈利能力.xlsx')

elif i == 6:

DataFrame(table).to_excel(

'./数据-下载/' + stock_code + '-' + time.strftime("%Y%m", time.localtime()) + '-网易-主要财务指标-偿还能力.xlsx')

elif i == 7:

DataFrame(table).to_excel(

'./数据-下载/' + stock_code + '-' + time.strftime("%Y%m", time.localtime()) + '-网易-主要财务指标-成长能力.xlsx')

elif i == 8:

DataFrame(table).to_excel(

'./数据-下载/' + stock_code + '-' + time.strftime("%Y%m", time.localtime()) + '-网易-主要财务指标-营运能力.xlsx')

elif i == 1:

DataFrame(table).to_excel(

'./数据-下载/' + stock_code + '-' + time.strftime("%Y%m", time.localtime()) + '-网易-主要财务指标-基本资料.xlsx')

i += 1

# 2、数据可视化分析

'''

项目及索引值

0 报告日期

1 基本每股收益(元)

2 每股净资产(元)

3 每股经营活动产生的现金流量净额(元)

4 主营业务收入(万元)

5 主营业务利润(万元)

6 营业利润(万元)

7 投资收益(万元)

8 营业外收支净额(万元)

9 利润总额(万元)

10 净利润(万元)

11 净利润(扣除非经常性损益后)(万元)

12 经营活动产生的现金流量净额(万元)

13 现金及现金等价物净增加额(万元)

14 总资产(万元)

15 流动资产(万元)

16 总负债(万元)

17 流动负债(万元)

18 股东权益不含少数股东权益(万元)

19 净资产收益率加权(%)

'''

# 设置绘图全局变量

mpl.rcParams['axes.titlesize'] = 10

mpl.rcParams['xtick.labelsize'] = 9

mpl.rcParams['ytick.labelsize'] = 9

mpl.rcParams['axes.labelsize'] = 9

mpl.rcParams['xtick.major.size'] = 0

mpl.rcParams['ytick.major.size'] = 0

mpl.rcParams['lines.linewidth'] = 0.5

mpl.rcParams['lines.markersize'] = 5

fnt.set_ch('YH', 12)

stock_name = \

pd.read_excel('./数据-下载/' + stock_code + '-' + time.strftime("%Y%m", time.localtime()) + '-网易-主要财务指标-基本资料.xlsx').ix[

0, 0].replace(' ', '')

df_jbcwzb = pd.read_excel(

'./数据-下载/' + stock_code + '-' + time.strftime("%Y%m", time.localtime()) + '-网易-主要财务指标-年度.xlsx')

data_reportDate = df_jbcwzb.ix[0, 1:].sort_index(ascending=False)

plt.figure(figsize=(18, 11))

# plt.tight_layout()

plt.subplots_adjust(left=0.1, bottom=0.1, right=0.9, top=0.9, hspace=0.8, wspace=0.6)

# 1、图一:基本每股收益

ax = plt.subplot2grid((3, 1), (0, 0))

data_jbmgsy = df_jbcwzb.ix[1, 1:].replace('--', '0').sort_index(ascending=False)

data_mgjzc = df_jbcwzb.ix[2, 1:].replace('--', '0').sort_index(ascending=False)

data_mgxjl = df_jbcwzb.ix[3, 1:].replace('--', '0').sort_index(ascending=False)

plt.plot(data_reportDate, data_jbmgsy.astype(float), '-+r', label='每股收益')

plt.plot(data_reportDate, data_mgjzc.astype(float), '--om', label='每股净资产')

plt.plot(data_reportDate, data_mgxjl.astype(float), '-.*b', label='每股现金流')

plt.legend()

plt.xticks(data_reportDate, rotation=90)

plt.grid()

# plt.xlabel('年报日期')

plt.ylabel('每 股 指 标')

plt.title(stock_name + '-每股指标')

# 2、图二:扣非净利润

ax2 = plt.subplot2grid((3, 1), (1, 0))

data_kfjlr = df_jbcwzb.ix[11, 1:].replace('--', '0').sort_index(ascending=False)

data_jlr = df_jbcwzb.ix[10, 1:].replace('--', '0').sort_index(ascending=False)

data_zyywsr = df_jbcwzb.ix[4, 1:].replace('--', '0').sort_index(ascending=False)

data_zyywlr = df_jbcwzb.ix[5, 1:].replace('--', '0').sort_index(ascending=False)

plt.plot(data_reportDate, data_zyywsr.astype(float), '-+m', label='主营收入')

plt.plot(data_reportDate, data_zyywlr.astype(float), '--*g', label='主营利润')

plt.plot(data_reportDate, data_jlr.astype(float), '-.+b', label='净利润')

plt.plot(data_reportDate, data_kfjlr.astype(float), ':or', label='扣非净利润')

plt.legend()

plt.xticks(data_reportDate, rotation=90)

# plt.xlabel('年报日期')

plt.ylabel('营 收 利 润')

plt.title(stock_name + '-营收利润')

plt.grid()

# 3、图二:总资产

ax3 = plt.subplot2grid((3, 1), (2, 0))

data_zzc = df_jbcwzb.ix[14, 1:].replace('--', '0').sort_index(ascending=False)

data_zfz = df_jbcwzb.ix[16, 1:].replace('--', '0').sort_index(ascending=False)

plt.plot(data_reportDate, data_zzc.astype(float), '--+r', label='总资产')

plt.plot(data_reportDate, data_zfz.astype(float), '-.ob', label='总负债')

plt.legend()

plt.xticks(data_reportDate, rotation=90)

# plt.xlabel('年报日期')

plt.ylabel('资 产 负 债')

plt.title(stock_name + '-资产负债')

plt.grid()

plt.savefig('./数据-分析/' + stock_name + '-' + time.strftime("%Y%m", time.localtime()) + '-网易-主要财务指标-年度.png', dpi=600)

plt.show()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。