总结数据科学家常用的Python库

概述

  • 这篇文章中,我们挑选了24个用于数据科学的Python库。

  • 这些库有着不同的数据科学功能,例如数据收集,数据清理,数据探索,建模等,接下来我们会分类介绍。

  • 您觉得我们还应该包含哪些Python库?让我们知道!

介绍

我是Python语言的忠实粉丝,它是我在数据科学方面学到的第一门编程语言。Python有三个特点:

  • 它的易用性和灵活性

  • 全行业的接受度:它是业内最流行的数据科学语言

  • 用于数据科学的庞大数量的Python库

事实上,有如此多的Python库,要跟上它们的发展速度可能会变得非常困难。这就是为什么我决定消除这种痛苦,并编辑这24个Python库。换句话说,在数据科学领域,你掌握这个24个python库就够了!

640?wx_fmt=png

那是对的 - 我根据各自在数据科学中的角色对这些库进行了分类。所以我提到了用于数据清理,数据操作,可视化,构建模型甚至模型部署(以及其他)的库。这是一个非常全面的列表,可帮助您开始使用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库

您是否遇到过一种情况,即您没有足够的数据来解决您想要解决的问题?这是数据科学中一个永恒的问题。这就是为什么学习如何提取和收集数据对数据科学家来说是一项非常关键的技能。它开辟了以前无法实现的途径。

所以这里有三个有用的Python库,用于提取和收集数据。

/* Beautiful Soup */收集数据的最佳方法之一是抓取网站(当然是道德和合法的!)。手动完成需要花费太多的手动工作和时间。美丽的汤是你的救星。

Beautiful Soup是一个HTML和XML解析器,它为解析的页面创建解析树,用于从网页中提取数据。从网页中提取数据的过程称为网络抓取。

使用以下代码安装BeautifulSoup:

 

pip install beautifulsoup4

这是一个实现Beautiful Soup的简单代码,用于从HTML中提取所有anchor标记:

 

  1.  
    #!/usr/bin/python3
  2.  
    # Anchor extraction from html document
  3.  
    from bs4 import BeautifulSoup
  4.  
    from urllib.request import urlopen
  5.  
     
  6.  
    with urlopen('LINK') as response:
  7.  
    soup = BeautifulSoup(response, 'html.parser')
  8.  
    for anchor in soup.find_all('a'):
  9.  
    print(anchor.get('href', '/'))

 

我建议通过以下文章来学习如何在Python中使用BeautifulSoup:

  • 使用BeautifulSoup在Python中进行Web Scraping的初学者指南

    (https://www.analyticsvidhya.com/blog/2015/10/beginner-guide-web-scraping-beautiful-soup-python/)

/* Scrapy */

这是安装Scrapy的代码:

 

pip install scrapy

640?wx_fmt=png它是大规模网络抓取的框架。它为您提供了有效提取网站数据,根据需要处理数据并将其存储在首选结构和格式中所需的所有工具。

这是一个实现Scrapy的简单代码:

 

  1.  
    import scrapy
  2.  
     
  3.  
    class Spider(scrapy.Spider):
  4.  
    name = 'NAME'
  5.  
    start_urls = ['LINK']
  6.  
     
  7.  
    def parse(self, response):
  8.  
    for title in response.css('.post-header>h2'):
  9.  
    yield {'title': title.css('a ::text').get()}
  10.  
     
  11.  
    for next_page in response.css('a.next-posts-link'):
  12.  
    yield response.follow(next_page, self.parse)

 

这是学习Scrapy并在Python中实现它的完美教程:

  • 使用Scrapy在Python中进行Web Scraping(有多个示例)

    (https://www.analyticsvidhya.com/blog/2017/07/web-scraping-in-python-using-scrapy/)

/* Selenium */

640?wx_fmt=png

我们可以轻松地编写Python脚本以使用Selenium自动化Web浏览器。它为我们有效地提取数据并以我们喜欢的格式存储数据,以供将来使用。

我最近写了一篇关于使用Python和Selenium抓取YouTube视频数据的文章:

  • 数据科学项目:使用Python和Selenium对YouTube数据进行刮擦以对视频进行分类

    (https://www.analyticsvidhya.com/blog/2019/05/scraping-classifying-youtube-video-data-python-selenium/)

 

用于数据清理和操作的Python库

好吧 - 所以你已经收集了你的数据并准备好潜入。现在是时候清理我们可能面临的任何混乱数据并学习如何操作它,以便我们的数据可以用于建模。

这里有四个Python库可以帮助您实现这一目标。请记住,我们将处理现实世界中的结构化(数字)和文本数据(非结构化) - 这个库列表涵盖了所有这些。

/* Pandas */在数据处理和分析方面,没有什么能比pandas更胜一筹。它是现阶段最流行的Python库。Pandas是用Python语言编写的,特别适用于操作和分析任务。

Pandas需要预先安装Python或Anaconda,这里是需要的代码:

 

pip install pandas

 

640?wx_fmt=png

Pandas提供的功能如下:

  • 数据集加入和合并

  • 数据结构列删除和插入

  • 数据过滤

  • 重塑数据集

  • DataFrame对象操纵数据等等!

这是一篇文章和一个很棒的备忘单,让你的pandas技能达到最佳状态:

  • 12用于数据操作的Python中有用的熊猫技术

    (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 */

别担心,PyOD库可以帮到您。

PyOD是一个全面且可扩展的Python工具包,用于检测外围对象。异常检测基本上是识别与大多数数据显着不同的稀有项目或观察。

您可以使用以下代码下载pyOD:

 

pip install pyod

 

  • 使用PyOD库在Python中学习异常检测的一个很棒的教程

    (https://www.analyticsvidhya.com/blog/2019/02/outlier-detection-python-pyod/)

/* NumPy */

NumPy是一个开源库,有多个贡献者。它预先安装了Anaconda和Python,这里是安装它的代码:

 

pip install numpy

 

640?wx_fmt=png

 

  1.  
    # 创建数组
  2.  
    import numpy as np
  3.  
    x = np.array([1, 2, 3])
  4.  
    print(x)
  5.  
    y = np.arange(10)
  6.  
    print(y)
  7.  
     
  8.  
    # output - [1 2 3]
  9.  
    # [0 1 2 3 4 5 6 7 8 9]
  10.  
     
  11.  
    # 基本操作
  12.  
    a = np.array([1, 2, 3, 6])
  13.  
    b = np.linspace(0, 2, 4)
  14.  
    c = a - b
  15.  
    print(c)
  16.  
    print(a**2)
  17.  
     
  18.  
    #output - [1. 1.33333333 1.66666667 4. ]
  19.  
    # [ 1 4 9 36]

还有更多!

/* SpaCy */到目前为止,我们已经讨论了如何清理和操作数值数据。但是,如果你正在处理文本数据呢?

spaCy是一个超级有用且灵活的自然语言处理(NLP)库和框架,用于清理文本文档以进行模型创建。与用于类似任务的其他库相比,SpaCy更快。

在Linux中安装Spacy的代码:

 

  1.  
    pip install -U spacy
  2.  
    python -m spacy download en

要在其他操作系统上安装它,请参考此链接(https://spacy.io/usage/)。

640?wx_fmt=png

 

  • 自然语言处理变得轻松 - 使用SpaCy(在Python中)

用于数据可视化的Python库

下一个是什么?我在整个数据科学最喜欢的方面 - 数据可视化!数据可视化后,我们的假设将得到直观的验证!

这里有三个用于数据可视化的很棒的Python库。

/* Matplotlib */Matplotlib是Python中最流行的数据可视化库。它允许我们生成和构建各种图表。它可以与Seaborn一起使用。

您可以通过以下代码安装matplotlib:

 

pip install matplotlib

 

640?wx_fmt=png

以下是我们可以使用matplotlib构建的不同类型的图表的几个示例:

 

  1.  
    # 直方图
  2.  
    %matplotlib inline
  3.  
    import matplotlib.pyplot as plt
  4.  
    from numpy.random import normal
  5.  
    x = normal(size=100)
  6.  
    plt.hist(x, bins=20)
  7.  
    plt.show()

640?wx_fmt=png

 

 

  1.  
    # 3D图
  2.  
    from matplotlib import cm
  3.  
    from mpl_toolkits.mplot3d import Axes3D
  4.  
    import matplotlib.pyplot as plt
  5.  
    import numpy as np
  6.  
    fig = plt.figure()
  7.  
    ax = fig.gca(projection='3d')
  8.  
    X = np.arange(-10, 10, 0.1)
  9.  
    Y = np.arange(-10, 10, 0.1)
  10.  
    X, Y = np.meshgrid(X, Y)
  11.  
    R = np.sqrt(X**2 + Y**2)
  12.  
    Z = np.sin(R)
  13.  
    surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.coolwarm)
  14.  
    plt.show()

640?wx_fmt=png

既然我们已经介绍了Pandas,NumPy和现在的matplotlib,请查看下面的教程,将这三个Python库网格化:

  • 使用NumPy,Matplotlib和Pandas在Python中进行数据探索的终极指南

/* Seaborn */Seaborn是另一个基于matplotlib的绘图库。它是一个python库,提供高级界面来绘制有吸引力的图形。matplotlib可以做什么,Seaborn只是以更具视觉吸引力的方式做到这一点。

Seaborn的一些功能是:

  • 面向数据集的API,用于检查多个变量之间的关系

  • 方便地查看复杂数据集的整体结构

  • 用于选择显示数据中图案的调色板的工具

 

您只需使用一行代码即可安装Seaborn:

 

pip install seaborn

640?wx_fmt=png

让我们通过一些很酷的图表来看看seaborn能做什么:

 

  1.  
    import seaborn as sns
  2.  
    sns.set()
  3.  
    tips = sns.load_dataset("tips")
  4.  
    sns.relplot(x="total_bill", y="tip", col="time",
  5.  
    hue="smoker", , size="size",
  6.  
    data=tips);

640?wx_fmt=png

这是另一个例子:

 

  1.  
    import seaborn as sns
  2.  
    sns.catplot(x="day", y="total_bill", hue="smoker",
  3.  
    kind="violin", split=True, data=tips);

/* Bokeh */Bokeh是一个交互式可视化库,面向现代Web浏览器进行演示。它为大量数据集提供了多种图形的优雅构造。

Bokeh可用于创建交互式图表,仪表板和数据应用程序。安装代码:

 

pip install bokeh

640?wx_fmt=png

 

  • 使用Bokeh进行交互式数据可视化(在Python中)

 

用于建模的Python库

我们已经到达了本文最受期待的部分 - 构建模型!这就是我们大多数人首先进入数据科学领域的原因,不是吗?

让我们通过这三个Python库探索模型构建。

/* Scikit-learn */就像用于数据操作的Pandas和用于可视化的matplotlib一样,scikit-learn是构建模型的Python库领导者。没有什么比得上它了。

事实上,scikit-learn建立在NumPy,SciPy和matplotlib之上。它是开源的,每个人都可以访问,并且可以在各种环境中重用。

640?wx_fmt=png

以下是安装scikit-learn的代码:

 

pip install scikit-learn

Scikit-learn支持在机器学习中执行的不同操作,如分类,回归,聚类,模型选择等。

我还建议您浏览以下链接以了解有关scikit-learn的更多信息:

  • Scikit-Python in Python - 我去年学到的最重要的机器学习工具!

/* TensorFlow */TensorFlow由Google开发,是一个流行的深度学习库,可帮助您构建和培训不同的模型。它是一个开源的端到端平台。TensorFlow提供简单的模型构建,强大的机器学习生成,以及强大的实验工具和库。

640?wx_fmt=png

TensorFlow提供多个抽象级别供您根据需要进行选择。它通过使用高级Keras API用于构建和训练模型,这使得TensorFlow入门和机器学习变得容易。

浏览此链接以查看安装过程:https://www.tensorflow.org/install。使用这些文章开始使用TensorFlow:

  • TensorFlow 101:了解张量和图形,让您开始深度学习

    (https://www.analyticsvidhya.com/blog/2017/03/tensorflow-understanding-tensors-and-graphs/)

  • 使用Keras和TensorFlow在R中开始深度学习(https://www.analyticsvidhya.com/blog/2017/06/getting-started-with-deep-learning-using-keras-in-r/)

     

/* PyTorch */

什么是PyTorch?嗯,这是一个基于Python的科学计算包,可以用作:

  • NumPy的替代品,可以使用GPU的强大功能

  • 深度学习研究平台,提供最大的灵活性和速度

转到此处(https://pytorch.org/get-started/locally/)查看不同操作系统的安装过程。

PyTorch提供以下功能:

  • 混合前端

  • 工具和库:一个活跃的研究人员和开发人员社区建立了丰富的工具和库生态系统,用于扩展PyTorch并支持从计算机视觉到强化学习等领域的开发

  • 云支持:PyTorch在主要云平台上得到很好的支持,通过预先构建的映像提供无摩擦的开发和轻松扩展,在GPU上进行大规模培训,在生产规模环境中运行模型的能力等等

以下是有关PyTorch的两篇非常详细且易于理解的文章:

  • PyTorch简介 - 一个简单而强大的深度学习库(https://www.analyticsvidhya.com/blog/2018/02/pytorch-tutorial/)

  • PyTorch入门 - 了解如何构建快速准确的神经网络(4个案例研究!)(https://www.analyticsvidhya.com/blog/2019/01/guide-pytorch-neural-networks-case-studies/)

用于数据可解释性的Python库

你真的了解你的模型是如何工作的吗?你能解释为什么你的模型能够得出结果吗?这些是每个数据科学家应该能够回答的问题。构建黑盒模型在业界是没有用的。

所以,我已经提到了两个Python库,可以帮助您解释模型的性能。

/* LIME */LIME是一种算法(和库),可以解释任何分类器或回归量的预测。LIME如何做到这一点?通过一个可解释的模型来近似它。灵感来自“为什么我应该相信你?”:解释任何分类器的预测“,这个模型解释器可用于生成任何分类算法的解释器。

640?wx_fmt=png

安装LIME很简单:

 

pip install lime

 

  • 在机器学习模型中建立信任(在Python中使用LIME)(https://www.analyticsvidhya.com/blog/2017/06/building-trust-in-machine-learning-models/)

/* H2O */

H2O的无人驾驶AI提供简单的数据可视化技术,用于表示高度特征交互和非线性模型行为。它通过可视化提供机器学习可解释性(MLI),阐明建模结果和模型中特征的影响。

640?wx_fmt=png

通过以下链接阅读有关H2O的无人驾驶AI执行MLI的更多信息。

  • 机器学习可解释性

用于音频处理的Python库

音频处理或音频分析是指从音频信号中提取信息和含义以进行分析或分类或任何其他任务。它正在成为深度学习中的一种流行功能,所以要留意这一点。

/* LibROSA */

640?wx_fmt=png

单击此链接(https://librosa.github.io/librosa/install.html)以查看安装详细信息。

这是一篇关于音频处理及其工作原理的深入文章:

  • 使用深度学习开始使用音频数据分析(带案例研究)(https://www.analyticsvidhya.com/blog/2017/08/audio-voice-processing-deep-learning/)

/* Madmom */

您需要先安装以下库才能安装Madmom:

  • NumPy

  • SciPy

  • Cython

  • Mido

您需要以下软件包来测试安装是否成功:

  • PyTest

  • PyAudio

  • PyFftw

安装Madmom的代码:

 

pip install madmom

 

640?wx_fmt=png

我们甚至有一篇文章要了解Madmom如何用于音乐信息检索:

  • 学习音乐信息检索的音频节拍跟踪(使用Python代码)(https://www.analyticsvidhya.com/blog/2018/02/audio-beat-tracking-for-music-information-retrieval/)

/* pyAudioAnalysis */

pyAudioAnalysis是一个用于音频特征提取,分类和分段的Python库。它涵盖了广泛的音频分析任务,例如:

  • 对未知声音进行分类

  • 检测音频事件并排除长时间录音中的静音时段

  • 执行有监督和无监督的分割

  • 提取音频缩略图等等

 

您可以使用以下代码安装它:

 

pip install pyAudioAnalysis

 

640?wx_fmt=png

用于图像处理的Python库

如果您正在寻找数据科学行业的角色,您必须学习如何使用图像数据。随着组织能够收集越来越多的数据(主要得益于计算资源的进步),图像处理正变得无处不在。

因此,请确保您对以下三个Python库中的至少一个感到满意。

/* OpenCV-Python */谈到图像处理,OpenCV是我想到的第一个名字。OpenCV-Python是用于图像处理的Python API,它结合了OpenCV C ++ API和Python语言的最佳特性。

它主要用于解决计算机视觉问题。

OpenCV-Python使用了我们在上面看到的NumPy。所有OpenCV阵列结构都与NumPy数组进行转换。这也使得与使用NumPy的其他库(如SciPy和Matplotlib)集成更容易。

在您的系统中安装OpenCV-Python:

 

pip3 install opencv-python

 

以下是两个关于如何在Python中使用OpenCV的流行教程:

  • 使用深度学习从视频构建人脸检测模型(Python实现)(https://www.analyticsvidhya.com/blog/2018/12/introduction-face-detection-video-deep-learning-python/)

  • 16个OpenCV函数启动计算机视觉之旅(使用Python代码)(https://www.analyticsvidhya.com/blog/2019/03/opencv-functions-computer-vision-python/)

/* Scikit-image */

您可以使用它来执行图像分割,几何变换,色彩空间操作,分析,过滤,形态学,特征检测等等。

我们需要在安装scikit-image之前使用以下软件包:

  • Python(> = 3.5)

  • NumPy(> = 1.11.0)

  • SciPy(> = 0.17.0)

  • joblib(> = 0.11)

 

这就是你可以在你的机器上安装scikit-image的方法:

 

 

pip install -U scikit-learn

 

640?wx_fmt=png

/* Pillow */

Pillow提供了几种执行图像处理的标准程序:

  • 每像素操作

  • 掩蔽和透明处理

  • 图像过滤,例如模糊,轮廓,平滑或边缘查找

  • 图像增强,例如锐化,调整亮度,对比度或颜色

  • 向图像添加文字等等!

 

如何安装Pillow?这很简单:

 

 

pip install Pillow

 

查看以下AI漫画,了解Pillow在计算机视觉中的使用:

  • AI Comic:ZAIN - 问题#2:使用计算机视觉进行面部识别

 

用于数据库的Python库

学习如何从数据库存储,访问和检索数据是任何数据科学家必备的技能。你根本无法摆脱角色的这个方面。构建模型很棒但是如果不首先检索数据,你会怎么做?

我选择了两个与SQL相关的Python库,你可能会发现它们很有用。

/* psycopg */Psycopg是最受欢迎的PostgreSQL(一种用于Python编程语言的高级开源关系数据库)适配器。Psycopg的核心是完全实现Python DB API 2.0规范。

640?wx_fmt=png

目前的psycopg2实现支持:

  • Python版本2.7

  • Python 3版本从3.4到3.7

  • PostgreSQL服务器版本从7.4到11

  • 9.1的PostgreSQL客户端库版本

     

以下是如何安装psycopg2的方法:

 

 

pip install psycopg2

/* SQLAlchemy */

640?wx_fmt=png

它旨在实现高效,高性能的数据库访问。SQLAlchemy认为数据库是关系代数引擎,而不仅仅是表的集合。

要安装SQLAlchemy,您可以使用以下代码行:

 

pip install SQLAlchemy

 

用于部署的Python库

你知道什么型号的部署?如果没有,你应该尽快学习。部署模型意味着将最终模型放入最终应用程序(或技术上称为生产环境)。

/* Flask */Flask是一个用Python编写的Web框架,通常用于部署数据科学模型。Flask有两个组成部分:

  • Werkzeug:它是Python编程语言的实用程序库

  • Jinja:它是Python的模板引擎

 

查看下面的示例以打印“Hello world”:

 

  1.  
    from flask import Flask
  2.  
    app = Flask(__name__)
  3.  
     
  4.  
    @app.route("/")
  5.  
    def hello():
  6.  
    return "Hello World!"
  7.  
     
  8.  
    if __name__ == "__main__":
  9.  
    app.run()

 

以下文章是学习Flask的一个很好的起点:

  • 在生产中将机器学习模型部署为API的教程(使用Flask)(https://www.analyticsvidhya.com/blog/2017/09/machine-learning-models-as-apis-using-flask/)

结束笔记

在本文中,我们看到了一大堆python库,它们在进行数据科学项目时常用。那里有更多的库,但这些是每个数据科学家应该知道的核心库。

 

posted @ 2019-09-19 15:08  左手编程右手诗  阅读(435)  评论(0编辑  收藏  举报