一文总结数据科学家常用的Python库(上)
概述
这篇文章中,我们挑选了24个用于数据科学的Python库。
这些库有着不同的数据科学功能,例如数据收集,数据清理,数据探索,建模等,接下来我们会分类介绍。
您觉得我们还应该包含哪些Python库?让我们知道!
介绍
我是Python语言的忠实粉丝,它是我在数据科学方面学到的第一门编程语言。Python有三个特点:
它的易用性和灵活性
全行业的接受度:它是业内最流行的数据科学语言
用于数据科学的庞大数量的Python库
事实上,有如此多的Python库,要跟上它们的发展速度可能会变得非常困难。这就是为什么我决定消除这种痛苦,并编辑这24个Python库。换句话说,在数据科学领域,你掌握这个24个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库
您是否遇到过一种情况,即您没有足够的数据来解决您想要解决的问题?这是数据科学中一个永恒的问题。这就是为什么学习如何提取和收集数据对数据科学家来说是一项非常关键的技能。它开辟了以前无法实现的途径。
所以这里有三个有用的Python库,用于提取和收集数据。
Beautiful Soup
收集数据的最佳方法之一是抓取网站(当然是道德和合法的!)。手动完成需要花费太多的手动工作和时间。美丽的汤是你的救星。
Beautiful Soup是一个HTML和XML解析器,它为解析的页面创建解析树,用于从网页中提取数据。从网页中提取数据的过程称为网络抓取。
使用以下代码安装BeautifulSoup:
pip install beautifulsoup4
这是一个实现Beautiful Soup的简单代码,用于从HTML中提取所有anchor标记:
#!/usr/bin/python3# Anchor extraction from html documentfrom bs4 import BeautifulSoupfrom urllib.request import urlopenwith urlopen('LINK') as response:soup = BeautifulSoup(response, 'html.parser')for anchor in soup.find_all('a'):print(anchor.get('href', '/'))
# 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中使用BeautifulSoup:
使用BeautifulSoup在Python中进行Web Scraping的初学者指南
(https://www.analyticsvidhya.com/blog/2015/10/beginner-guide-web-scraping-beautiful-soup-python/)
Scrapy
Scrapy是另一个用于Web抓取的超级有用的Python库。它是一个开源和协作框架,用于从网站中提取您需要的数据。它使用起来快速而简单。
这是安装Scrapy的代码:
pip install scrapy
它是大规模网络抓取的框架。它为您提供了有效提取网站数据,根据需要处理数据并将其存储在首选结构和格式中所需的所有工具。
这是一个实现Scrapy的简单代码:
import scrapyclass 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)
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)
这是学习Scrapy并在Python中实现它的完美教程:
使用Scrapy在Python中进行Web Scraping(有多个示例)
(https://www.analyticsvidhya.com/blog/2017/07/web-scraping-in-python-using-scrapy/)
Selenium
Selenium是一种用于自动化浏览器的流行工具。它主要用于行业测试,但对于网络抓取也非常方便。实际上,Selenium在IT领域变得非常受欢迎,所以我相信很多人至少会听说过它。
我们可以轻松地编写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
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如何工作以及如何自己实现?那么,下面的指南将回答你所有的PyOD问题:
使用PyOD库在Python中学习异常检测的一个很棒的教程
(https://www.analyticsvidhya.com/blog/2019/02/outlier-detection-python-pyod/)
NumPy
像Pandas一样,NumPy是一个非常受欢迎的Python库。NumPy引入了支持大型多维数组和矩阵的函数。它还引入了高级数学函数来处理这些数组和矩阵。
NumPy是一个开源库,有多个贡献者。它预先安装了Anaconda和Python,这里是安装它的代码:
pip install numpy
# 创建数组import numpy as npx = 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 - bprint(c)print(a**2)#output - [1. 1.33333333 1.66666667 4. ]# [ 1 4 9 36]
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
到目前为止,我们已经讨论了如何清理和操作数值数据。但是,如果你正在处理文本数据呢?
spaCy是一个超级有用且灵活的自然语言处理(NLP)库和框架,用于清理文本文档以进行模型创建。与用于类似任务的其他库相比,SpaCy更快。
在Linux中安装Spacy的代码:
pip install -U spacypython -m spacy download enpython -m spacy download en
要在其他操作系统上安装它,请参考此链接(https://spacy.io/usage/)。
当然,我们为您学习spaCy提供了保障:
自然语言处理变得轻松 - 使用SpaCy(在Python中)
(https://www.analyticsvidhya.com/blog/2017/04/natural-language-processing-made-easy-using-spacy-%e2%80%8bin-python/)
用于数据可视化的Python库
下一个是什么?我在整个数据科学最喜欢的方面 - 数据可视化!数据可视化后,我们的假设将得到直观的验证!
这里有三个用于数据可视化的很棒的Python库。
Matplotlib
Matplotlib是Python中最流行的数据可视化库。它允许我们生成和构建各种图表。它可以与Seaborn一起使用。
您可以通过以下代码安装matplotlib:
pip install matplotlib
以下是我们可以使用matplotlib构建的不同类型的图表的几个示例:
# 直方图%matplotlib inlineimport matplotlib.pyplot as pltfrom numpy.random import normalx = normal(size=100)plt.hist(x, bins=20)plt.show()
%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 cmfrom mpl_toolkits.mplot3d import Axes3Dimport matplotlib.pyplot as pltimport numpy as npfig = 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()
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()
既然我们已经介绍了Pandas,NumPy和现在的matplotlib,请查看下面的教程,将这三个Python库网格化:
使用NumPy,Matplotlib和Pandas在Python中进行数据探索的终极指南
(https://www.analyticsvidhya.com/blog/2015/04/comprehensive-guide-data-exploration-sas-using-python-numpy-scipy-matplotlib-pandas/)
Seaborn
Seaborn是另一个基于matplotlib的绘图库。它是一个python库,提供高级界面来绘制有吸引力的图形。matplotlib可以做什么,Seaborn只是以更具视觉吸引力的方式做到这一点。
Seaborn的一些功能是:
面向数据集的API,用于检查多个变量之间的关系
方便地查看复杂数据集的整体结构
用于选择显示数据中图案的调色板的工具
您只需使用一行代码即可安装Seaborn:
pip install seaborn
让我们通过一些很酷的图表来看看seaborn能做什么:
import seaborn as snssns.set()tips = sns.load_dataset("tips")sns.relplot(x="total_bill", y="tip", col="time",hue="smoker", style="smoker", size="size",data=tips);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 snssns.catplot(x="day", y="total_bill", hue="smoker",kind="violin", split=True, data=tips);as sns
sns.catplot(x="day", y="total_bill", hue="smoker",
kind="violin", split=True, data=tips);
Bokeh
Bokeh是一个交互式可视化库,面向现代Web浏览器进行演示。它为大量数据集提供了多种图形的优雅构造。
Bokeh可用于创建交互式图表,仪表板和数据应用程序。安装代码:
pip install bokeh
请随意阅读以下文章,了解有关Bokeh的更多信息并查看其中的操作:
使用Bokeh进行交互式数据可视化(在Python中)
(https://www.analyticsvidhya.com/blog/2015/08/interactive-data-visualization-library-python-bokeh/)
欢迎关注磐创博客资源汇总站:
http://docs.panchuang.net/
欢迎关注PyTorch官方中文教程站:
http://pytorch.panchuang.net/
一文总结数据科学家常用的Python库(上)的更多相关文章
- 一文总结数据科学家常用的Python库(下)
用于建模的Python库 我们已经到达了本文最受期待的部分 - 构建模型!这就是我们大多数人首先进入数据科学领域的原因,不是吗? 让我们通过这三个Python库探索模型构建. Scikit-learn ...
- 总结数据科学家常用的Python库
概述 这篇文章中,我们挑选了24个用于数据科学的Python库. 这些库有着不同的数据科学功能,例如数据收集,数据清理,数据探索,建模等,接下来我们会分类介绍. 您觉得我们还应该包含哪些Python库 ...
- Web 开发和数据科学家仍是 Python 开发的两大主力
由于 Python 2 即将退役,使用 Python 3 的开发者大约为 90%,Python 2 的使用量正在迅速减少.而去年仍有 1/4 的人使用 Python 2. Web 开发和数据科学家仍是 ...
- 3 个用于数据科学的顶级 Python 库
使用这些库把 Python 变成一个科学数据分析和建模工具. Python 的许多特性,比如开发效率.代码可读性.速度等使之成为了数据科学爱好者的首选编程语言.对于想要升级应用程序功能的数据科学家和机 ...
- (转载)常用的Python库
http://forum.ubuntu.com.cn/viewtopic.php?f=63&t=249573&p=2640959 Tkinter ---- Python默认的图形界面接 ...
- 安全人员常用的python库
如果你对漏洞挖掘.逆向工程分析或渗透测试感兴趣的话,我第一个要推荐给你的就是Python编程语言.Python不仅语法简单上手容易,而且它还有大量功能强大的库和程序可供我们使用.在这篇文章中,我们会给 ...
- 常用的python 库地址
来源 https://pypi.python.org/pypi wordcloud https://github.com/amueller/word_cloud.git jieba https: ...
- 记录一些常用的python库、软件或者网址
1.数据收集 BeautifulSoup.scrapy.selenium.requests 2.数据分析 pandas.numpy.pyDD.spacy 3.数据可视化 matplotlib.seab ...
- 为什么数据科学家们选择了Python语言?
本文由 伯乐在线 - HanSir 翻译,toolate 校稿 英文出处:Quora [伯乐在线导读]:这个问题来自 Quora,题主还补充说,“似乎很多搞数据的程序员都挺擅长 Python 的,这是 ...
随机推荐
- Django中使用websocket并实现简易聊天室
django使用websocket并实现简易聊天室 django默认只支持http协议 如果你想让django即支持http协议又支持websocket协议,则需要做以下配置 前期配置 前提需要安装c ...
- C++扬帆远航——3(打印图形)
/* * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:tuxing.cpp * 作者:常轩 * 完成日期:2016年3 ...
- Sublime Text3 旧版本下载以及破解激活方式
前言 当前Sublime Text3 出到了32**版本,以前直接输入激活码的方法已经不能使用. 而官网又不提供旧版本的下载链接,因此在此分享旧版本下载方式以及激活方式. 下载方法 通过下面这个链接下 ...
- JUC常用同步工具类——CountDownLatch,CyclicBarrier,Semaphore
在 JUC 下包含了一些常用的同步工具类,今天就来详细介绍一下,CountDownLatch,CyclicBarrier,Semaphore 的使用方法以及它们之间的区别. 一.CountDownLa ...
- 操作系统-CPU管理的直观想法
1. 管理CPU,先要使用CPU 管理CPU的最直观方法 2. 提出问题 有IO指令执行的特别慢,当cpu执行计算指令很快,遇到IO指令cpu进行等待,利用率不高. 使用多道程序.交替执行,这样cpu ...
- GZOJ 1361. 国王游戏【NOIP2012提高组DAY1】
国王游戏[NOIP2012提高组DAY1] Time Limit:1000MS Memory Limit:128000K Description 国王游戏(game.cpp/c/pas) [问题描述] ...
- Python - 字符串格式化详解(%、format)
Python在字符串格式化的两种方式 % format %,关于整数的输出 %o:oct 八进制%d:dec 十进制%x:hex 十六进制 print("整数:%d,%d,%d" ...
- vue项目npm run dev 报错Uncaught SyntaxError: Unexpected token <
目前代码所处位置是micro分支,该分支是从dev分支直接拉下来进行npm run dev的,而dev分支是可以正常运行的,网上的诸多解释是babel转义时候报错,其实对比可见,两个分支不同的地方应该 ...
- oracle的wm_concat函数实现行转列
有以下数据 deptname phone username isboss 部门A 电话1 员工A 0 部门A 电话1 领导A 1 部门B 电话2 员工B 0 部门B 电话2 员工C 0 部门B 电话2 ...
- R调用C++示例
sourceCpp {Rcpp}:Source C++ Code from a File or String sourceCpp(file = "", code = NULL, e ...