数据收集,清理,转化,可视化处理,模块化处理,音频/图像识别以及网页相关。
如果你是一名数据科学家或数据分析师,或者只是对这一行当感兴趣,你都应该了解下文中这些广受欢迎且非常实用的Python库。
本文将会对列出15个Python库并对它们一一进行简介。笔者相信读者对于其中的大部分都已熟知,但如果有没听说过的,笔者强烈建议读者们去了解一下。
文中的15个库将被分为几个不同的类型进行介绍,分别是:
- 数据收集
- 数据清理和转化
- 数据可视化
- 数据模块化
- 音频和图像识别
- 网页
数据收集
大部分数据分析项目都起始于数据收集和提取。在有些情况下,当为公司处理现存问题时,公司可能会提供相关的数据组。但有些时候,可能并没有现成的数据,需要数据工程师自行收集。最常见的情况就是,数据工程师需要从网上自行寻找数据。
1. Scrapy
scrapy.org
要想编写一个Python网络爬虫来从网页上提取信息,Scrapy可能是大部分人第一个想到的Python库。例如,使用者可以提取某城市所有餐厅的评论或是收集网购网站上某一种产品的所有评论。
对于该库最常见的用法是利用它来识别出现在网站页面上那些有趣的信息模式,无论这些信息是以URL的形式出现还是以XPath的形式出现。一旦理清了这些信息的模式,Scrapy就可以协助使用者自动提取所需信息,并将其整理为表格或JSON格式的数据结构。
使用pip即可轻而易举地安装Scrapy。
2. Beautiful Soup
www.crummy.com
Beautiful Soup是另一个可以用来搜刮网站内容的Python库。业界普遍认为,学习Beautiful Soup所需时间比学习Scrapy所需时间要短很多。
除此之外,Beautiful Soup更适合应用于规模相对较小的问题和/或一次性的任务。Scrapy要求使用者开发自己的“爬虫”并通过命令行进行操作,而使用Beautiful Soup只需将其功能导入计算机中并联机使用即可。因此,使用者甚至可以将Beautiful Soup应用于自己的Jupyternotebook。
3. Selenium
www.selenium.dev
Selenium设计者的初衷是将其打造成一个自动网站测试框架,但开发者们发现将其用作网页数据抓取工具的效果更佳。
使用者在感兴趣的网站上已经进行了交互行为之后,Selenium一般能派上用场。比如说,使用者可能需要在网站上注册一个账户,登陆自己的账户,再点击几个按钮或是链接才能找到自己想要的内容。上述链接被定义为JavaScript函数。在这一情况下,要应用Scrapy或者Beautiful Soup可能都不是很便捷,但使用Selenium就可以轻而易举地完成这一过程。
但应当注意,Selenium比普通的抓取库运行速度要慢得多。这是因为Selenium会将Chrome这样的浏览器初始化并模拟浏览器代码定义的所有行为。
因此,在处理URL模式或Xpaths时,最好还是使用Scrapy或者Beautiful Soup,不到万不得已不要使用Selenium。
数据清理和转化
对于数据清理和转化在数据分析和数据科学中的重要意义,笔者认为无需赘述。而且,也已经有很多出色的Python库能够完美地处理这一问题。笔者将选择几个作为数据科学家或分析师不可不知的进行简要介绍。
4. Pandas
pandas.pydata.org
笔者觉得在这篇文章中提Pandas有点多余了,只要是处理过数据的从业者,就不可能没用过Pandas。
使用者可以运用Pandas操控处于Pandas数据框架内的数据。Pandas还内置巨量的函数,帮助使用者进行数据转换。
无需多言,要想学好Python,Pandas必不可少。
5. Numpy
numpy.org
无论是Python的普通用户,还是数据科学家和分析师,Numpy都和Pandas一样,是一个不可或缺的Python库。
Numpy将Python的对象列表拓展成了全面的多维度序列。同时,Numpy还内置了海量的数学函数,这些函数几乎能满足使用者所有的运算要求。通常情况下,使用者可以将Numpy序列用作矩阵并进行矩阵运算。
笔者认为,大部分的数据科学家开始写Python代码时,第一步都是输入以下内容:
import numpy as np import pandas as pd
因此,说以上两个库是Python使用者中最受欢迎的无可厚非。
6. Spacy
spacy.io
Spacy可能没有上文的两个库一样名声远扬。Numpy和Pandas主要用于处理数值型数据和结构型数据,而Spacy则能够帮助使用者将自由文本转化为结构型数据。
Spacy是最受欢迎的自然语言处理库之一。从购物网站上抓取了大量的产品评论后需要从中提取有用的信息才能对它们进行分析。Spacy含有大量的内置功能,这些功能能对使用者的工作提供大量帮助。例如词法分析器,已命名个体识别以及特定文本检测。
Spacy还有一大亮点,即它支持多种语言版本。其官网上声称该库提供超55种语言版本。
数据可视化
数据可视化是数据分析中不可或缺的环节。只有将结果进行可视化处理才能对数据内容进行解释。
7. Matplotlib
matplotlib.org
Matplotlib是最全面的Python数据可视化库。有人认为Matplotlib的界面很难看,但笔者认为,作为最基础的Python数据可视化库,Matplotlib能为使用者的可视化目标提供最大的可能性。使用JavaScript的开发者们也有各自偏好的可视化库,但当所处理的任务中涉及大量不被高级库所支持的定制功能时,开发者们就必须用到D3.js。Matplotlib也是如此。
8. Plotly
plotly.com
虽然笔者坚信要进行数据可视化,就必须得掌握Matplotlib使用方法,但大多数情况下读者更愿意使用Plotly,因为使用Plotly只需要写最少的代码就能得出最多彩缤纷的图像。
无论使用者是是想构造一张3D表面图,或是一张基于地图的散点图,又或是一张交互性动画图,Plotly都能在最短的时间内满足要求。
Plotly还提供一个表格工作室,使用者可以将自己的可视化上传到一个在线存储库中以便未来进行编辑。
数据模块化
一般将从事模块化的数据分析师称为高级分析师。现如今,机器学习已经不是什么别开生面的概念了。Python通常被认为是机器学习最常用的语言。因此也有大量出色的库支持在Python中使用。
9. Scikit Learn
scikit-learn.org
在沉溺于“深度学习”之前,所有人都应当从使用Scikit Learn来开启自己的机器学习之旅。
Scikit Learn有六大主要模块,功能如下:
- 数据预处理
- 维度缩减
- 数据回归
- 数据分类
- 数据聚类分析
- 模型选择
笔者确信,只要能用好Scikit Learn,就已经算得上是一名优秀的数据科学家了。
10. PyTorch
pytorch.org
PyTorch是由Facebook发布的一个开源库,用作Python的公用机器学习框架。
与Tensorflow相比,PyTorch的语句更加适用于Python。正因此,学习使用PyTorch也更加容易。
作为一个专注于深度学习的库,PyTorch还具有非常丰富的应用程序接口函数和内置函数来协助数据科学家更加快捷地训练自己的深度学习模型。
11. Tensorflow
www.tensorflow.org
Tensorflow是由谷歌推出的另一个开源机器学习库。
Tensorflow最受欢迎的功能便是Tensorboard上的数据流图像。Tensorboard是一个基于网页自动生成的仪表盘,它将数据学习流和结果进行了可视化处理,这一功能对于排错和展示都十分有用。
音频和图像识别
机器学习不仅能够处理数字,同时也能帮助处理音频和图像(视频往往被认为是很多帧图像组合在一起)。因此处理这些多媒体数据时,上述机器学习库远远不够。以下是一些适用于Python的音频和图像识别库。
12. Librosa
librosa.github.io
Librosa是一个非常强大的音频和声音处理Python库。Librosa可以用来从音频段中提取各个部分,例如韵律,节奏以及节拍。
像Laplacia分割这样极度复杂的算法在使用了Librosa之后只需几行代码就能轻而易举的运用。
13. OpenCV
opencv.org
OpenCV是最常用的图像和视频识别库。毫不夸张地说,OpenCV能让Python在图像和视频识别领域完全替代Matlab。
OpenCV提供各种应用程序接口,同时它不仅支持Python,还支持Java和Matlab。OpenCV出色的处理能力使其在计算机产业和学术研究中都广受好评。
网页
Python在被广泛运用于数据科学领域前,曾经可是网页开发领域的宠儿。因此,也有很多用于网页开发的库。
14. Django
www.djangoproject.com
要想使用Python来开发一个网页服务后端,Django一直都是不二之选。Django的设计理念便是,能用几行代码就建立一个网站的高级框架。
Django直接与大多数知名数据库相连,这样使用者就可以省下建立连接和数据模型开发的时间。Django的使用者只需专注于业务逻辑而不需担心受创建、更新、读取和删除(Create,update,retrieve and delete, CURD)的操控,因为Django是一个由数据库驱动的框架。
15. Flask
flask.palletsprojects.com
Flask是一个用于Python的轻量级网页开发框架。其最宝贵的特点是能够轻而易举地进行能够满足任何需求的定制化处理。
有很多提供网站UI的知名Python库和Python工具都是使用Flask构建的,例如Plotly Dash和Airflow。而这些网站之所以使用Flask,正是由于其轻量级的特点。
总结
还有许多出色的Python库也应当出现在此文中。看到使用Python的团体如此生机勃勃,笔者总是心潮澎湃。
人生苦短,及时Python!