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