本文为你介绍24种涵盖端到端数据科学生命周期的Python库。
Python有以下三个特点:
• 易用性和灵活性
• 全行业高接受度:Python无疑是业界最流行的数据科学语言
• 用于数据科学的Python库的数量优势
数据科学
文中提及了用于数据清理、数据操作、可视化、构建模型甚至模型部署(以及其他用途)的库。这是一个相当全面的列表,有助于你使用Python开启数据科学之旅。
用于不同数据科学任务的Python库
用于数据收集的Python库:
- Beautiful Soup
- Scrapy
- Selenium
用于数据清理和数据操作的Python库:
- Pandas
- PyOD
- NumPy
- Spacy
用于数据可视化的Python库:
- Matplotlib
- Seaborn
- Bokeh
用于建模的Python库:
- Scikit-learn
- TensorFlow
- PyTorch
用于模型解释的Python库:
- Lime
- H2O
用于语音处理的Python库:
- Librosa
- Madmom
- pyAudioAnalysis
用于图像处理的Python库:
- OpenCV-Python
- Scikit-image
- Pillow
作为数据库的Python库:
- Psycopg
- SQLAlchemy
用于模型部署的Python库:
- Flask
用于数据收集的Python库
你是否曾遇到过这样的情况:缺少解决问题的数据?这是数据科学中一个永恒的问题。这也是为什么学习提取和收集数据对数据科学家来说是一项非常重要的技能。数据提取和收集开辟了前所未有的道路。
Beautiful Soup
传送门:
https://www.crummy.com/software/BeautifulSoup/bs4/doc/
Beautiful Soup是一个HTML和XML解析器,可为被解析的页面创建解析树,从而用于从web页面中提取数据。从网页中提取数据的过程称为网页抓取。
pip install beautifulsoup4
#!/usr/bin/python3
# Anchor extraction from html document
from bs4 import BeautifulSoup
from urllib.request import urlopen
with urlopen('LINK') as response:
soup = BeautifulSoup(response, 'html.parser')
for anchor in soup.find_all('a'):
print(anchor.get('href', '/'))
建议阅读下面的文章,学习如何在Python中使用Beautiful Soup:
《新手指南:在Python中使用BeautifulSoup进行网页抓取》传送门:
https://www.analyticsvidhya.com/blog/2015/10/beginner-guide-web-scraping-beautiful-soup-python/
*Scrapy
传送门:
https://docs.scrapy.org/en/latest/intro/tutorial.html
下面是用于安装Scrapy的代码:
pip install scrapy
image.png
下面是一个实现Scrapy的简单代码:
import scrapy
class Spider(scrapy.Spider): name = 'NAME' start_urls = ['LINK']
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
<meta name="source" content="lake">
下面是一个学习Scrapy并在Python中实现Scrapy的绝佳教程:
《使用Scrapy在Python中进行网页抓取(含多个示例)》传送门:
https://www.analyticsvidhya.com/blog/2017/07/web-scraping-in-python-using-scrapy/
Selenium
传送门:
image编写Python脚本来自动化使用Selenium的web浏览器是很容易的。它允许免费高效地提取数据,并将其存储在首选格式中以备后用。
《<mark>数据科学</mark>项目:使用Python和Selenium抓取YouTube数据对视频进行分类》传送门:
用于<mark>数据清理</mark>和数据操作的Python库
收集了数据之后,接下来要清理可能面临的任何混乱数据,并学习如何操作数据,方便数据为建模做好准备。
数据清理
Pandas
传送门:
https://pandas.pydata.org/pandas-docs/stable/
在数据操作和数据分析
方面,Pandas绝无敌手。Pandas一度是最流行的Python库。Pandas是用Python语言编写的,主要用于数据操作和数据分析
。
这个名称来源于术语“面板数据”,“面板数据”是一个计量经济学术语,指的是包含同一个人在多个时间段内的观察结果的数据集。
Pandas在Python or Anaconda中已完成预安装,但以防需要,安装代码如下:
>pip install pandas
image.png
- 数据集连接和合并
- 删除和插入数据结构列
- 数据过滤
- 重塑数据集
- 使用DataFrame对象来操作数据等
《Python中用于数据操作的12种有用的Pandas技术》传送门:
https://www.analyticsvidhya.com/blog/2016/01/12-pandas-techniques-python-data-manipulation/
《CheatSheet:在Python中使用Pandas进行数据探索》传送门:
https://www.analyticsvidhya.com/blog/2015/07/11-steps-perform-data-analysis-pandas-python/
PyOD
传送门:
https://pyod.readthedocs.io/en/latest/
难以发现异常值?这绝非个例。别担心,PyOD库就在这里。
PyOD是一个全面的、可伸缩的Python工具包,用于检测外围对象。离群值检测基本上是识别与大多数数据显著不同的稀有项或观测值。
以下代码可用于下载pyOD:
pip install pyod
《学习在Python中使用PyOD库检测异常值的绝佳教程》传送门:
https://www.analyticsvidhya.com/blog/2019/02/outlier-detection-python-pyod/
NumPy
传送门:
与Pandas一样,NumPy也是一个非常受欢迎的Python库。NumPy引入了支持大型多维数组和矩阵的函数,同时还引入了高级数学函数来处理这些数组和矩阵。
NumPy是一个开源库,有多方贡献者。在 Anaconda和Python中已预安装Numpy,但以防需要,下面是安装代码:
$ pip install numpy
image.png
- 创建数组
import numpy as np``x = np.array([1, 2, 3])``print(x)``y = np.arange(10)``print(y)``output - [1 2 3]` `[0 1 2 3 4 5 6 7 8 9]
- 基本运算
a = np.array([1, 2, 3, 6])``b = np.linspace(0, 2, 4)``c = a - b``print(c)``print(a**2)``output - [1\. 1.33333333
1.66666667 4\. ] [ 1 4 9 36]
SpaCy
传送门:
image.pngSpacy是一个非常有用且灵活的自然语言处理
( NLP )库和框架,用于清理创建模型的文本文档。与类似用途的其他库相比,SpaCy速度更快。
在Linux中安装Spacy:
pip install -U spacy``python -m spacy download en
操作系统
以下是学习spaCy的课程:
《简化自然语言处理
——使用SpaCy(在Python中)》传送门:
用于数据可视化
的Python库
下一步是什么呢?数据可视化
!此处假设已得到验证,并且发掘了隐藏的观点和模式。
数据可视化
Matplotlib
传送门:
数据可视化
以下是安装Matplotli的代码:
<pre class="cm-s-default" style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">$ pip install matplotlib</pre>
image- 柱状图
%matplotlib inline``import matplotlib.pyplot as plt``from numpy.random import normal``x = normal(size=100)``plt.hist(x, bins=20)``plt.show()
-
3D 图表
-
from matplotlib import cm``from mpl_toolkits.mplot3d import Axes3D``import matplotlib.pyplot as plt``import numpy as np``fig = plt.figure()``ax = fig.gca(projection='3d')``X = np.arange(-10, 10, 0.1)``Y = np.arange(-10, 10, 0.1)``X, Y = np.meshgrid(X, Y)``R = np.sqrt(X**2 + Y**2)``Z = np.sin(R)``surf = ax.plot_surface(X, Y, Z, rstride=1,cstride=1, cmap=cm.coolwarm)``plt.show()
《使用NumPy、Matplotlib和Pandas在Python中进行数据探索的终极指南》传送门:
Seaborn
传送门:
Seaborn 的一些特点:
- 作为一个面向数据集的API,可用于查验多个变量之间的关系
- 便于查看复杂数据集的整体结构
- 用于选择显示数据中模式的调色板的工具
pip install seaborn
-
import seaborn as sns``sns.set()``tips =sns.load_dataset("tips")``sns.relplot(x="total_bill",y="tip", col="time",
hue="smoker",style="smoker", size="size",`` data=tips);
-
import seaborn as sns``sns.catplot(x="day",y="total_bill", hue="smoker",
kind="violin",split=True, data=tips);
Bokeh
传送门:
https://bokeh.pydata.org/en/latest/
Bokeh是一个面向现代网页浏览器的交互式可视化库,为大量数据集提供优美的通用图形结构。
Bokeh可用于创建交互式绘图、仪表板和数据应用程序。
安装:
pip install bokeh
《使用Bokeh的交互式<mark>数据可视化</mark>(在Python中)》传送门:
https://www.analyticsvidhya.com/blog/2015/08/interactive-data-visualization-library-python-bokeh/
用于建模的Python库
现在到了本文最令人期待的部分——建模!这也是大多数人一开始接触<mark>数据科学</mark>的原因。
接下来通过这三个Python库来探索建模。
Scikit-learn
传送门:
https://scikit-learn.org/stable/
就像用于数据操作的Pandas和用于可视化的matplotlib一样,scikit-learn是Python构建模型中的佼佼者。没有什么能与之媲美。
事实上,scikit-learn建立在NumPy,SciPy和matplotlib之上。它是开放源码的,每个人都可以访问,并且可以在各种环境中重用。
<mark>机器学习</mark><mark>聚类</mark><mark>模型选择</mark>
建议浏览以下链接以了解有关scikit-learn的更多信息:
《Python中的Scikit-learn——笔者去年学到的最重要的<mark>机器学习</mark>工具!》传送门:
https://www.analyticsvidhya.com/blog/2015/01/scikit-learn-python-machine-learning-tool/
<mark>TensorFlow</mark>
传送门:
<mark>TensorFlow</mark>由谷歌开发,是一个流行的<mark>深度学习</mark>库,可帮助构建、培训不同模型。是一个开放源码的端到端平台。<mark>TensorFlow</mark>提供简单的模型构建,强大的<mark>机器学习</mark>生产,以及强大的实验工具和库。
<mark>TensorFlow</mark>提供多个抽象级别,可根据需要进行选择。<mark>TensorFlow</mark>通过使用高级Keras API来构建和训练模型,这使<mark>TensorFlow</mark>入门和<mark>机器学习</mark>变得容易。
安装传送门:
https://www.tensorflow.org/install
使用<mark>TensorFlow</mark>从阅读这些文章开始:
《<mark>TensorFlow</mark> 101:理解<mark>张量</mark>和图像以便开始深入学习》传送门:
https://www.analyticsvidhya.com/blog/2017/03/tensorflow-understanding-tensors-and-graphs/
《开始使用Keras和<mark>TensorFlow</mark>在R中进行<mark>深度学习</mark>》传送门:
https://www.analyticsvidhya.com/blog/2017/06/getting-started-with-deep-learning-using-keras-in-r/
PyTorch
传送门:
- NumPy的替代品,可使用GPU的强大功能
- <mark>深度学习</mark>研究型平台,拥有最大灵活性和最快速度
安装指南传送门:
https://pytorch.org/get-started/locally/
- 混合前端
- 工具和库:由研发人员组成的活跃社区已经建立了一个丰富的工具和库的生态系统,用于扩展PyTorch并支持<mark>计算机视觉</mark>和<mark>强化学习</mark>等领域的开发
- 云支持:PyTorch支持在主要的云平台上运行,通过预构建的映像、对GPU的大规模训练、以及在生产规模环境中运行模型的能力等,可提供无摩擦的开发和轻松拓展
《PyTorch简介——一个简单但功能强大的<mark>深度学习</mark>库》传送门:
https://www.analyticsvidhya.com/blog/2018/02/pytorch-tutorial/
《开始使用PyTorch——学习如何建立快速和准确的<mark>神经网络</mark>(以4个案例研究为例)》传送门:
https://www.analyticsvidhya.com/blog/2019/01/guide-pytorch-neural-networks-case-studies/
用于数据解释性的Python库
你真的了解模型如何工作吗?能解释模型为什么能够得出结果吗?这些是每个<mark>数据科学</mark>家都能够回答的问题。构建黑盒模型在业界毫无用处。
所以,上文中已经提到的两个Python库可以帮助解释模型的性能。
LIME
传送门:
https://github.com/marcotcr/lime
imagepip install lime
《在<mark>机器学习</mark>模型中建立信任(在Python中使用LIME)》传送门:
https://www.analyticsvidhya.com/blog/2017/06/building-trust-in-machine-learning-models/
H2O
传送门:
https://github.com/h2oai/mli-resources
<mark>机器学习</mark>
H2O的无人驾驶AI,提供简单的<mark>数据可视化</mark>技术,用于表示高度特征交互和非线性模型行为,通过可视化提供<mark>机器学习</mark>可解释性(MLI),说明建模结果和模型中特征的影响。
image《<mark>机器学习</mark>可解释性》传送门:
用于音频处理的Python库
音频处理或音频分析是指从音频信号中提取信息和含义以进行分析、分类或任何其他任务。这正在成为<mark>深度学习</mark>中的一种流行功能,所以要留意这一点。
LibROSA
传送门:
https://librosa.github.io/librosa/
<mark>信息检索</mark>
安装指南传送门:
https://librosa.github.io/librosa/install.html
《利用<mark>深度学习</mark>开始音频<mark>数据分析</mark>(含案例研究)》传送门:
https://www.analyticsvidhya.com/blog/2017/08/audio-voice-processing-deep-learning/
Madmom
传送门:
https://github.com/CPJKU/madmom
Madmom是一个用于音频<mark>数据分析</mark>的很棒的Python库。它是一个用Python编写的音频<mark>信号处理</mark>库,主要用于音乐<mark>信息检索</mark>(MIR)任务。
以下是安装Madmom的必备条件:
- NumPy
- SciPy
- Cython
- Mido
- PyTest
- Fyaudio
- PyFftw
<pre class="cm-s-default" style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">pip install madmom</pre>
<mark>信息检索</mark>
《学习音乐<mark>信息检索</mark>的音频节拍追踪(使用Python代码)》传送门:
https://www.analyticsvidhya.com/blog/2018/02/audio-beat-tracking-for-music-information-retrieval/
pyAudioAnalysis
传送门:
https://github.com/tyiannak/pyAudioAnalysis
pyAudioAnalysis是一个用于音频特征提取、分类和分段的Python库,涵盖广泛的音频分析任务,例如:
- 对未知声音进行分类
- 检测音频故障并排除长时间录音中的静音时段
- 进行监督和非监督的分割
- 提取音频缩略图等等
pip install pyAudioAnalysis
用于<mark>图像处理</mark>的Python库
如果想要在<mark>数据科学</mark>行业有一番成就,那么必须学习如何使用图像数据。随着系统能够收集越来越多的数据(主要得益于计算资源的进步),<mark>图像处理</mark>越来越无处不在。
因此,请确保熟悉以下三个Python库中的至少一个。
<mark>OpenCV</mark>-Python
传送门:
https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_setup/py_intro/py_intro.html
<mark>图像处理</mark><mark>OpenCV</mark><mark>OpenCV</mark><mark>图像处理</mark><mark>OpenCV</mark><mark>计算机视觉</mark>
<mark>OpenCV</mark>-Python使用了上文提到的NumPy。所有<mark>OpenCV</mark>阵列结构都与NumPy数组相互转换。这也使得与使用Numpy的其他库(如SciPy和Matplotlib)集成变得更加容易。
image<mark>OpenCV</mark>
<pre class="cm-s-default" style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">pip3 install opencv-python</pre>
<mark>OpenCV</mark>
《基于<mark>深度学习</mark>的视频人脸检测模型建立(Python实现)》传送门:
https://www.analyticsvidhya.com/blog/2018/12/introduction-face-detection-video-deep-learning-python/
《16个<mark>OpenCV</mark>函数启动<mark>计算机视觉</mark>之旅(使用Python代码)》传送门:
https://www.analyticsvidhya.com/blog/2019/03/opencv-functions-computer-vision-python/
Scikit-image
传送门:
Scikit-image是另一个用于<mark>图像处理</mark>的python库,是用于执行多个不同<mark>图像处理</mark>任务的算法集合。可用于<mark>图像分割</mark>、几何变换、色彩空间操作、分析、过滤,形态学、<mark>特征检测</mark>等等。
在安装scikit-image前,请先安装以下软件包:
- Python(> = 3.5)
- NumPy(> = 1.11.0)
- SciPy(> = 0.17.0)
- joblib(> = 0.11)
pip install -U scikit-learn
传送门:
https://pillow.readthedocs.io/en/stable/
Pillow是PIL(Python Imaging Library)的新版本。它是从PIL派生出来的,在一些Linux发行版(如Ubuntu)中被用作原始PIL的替代。
Pillow提供了几种执行<mark>图像处理</mark>的标准程序:
- 逐像素操作
- 掩模和透明处理
- 图像过滤,例如模糊,轮廓,平滑或边缘监测
- <mark>图像增强</mark>,例如锐化,调整亮度、对比度或颜色
- 在图像上添加文字等等
pip install Pillow
<mark>计算机视觉</mark>
《AI漫画:****Z.A.I.N —— 第二期:****使用<mark>计算机视觉</mark>进行面部识别》传送门:
用于<mark>数据库</mark>的Python库
学习如何从<mark>数据库</mark>存储、访问和检索数据是<mark>数据科学</mark>家必备的技能。但是如何在不首先检索数据的情况下做到建模呢?
psycopg
传送门:
imagePsycopg是Python编程语言中最流行的PostgreSQL(高级开源代码关系<mark>数据库</mark>)适配器。Psycopg的核心是完全实现Python DB API 2.0规范。
目前的psycopg2实现支持:
- Python版本2.7
- Python 3版本(3.4到3.7)
- PostgreSQL服务器版本(7.4到11)
- PostgreSQL客户端库版本(9.1以上)
pip install psycopg2
SQLAlchemy
传送门:
<mark>数据库</mark><mark>映射</mark> imageSQL旨在实现高效、高性能的<mark>数据库</mark>访问。SQLAlchemy将<mark>数据库</mark>视为关系代数引擎,而不仅仅是表的集合。
要安装SQLAlchemy,可以使用以下代码行:
<pre class="cm-s-default" style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">pip install SQLAlchemy</pre>
用于部署的Python库
Flask
传送门:
http://flask.pocoo.org/docs/1.0/
<mark>数据科学</mark>
- Werkzeug:Python编程语言的实用程序库
- Jinja:Python的模板引擎
-
from flask import Flask``app = Flask(__name__)``@app.route("/")``def hello():
return "HelloWorld!"``if __name__ == "__main__":`` app.run()
《在生产中将<mark>机器学习</mark>模型部署为API的教程(使用Flask)》传送门:
https://www.analyticsvidhya.com/blog/2017/09/machine-learning-models-as-apis-using-flask/
相关链接:
https://www.analyticsvidhya.com/blog/2019/07/dont-miss-out-24-amazing-python-libraries-data-science/
image
网友评论