关于使用Python分析财务报表的场景,你需要知道的

优采云 发布时间: 2021-08-21 19:13

  关于使用Python分析财务报表的场景,你需要知道的

  总结

  1) 获取需要下载数据的股票代码列表

  2)寻找可以下载数据的数据接口

  3)下载并保存数据

  先写

  之前我在《所有A股市场金融指数数据汇总-知乎专栏》和《如何通过财务报表分析行业特征》文章中提到并使用了Python。从反应来看,大家对如何使用Python分析财务报表产生了浓厚的兴趣。这就是文章存在的原因。

  关于使用Python分析财务报表的场景,我认为主要有:1)同业分析:批量计算比较,即展示或导出同行业的财务指标; 2)选股:比如过滤近三年roe大于15%的公司,最近一期roe大于15%的所有公司等,如果是单个公司来分析,给大家看看我之前提供的《一款金融分析工具(Excel版)-知乎Column》。这个工具已经涵盖了主要的主题和变化,增长分析等,我现在也在用这个工具。一般来说,选择合适的工具也可以事半功倍。 .

  本文分为两部分,第一部分主要讲数据采集,第二部分主要讲通过财务指标进行对比分析

  有朋友问为什么不直接分享代码。事实上,完成财务分析所需的代码是如此简单,任何程序员写的都比我漂亮一百倍。可能是网工的财务分析比较好),但一方面要注意别有用心的人滥用接口,导致接口失效。另一方面,爬取别人的网站数据也不好,所以涉及的金融接口不适合公开。基于这些考虑,我之前分享的EXCEL工具也对代码部分进行了加密。同样,我不打算在本文中公开分享代码,而只是分享想法。有兴趣的可以在主财经网站找到下载界面。所有的接口都找到了。按照本文的思路,很容易得到整个市场上市公司的财务数据。如果实在找不到,可以私信我的邮箱,我可以提供我的示例代码供大家参考。

  至于您提供的电子邮件地址,我个人承诺,除了发送所需信息外,不会用于任何其他目的。不过也建议大家保护好自己的隐私,尽量不要在评论区留下*敏*感*词*和私信,方便我回复(我经常在评论区找不到,所以我不能还给你)

  这篇文章虽然简单,但还是需要一定的Python基础。如果你对Python一窍不通,但对它比较感兴趣,建议你搜索《廖雪峰Python3》教程(Pyhon2已过期不再使用),写的简单又免费。本文示例代码基于Python3.5,演示平台为JupyterNotebook。关于环境的搭建,在Windows系统上可以直接安装Anconda,一切都会为你安装。至于其他系统比如Linux,我假设你是一个IT人员。部署开发环境应该是小菜一碟。不做详细介绍。

  采集财务数据

  结束了。让我们回到正题。网络爬虫需要解决三个主要问题:

  1) 爬什么?

  2) 去哪里爬?

  3) 数据清洗和存储?

  一、获取所有股票代码

  为了抓取所有上市公司的财务数据,我们首先需要获取所有上市公司的公司代码。这在 Python 中有一个很好的解决方案。即使用途享金融库,可以获取所有股票代码、沪深300成分股等,如果没有安装,请使用pip install tushare安装途享金融库。官网:

  1)查看是否安装了tushare:

  创建一个新的 Notebook 并在单元格中输入 Python 代码

  import tushare as t

t.__version__

  输入后按SHIFT+ENTER运行,显示

  

  

  这是最新的0.8.2 版本。

  2) 获取股票列表(在另一个单元格中输入代码):

  stocks_df=t.get_stock_basics()

stocks_df

  这两句的作用是通过tushare金融数据库获取所有股票的列表和基本信息,并返回一些股票的基本信息,如地区、行业、总资产等。返回结果是一个 pandas.DataFrame 表。根据网络环境,此代码可能需要大约 5-6 秒。返回结果:

  

  

  返回值有20多个字段。我们只需要一部分数据。您可以使用 ix slice 剪切股票代码、名称、地区和行业。 (比如我们只截取name、area、industry字段)

  stock_df=stock_df.ix[:,['name','industry','area']]

# ix[行条件,列条件],这里表示截取所有行,name,industry,area字段,返回一个DATAFRAME

stock_df

  

  

  如果您对一些新股不敏感,可以将数据另存为csv/xls文件以备多次使用。

  

  

  注意:从文件中读取股票列表后,会自动处理股票代码前的“0”,循环下载数据时需加上“0”。

  

  

  股票清单从那时起就可用了。

  二、寻找合适的金融数据接口

  由于Python可以直接处理的文件格式是xml/csv/json/xls,我们尝试寻找可以提供这种格式文本的数据接口。

  此外,我更喜欢 csv 格式的文本。这段文字紧凑,可以说没有无用字节。但是得到的数据可能不是你需要的格式,所以你需要把数据转换成你需要的(为了说明数据清洗和转换的过程,我这里特地选择了一个xls格式的财务接口)

  2.1.查找数据接口

  很多财经网站都有下载财务报表的界面。由于我们已经获得了所有股票的列表,我们可以依次将股票代码传递到下载界面来获取所有股票的财务数据。让我们先找到可用的。财务数据接口。

  1)打开任意财经网站Stock专栏

  2)输入任意股票代码,如600660,进入股票详情页面

  3) 查找财务报表、财务数据、财务分析等词,进入细分栏目。

  4) 您应该能够在本节中找到、下载或导出函数。现在重要的是,右键单击链接并选择复制链接地址

  如果,

  下载数据是按钮而不是链接,可以先用Chrome下载数据,然后按

  Ctrl+J 查看下载历史,可以看到下载地址。如果还是不行,可能需要使用抓包工具之类的了。

  5) 分析链接地址并检查传入股票代码的位置。比如链接地址是:/report.jsp?id=600660 那么这个600660就是入股代码。

  2.2.通过程序下载数据

  得到接口地址后,我们就可以通过程序下载数据了。

  import requests as ro

stock_code = '600660'

bs_url='http://soft-f9.eastmoney.com/soft/gp15.php?code={co}01&exp=1'.format(co=stock_code)

ct = ro.get(bs_url).text

ct

  

  

  看到一堆乱码(其实不是乱码,是xml,后面再讲转成csv文本)

  三、数据清理与存储

  1)数据清洗

  得到的数据结构太复杂,需要清理和转换。之前,我在《几行代码从EXCELL获取有效数据》文章中演示了数据的清洗。请参考原文。再次重复描述。

  

  

  2) 数据保存

  财务报表是有效期相对较长的数据。为了避免每次使用时重复下载,可以将数据存储在本地。存储方式一般有文件方式或数据库方式。由于数据量不大,可以直接保存为csv文件。不过为了方便查阅,文件命名方式可以稍微标注一下,如将报告类型命名为-股票代码.csv,以便于阅读。

  四、编写Python程序下载数据

  #!/usr/bin/py

# filename=RPDownloader.py

from modules.Utils import e2csv

from modules.Fi import tcode

import pandas as Pd

import requests as ro

# 下载资产负债表

def downloadBSRP(stocklist):

num = 0

for c in stocklist:

bs_url='http://soft-f9.eastmoney.com/soft/gp15.php?code={co}01&exp=1'.format(co=tcode(c))

ct = ro.get(bs_url).text

to_file='bs{co}.csv'.format(co=tcode(c))

open(to_file,'w').write(e2csv(ct))

num = num + 1

return num

  函数的返回值是成功下载报告的数量(这里不做容错处理。如果下载量大,需要容错处理。另外,必须在程序后解决异常退出,下次再次进入,避免重复下载下载的文件。数据,另外,为了避免IP地址被封锁,下载后必须加一个延迟,这些内容留给大家下面学习),测试代码:

  

  

  显示已成功下载两张股票资产负债表。

  根据以上内容,还可以下载损益表和*敏*感*词*流量表。

  至此,财务数据采集一章结束。下一篇文章是关于如何使用这些数据进行财务分析。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线