你的需求是典型的财务方面的数据收集、清理与分析,Python 在数据收集、清理与分析方面有大量的资源与应用案例。我不知道你具体的研究方向,我简单介绍一下。
数据收集
数据收集你可以理解为爬虫,用于把互联网上散落的数据收集起来。爬虫的基本流程就是请求目标网页,解析网页生成结构化数据,然后处理下一个网页。
数据收集是收集原始数据的过程,是我们后续分析的基础,财务方面可供收集的数据有公司财务报表、营收、负债、利润、纳税、社保等信息。
常用的库有 requests(请求) + beatifulsoup/lxml (解析),requests 用于请求获取网页内容,而 beatifulsoup/lxml 用于解析内容获取数据。
Scrapy 是一个简单快速的开源爬虫框架,可以编写几行代码就实现高并发、自动重试、数据处理的爬虫流程。
import scrapy
class BlogSpider(scrapy.Spider):
name = 'blogspider'
start_urls = ['https://blog.scrapinghub.com']
def parse(self, response):
for title in response.css('.post-header>h2'):
yield {'title': title.css('a ::text').get()}
for next_page in response.css('a.next-posts-link'):
yield response.follow(next_page, self.parse)
PySpider 是一个强大的 Web 爬虫系统,提供了 Web 管理界面,支持整合数据库作为存储后端,消息队列作为异步并发任务。
from pyspider.libs.base_handler import *
class Handler(BaseHandler):
crawl_config = {
}
@every(minutes=24 * 60)
def on_start(self):
self.crawl('http://scrapy.org/', callback=self.index_page)
@config(age=10 * 24 * 60 * 60)
def index_page(self, response):
for each in response.doc('a[href^="http"]').items():
self.crawl(each.attr.href, callback=self.detail_page)
def detail_page(self, response):
return {
"url": response.url,
"title": response.doc('title').text(),
}
Portia 是一款开源可视化爬虫框架,可以基于可视化 UI 开发爬虫而无需编写代码。
Goose 是一款自动化的新闻提取库,可自动提取新闻到结构化数据。
数据收集的目标是将网络上杂乱的数据收集到数据库,或者 json,csv,excel 等结构化的数据。
数据清洗、预处理、转换
数据收集好以后就需要做数据清洗、预处理和转换了,当然部分爬虫框架其实已经整合了这部分操作。这里只是一个流程,具体在哪里处理都可以。数据清洗主要是去除一些脏数据,因为网上抓取的数据参差不齐,我们需要去除一些质量较差的数据,以免影响后续的分析。预处理和转换主要是将数据进行一些简单的处理便于后续的分析,如原始数据是每个月独立的数据,而我们需要将它们合并为整合的数据。
Python 数据处理的库主要有以下几个:
Pandas 是一款强大灵活的数据处理分析工具,可以说是目前最流行的 Python 数据处理分析库了。
Numpy 提供了数据分析基本的数组功能,大部分情况下,你不需要直接使用 numpy,而是通过其他库使用(如 Pandas,Scipy)。Scipy 提供了一系列的数据和科学计算方法,如最优化、积分、傅立叶变换等等,对于转换为数学模型的问题,它分分钟就帮你解决,让你远离"枯燥”的数学实现。
Scikit-learn 是 Python 的机器学习库,提供了大量的基础分类、回归、聚类算法,如线性回归、SVM、朴素贝叶斯、Boosting 等等,将机器学习的处理分析过程转换为了几行代码。
上面是常用的基本处理分析库,掌握以上几种基本上就能覆盖大部分的应用场景,其他更高级复杂的我就不介绍了。
数据展示
最后最后的重点就是数据的展示了,在你辛辛苦苦忙活了大半天分析到结果之后,就是写 Paper,附上漂亮的数据图表了。毫不夸张的说,分析论文最后的评分基本取决于图表的质量。
Python 的可视化库非常多,我推荐一些使用人数多且教程丰富的
非常强大的 2D 可视化库,提供了类似于 Matlab 的操作接口,对于熟悉 matlab 的用户极易上手。官方提供了丰富的图表示例供学习。 />
Searborn 基于 MatlibPlot 并提供了高阶的变成接口,简单来说就是简化了 MatlibPlot 的图表绘制代码。官方的示例也很丰富。 />
ggplot 是基于 R 语言的 ggplot,与 MatlibPlot 的绘图思路不太一样,具体适应哪种因人而异。
Bokeh 最大的特定是可以帮你生成炫酷的交互式图表,不过这种图表仅能用于浏览器中。如果你需要创建一个展示型网站,那么 Bokeh 则非常有用。
以上的内容主要是抛砖引玉,库都是提升工作效率的工具,最重要的还是要确定好你的分析题目和思路,根据需求简单学习一下上面的库,边学边用,完全可以在两三个月内写出一片漂亮的论文。
最后祝你成功!