如果你是一名数据科学家或数据分析师,或者只是对这一行业感兴趣,那下文中这些广受欢迎且非常实用的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

Matplotlib是最全面的Python数据可视化库。有人认为Matplotlib的界面很难看,但笔者认为,作为最基础的Python数据可视化库,Matplotlib能为使用者的可视化目标提供最大的可能性。

使用JavaScript的开发者们也有各自偏好的可视化库,但当所处理的任务中涉及大量不被高级库所支持的定制功能时,开发者们就必须用到D3.js。Matplotlib也是如此。

8. Plotly

虽然笔者坚信要进行数据可视化,就必须得掌握Matplotlib,但大多数情况下读者更愿意使用Plotly,因为使用Plotly只需要写最少的代码就能得出最多彩缤纷的图像。

无论是想构造一张3D表面图,或是一张基于地图的散点图,又或是一张交互性动画图,Plotly都能在最短的时间内满足要求。

Plotly还提供一个表格工作室,使用者可以将自己的可视化上传到一个在线存储库中以便未来进行编辑。

数据模块化

从事模块化的数据分析师通常会被称为高级分析师。如今,机器学习已经不是什么新鲜概念了。而Python通常被认为是机器学习最常用的语言,因此也有大量出色的库支持在Python中使用。

9. Scikit Learn

 

在沉溺于“深度学习”之前,所有人都应当从使用Scikit Learn来开启自己的机器学习之旅。Scikit Learn有六大主要模块,功能如下:

· 数据预处理

· 维度缩减

· 数据回归

· 数据分类

· 数据聚类分析

· 模型选择

只要能用好Scikit Learn,就已经算得上是一名优秀的数据科学家了。

10. Tensorflow

Tensorflow是由谷歌推出的开源机器学习库。它最受欢迎的功能便是Tensorboard上的数据流图像。

Tensorboard是一个基于网页自动生成的仪表盘,它将数据学习流和结果进行了可视化处理,这一功能对于排错和展示都十分有用。

11. PyTorch

PyTorch是由Facebook发布的一个开源库,用作Python的公用机器学习框架。与Tensorflow相比,PyTorch的语句更加适用于Python。正因此,学习使用PyTorch也更加容易。

作为一个专注于深度学习的库,PyTorch还具有非常丰富的应用程序接口函数和内置函数来协助数据科学家更加快捷地训练自己的深度学习模型。

音频和图像识别

机器学习不仅能够处理数字,同时也能帮助处理音频和图像(视频往往被认为是很多帧图像组合在一起)。因此处理这些多媒体数据时,上述机器学习库远远不够。

12. OpenCV

请点击输图源:opencv入图片描述

OpenCV是最常用的图像和视频识别库。毫不夸张地说,OpenCV能让Python在图像和视频识别领域完全替代Matlab。

OpenCV提供各种应用程序接口,同时它不仅支持Python,还支持Java和Matlab。OpenCV出色的处理能力使其在计算机产业和学术研究中都广受好评。

13. Librosa

Librosa是一个非常强大的音频和声音处理Python库。Librosa可以用来从音频段中提取各个部分,例如韵律,节奏以及节拍。

像Laplacia分割这样极度复杂的算法,在使用了Librosa之后只需几行代码就能轻而易举的运用。

网页

Python在被广泛运用于数据科学领域前,曾经可是网页开发领域的宠儿。因此也有很多用于网页开发的库。

14. Django

要想使用Python来开发一个网页服务后端,Django一直都是不二之选。Django的设计理念便是,能用几行代码就建立一个网站的高级框架。

Django直接与大多数知名数据库相连,这样使用者就可以省下建立连接和数据模型开发的时间。Django的使用者只需专注于业务逻辑而不需担心受创建、更新、读取和删除(Create,update,retrieve and delete, CURD)的操控,因为Django是一个由数据库驱动的框架。

15. Flask

 

Flask是一个用于Python的轻量级网页开发框架。其最宝贵的特点是能够轻而易举地进行能够满足任何需求的定制化处理。

有很多提供网站UI的知名Python库和Python工具都是使用Flask构建的,例如Plotly Dash和Airflow。这些网站之所以使用Flask,正是由于其轻量级的特点。

数据处理一条龙!这15个Python库不可不知的更多相关文章

  1. 探讨2018年最受欢迎的15顶级Python库!

    近日,数据科学网站 KDnuggets 评选出了顶级 Python 库 Top15,领域横跨数据科学.数据可视化.深度学习和机器学习.如果本文有哪些遗漏,你可以在评论区补充. 图 1:根据 GitHu ...

  2. 最受欢迎的 15 大 Python 库(2017)

    核心库 1. NumPy (提交数: 15980, 贡献者数: 522) 当开始处理Python中的科学任务,Python的SciPy Stack肯定可以提供帮助,它是专门为Python中科学计算而设 ...

  3. 2017年排名前15的数据科学python库

    2017年排名前15的数据科学python库 2017-05-22 Python程序员 Python程序员 Python程序员 微信号 pythonbuluo 功能介绍 最专业的Python社区,有每 ...

  4. 最受欢迎的15个Python开源框架

    GitHub中15个最受欢迎的Python开源框架.这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等. 1.Django: Python Web应用开发框架 Django 应 ...

  5. 11个并不广为人知,但值得了解的Python库

    这是一篇译文,文中提及了一些不常见但是有用的Python库 原文地址:http://blog.yhathq.com/posts/11-python-libraries-you-might-not-kn ...

  6. Python数据分析Python库介绍(1)

    一直想写点Python的笔记了,今天就闲着无聊随便抄点,(*^__^*) 嘻嘻…… ---------------------------------------------------------- ...

  7. 利用Python进行数据分析——重要的Python库介绍

    利用Python进行数据分析--重要的Python库介绍 一.NumPy 用于数组执行元素级计算及直接对数组执行数学运算 线性代数运算.傅里叶运算.随机数的生成 用于C/C++等代码的集成 二.pan ...

  8. python库-Arrow处理时间

    Arrow是一个处理时间的python库,能一键转换dates/times/timestamps等时间格式而不需要大量导致各种时间模块和格式转换函数,十分快捷方便 使用Arrow需要两步转换操作: 1 ...

  9. 你可能没听过的11个Python库

    目前,网上已有成千上万个Python包,但几乎没有人能够全部知道它们.单单 PyPi上就有超过47000个包列表. 现在,越来越多的数据科学家开始使用Python,虽然他们从 pandas, scik ...

随机推荐

  1. Spring Boot 开发集成 WebSocket,实现私有即时通信系统

    1/ 概述 利用Spring Boot作为基础框架,Spring Security作为安全框架,WebSocket作为通信框架,实现点对点聊天和群聊天. 2/ 所需依赖 Spring Boot 版本 ...

  2. WordPress获取某个分类关联的标签

    我在WordPress后台某篇文章的编辑页面,给这篇文章选择了分类:WordPress,接着同时选择了标签:php.主题制作,这时分类(WordPress)就与标签(php.主题制作)建立了关联,利用 ...

  3. 微软Azure IoT驱动数字化变革线上分享会(6月4号)

    微软Azure IoT驱动数字化变革线上分享会(6月4号)   微软作为全球范围内IoT领域的领军者,以微软智能云Azure为基础和核心,推动包括物联网.机器学习.微服务.人工智能等在内的新技术的发展 ...

  4. Longest Mountain in Array 数组中的最长山脉

    我们把数组 A 中符合下列属性的任意连续子数组 B 称为 “山脉”: B.length >= 3 存在 0 < i < B.length - 1 使得 B[0] < B[1] ...

  5. Bank4

    Account: package banking4; public class Account { private double balance; public Account(double int_ ...

  6. nginx 配置重定向及nginx配置if

    需求:地址 http://testa/inlinePreview/live.html?id=463738305721405440重定向到 http://testb/shares/live.html?n ...

  7. JAVASE(七)面向对象:封装性(特性之一)、构造器、属性、关键字

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 一.封装性 1.为什么要使用封装性? 创建对象以后,可以通过对象.属性名的方法进行赋值.只能限制数据的类 ...

  8. Java实现 LeetCode 661 图片平滑器(暴力)

    661. 图片平滑器 包含整数的二维矩阵 M 表示一个图片的灰度.你需要设计一个平滑器来让每一个单元的灰度成为平均灰度 (向下舍入) ,平均灰度的计算是周围的8个单元和它本身的值求平均,如果周围的单元 ...

  9. Java实现 LeetCode 290 单词规律

    290. 单词规律 给定一种规律 pattern 和一个字符串 str ,判断 str 是否遵循相同的规律. 这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非 ...

  10. Java实现 蓝桥杯VIP 算法训练 判定数字

    算法训练 判定数字 时间限制:1.0s 内存限制:512.0MB 编写函数,判断某个给定字符是否为数字. 样例输入 9 样例输出 yes import java.util.Scanner; publi ...