Python编程语言及其库:大数据与科学计算中的关键工具
什么是Python

Python作为最流行的编程语言之一,拥有极高的受欢迎程度。随着大数据和人工智能的发展,Python也与多种技术深度绑定。
什么是 Python 库
从代码的角度来看:库是类和函数的集合。
从应用的角度来看:库类似于生活中的工具箱。盒子里有很多做其他事情所必需的工具。例如,如果您想从网站上抓取数据或图像,那么您需要可以处理底层网络连接的代码。这些代码已经写好了。您只需要调用库中的函数或类即可。可以提高开发效率。
面对不同的情况,我们自然需要不同的工具箱。那么,Python 库有哪些呢?
大数据和科学计算
pycuda/opencl:GPU高性能并发计算Pandas,用Python实现的类似R语言的数据统计分析平台。基于NumPy和Matplotlib开发,主要用于数据分析和数据可视化。它的数据结构DataFrame与R语言中的data.frame非常相似。它有自己的一套针对时间序列数据的分析机制,非常好;
开放挖矿:商业智能 (BI),Pandas 的 Web 界面。 blaze、NumPy 和 Pandas 大数据接口。 SciPy 是一个开源的 Python 算法库和数学工具包。 SciPy 包括优化、线性代数、积分、插值、特殊函数、快速傅立叶变换、信号处理和图像处理、常微分方程求解等工程中常用的科学和计算模块;
ScientificPython:一组精选的用于科学计算的 Python 程序模块,包括几何(向量、张量、变换、向量和张量场)、四元数、自动导数、(线性)插值、多项式、基础统计、非线性最小二乘拟合、单位计算,Fortran 兼容文本格式,通过 VRML 进行 3D 显示,以及两个分别用于绘制折线图和 3D 网格模型的 Tk 小工具。此外,还有netCDF、MPI和BSPlib库的接口;
NumPy:一个科学计算库,提供矩阵、线性代数、傅里叶变换等的解决方案,最常用的是它的N维数组对象。 NumPy 提供了两个基本对象:ndarray(N 维数组对象)和 ufunc(通用函数对象);
ndarray:是存储单一数据类型的多维数组,ufunc是可以处理数组的函数。 Cvxopt是一个优化计算包,可以进行线性规划、二次规划、正半定规划等计算。Numba是一个针对科学计算速度的优化编译器。 pymvpa2是一个Python工具包,提供大数据集的统计学习分析。它提供了一个灵活的、可扩展的框架;
PyDy:Python动态建模函数库
SymPy:用于符号数学的 Python 库
statsmodels:Python 的统计建模和计量经济学
astropy:天文学的 Python 库
橙色:橙色,数据挖掘、数据可视化、通过可视化编程或Python脚本进行学习机器分析;
RDKit:化学信息学和机器学习软件
Open Babel:Babel,开放化学工具箱;
cclib:化学软件包的计算函数库
Biopython:免费的生物计算工具包
bccb:与生物分析相关的代码集
bcbio-nextgen:提供全自动、高通量、测序分析工具包;
visvis:视觉计算模块库,可以可视化一维到四维数据;
MapReduce:是Google提出的一种软件[架构],用于大规模数据集(大于1TB)的并行操作。 “Map”和“Reduce”的概念以及它们的主要思想都借鉴于函数式编程语言MapReduce函数库。 MapReduce 的框架和库、PySpark、[Spark] 的 Python API。 dpark,Spark 的 Python 克隆,Spark 是 Python 中的 MapReduce 框架。 Luigi,用于批量工作,构建复杂的管道。 mrjob,一个在 Hadoop 或 Amazon Web Services 上运行的 MapReduce 作业。
人工智能和机器学习
NLTK(自然语言工具包):是Python的自然语言处理工具包。 2001年推出,包含大量自然语言处理方面的数据库和算法实现:分词、词根计算、分类、语义分析等;
Pattern:数据挖掘模块,包括自然语言处理、机器学习工具等;
textblob:提供用于自然语言处理和NLP任务分解的API。基于NLTK和Pattern模块;
jieba:stutter,中文分词工具。 Snownlp,用于处理中文文本库;
loso:中文分词函数库
Gensim:中文CRF基础库,条件随机场(CRF),是一种判别概率模型,随机场的一种,常用于标记或分析序列数据,如自然语言文本或生物序列Gensim。相当专业的主题模型Python工具包,无论是代码还是文档,都可以用来计算两个文档的相似度LIBSVM。
scikits.learn:基于 SciPy 构建的机器学习 Python 模块。它包括简单而高效的数据挖掘和数据分析工具;
PyMC:主要用于贝叶斯分析。 Orange是一款基于组件的数据挖掘和机器学习软件套件,是一个友好、强大、快速、多功能的用于浏览数据分析和可视化的可视化编程前端,包含一系列完整的组件来执行数据预处理并提供以下功能:数据核算、转换、建模、模式评估和探索;
Milk:一个机器学习工具箱,专注于提供监督分类方法和多种有效的分类分析:SVM(基于 libsvm)、K-NN、随机森林经济学和决策树。
PyMVPA(Python中的多元模式分析):它是一个Python工具包,为大型数据集提供统计学习分析。它提供了一个灵活且可扩展的框架。提供分类、回归、特征选择、数据导入导出、可视化等功能。NuPIC是一个开源人工智能平台;
hebel:GPU加速、[深度学习]Python库;
gensim:机器学习库
pybrain:机器学习模块,其目标是为机器学习任务提供灵活、适应性强、功能强大的机器学习算法;
pybrain:包括神经网络、强化学习(以及两者的组合)、无监督学习和进化算法。以神经网络为核心,所有的训练方法都以神经网络为实例。 Mahout 是 Apache 软件基金会 (ASF) 下的一个开源项目。它提供了一些机器学习领域经典算法的可扩展实现,旨在帮助开发者更轻松、更快速地创建智能应用;
Mahout:包含很多实现,包括聚类、分类、推荐过滤、频繁子项挖掘等。此外,通过使用 Apache Hadoop 库,Mahout 可以高效地扩展到云端;
Crab:灵活、快速的推荐引擎。 python-recsys,娱乐系统分析,推荐系统。 Vowpal_porpoise,Vowpal Wabbit 轻量级 Python 包;
Theano:一个Python软件包,用于定义、优化和模拟数学表达式计算,高效解决多维数组计算问题。它使编写深度学习模型变得更加容易,同时还提供了一些在 GPU 上训练模型的选项;
数据分析
Chardet:字符编码检测器,可以自动检测文本、网页、xml的编码;
colorama:主要用于给文本添加各种颜色,非常简单易用;
Prettytable:主要用于在终端或浏览器端构建格式化输出
difflib:Python标准库,计算文本差异;
Levenshtein:快速计算字符串的相似度
fuzzywuzzy:字符串模糊匹配
esmre:正则表达式加速器
Shortuuid:一组简洁的URL/UUID函数库
ftfy:Unicode 文本工具 7
unidecode:ascii 和 Unicode 文本转换函数
xpinyin:汉字转换为拼音的函数库
pangu.py:调整中日韩文字的字母和数字之间的间距;
pyfiglet:用Python编写的figlet程序,使用字符组成ASCII艺术图片;
uniout:从字符串中提取可读可写的字符
Awesome slugify:一个用于处理 Unicode 的 Python slugify 库。
python-slugify:slugify函数库,将Unicode转换为ASCII内码
unicode-slugify:生成unicode内码,Django的依赖包。
ply:Python版本的lex和yacc解析工具
电话号码:解析电话号码、格式、存储和验证国际电话号码
python-user-agents:浏览器用户代理的解析器
sqlparse:SQL 解析器
pygments:通用语法高亮工具
python-nameparser:解析名称并将其分解为单独的组件;
pyparsing:通用解析器生成框架
tablib:表格数据格式,包括XLS、CSV、JSON、YAML;
python-docx:docx文档读取、查询和修改,Microsoft Word 2007/2008的docx文件;
xlwt/xlrd:读写Excel格式的数据文件
xlsxwriter:创建 Excel 格式的 xlsx 文件
xlwings:使用Python调用Excel
csvkit:CSV 文件工具包
marmir:将Python[数据结构]转换为电子表格;
pdfminer:从 PDF 文件中提取信息
pypdf2:用于合并和转换PDF页面的函数库
Python-Markdown:轻量级标记语言Markdown的Python实现
Mistune:用纯 Python 编写的快速、功能齐全的 Markdown 解释器;
dateutil:标准Python官方datetime模块的扩展包,一个字符串日期工具,其中parser将字符串解析为datetime,rrule根据定义的规则生成datetime;
arrow:用于更好地处理日期和时间的 Python 库
chronyk:一个用于解析人类编写的时间和日期的 Python 3 函数库;
delorean:清理期间的函数库
when.py:提供日期和时间的人性化函数;
moment :类似于 Moment.js 的日期/时间 Python 库
pytz:世界时区,使用tz数据库时区信息[database];
BeautifulSoup:一个基于Python的HTML/XML解析器,易于使用且非常强大。即使有 bug 和有问题的 HTML 代码也可以被解析;
lxml:一个快速、易用、灵活的HTML和XML处理库,功能超强大。当遇到有缺陷和不标准的XML时,Python自己的XML处理器可能无法解析它。当报错时,程序会尝试使用lxml的修复模式再次解析;
htmlparser:正式版解析HTML DOM树,偶尔用于从命令行自动提交表单;
pyyaml:YAML 解释器的 Python 版本
html5lib:解析和序列化 HTML 文档和片段
pyquery:类似于[jQuery]的HTML解释器函数库
cssutils:Python CSS 库
MarkupSafe:XML 或 HTML/XHTML 安全字符串标记工具
cssutils - 适用于 Python 的 ACSS 库。 MarkupSafe - 实现了 XML/HTML/XHTML 漂白剂:漂白剂,一个基于 HTML 的白名单函数库;
xmltodict:类似 JSON 的 XML 工具包
xhtml2pdf:HTML/CSS格式转换器,用于生成pdf文档;
untangle:将XML文档转换为Python对象以便于访问;
文件处理
Mimetypes:Python标准库,将文件名映射到MIME类型;
imghdr:Python标准库,确定图像类型。 python-magic,libmagic文件类型识别库,Python接口格式。 path.py,os.path模块的二次封装;
watchdog:一组用于监视文件系统事件的 API 和 shell 实用程序;
Unipath:面向对象的文件/目录操作工具包
pathlib:(Python 3.4版本已作为Python标准库),一个跨平台、面向路径的函数库;
pickle/cPickle:Python的pickle模块实现了基本的数据排序和反序列化。通过pickle模块的序列化操作,我们可以将程序中运行的对象信息保存到文件中并永久保存;通过pickle模块的反序列化操作,我们可以从文件中创建上一个程序保存的对象;
cPickle:是【C语言】实现的版本,速度更快;
ConfigParser:Python标准库、INI文件解析器;
configobj:INI 文件解析器。 config,分层配置,由logging作者编写;
profig:多格式配置转换工具
logging:Python标准库,日志文件生成和管理函数库;
日志:替代日志记录
Sentry:实时日志服务器。 Raven,Sentry 的 Python 客户端;
Sphinx:Sphinx,Python 文档生成器;
reStructuredText:标记语法和解析工具,Docutils 组件。 mkdocs,Markdown 格式文档生成器;
pycco:一个简单、快速、编程风格的文档生成器;
pdoc:自动生成Python库API文档epydoc,从源代码注释生成各种格式文档的工具;
图像处理
PIL(Python Image Library):基于Python的图像处理库,功能强大,对图形文件格式支持广泛。内置许多图像处理功能,如图像增强、滤波【算法】等。 Pillow、图像处理库、PIL图像库分支及升级换代产品。 Matplotlib是著名的绘图库,提供了一整套类似于matlab的命令API来绘制一些高质量的数学二维图形,非常适合交互式绘图。 Brewer2mpl拥有专业的Python配色工具包,从艺术角度提供精美的配色;
PyGame:一个基于Python的多媒体开发和游戏软件开发模块,包含大量的游戏和图像处理功能 Box2d,一个开源的2d物理引擎。愤怒的小鸟就是使用这个物理引擎开发的。 Box2d物理引擎模拟了一个World,你可以设置这个世界中的重力,然后向这个世界中添加各种物体,以及它们的一些物理属性,比如质量、摩擦力、阻尼等;
Pymunk:OpenCV,一个类似于box2d的开源物理图形模拟库,是目前最好的开源图像/视觉库,包括许多图像处理、计算机视觉和[机器学习]的通用算法。 SimpleCV,一个开源计算机视觉框架,类似于opencv。 VTK,可视化工具包(VTK,Visualization Toolkit)是一个开源、跨平台、支持并行处理(VTK曾用于处理近1PB大小的数据,其平台由美国洛斯阿拉莫斯国家实验室拥有)具有 1024 个处理器的大型系统的图形应用程序库);
Aggdraw:一个开源图像库,几乎涵盖了2D图像操作的所有功能。使用起来非常灵活。 Pycairo 是开源矢量绘图库 Cairo 的 python 接口。 Cairo提供了多种背景的二维绘图,高级的也能做到。使用硬件加速。魔杖,Python绑定魔杖工具(MagickWand),C语言API接口;
thumor:智能成像工具,可调整图像大小和翻转图像;
imgSeek:查询相似图像
python-qrcode:纯Python二维码(QR码)生成器
pyBarcode:无需 PIL 模块即可创建条形码;
pygram:类似 Instagram 的图像过滤器
Quads:基于四叉树的计算机艺术
nud.py:裸体检测函数
scikit-image:scikit 工具箱的图像处理库
hmap:图像直方图工具
散景:交互式网页绘图
plotly:Web 协作 Python 和 Matplotlib 绘图
vincent:Vincent,Python Vega的函数库
d3py:Python绘图库,基于D3.JS,ggplot-API兼容R语言的ggplot2.Kartograph.py,用Python绘制漂亮的SVG地图。 pygal,SVG 图表的创建者;
pygraphviz:Graphviz 的 Python 接口
Fonttlools:ttf字体工具功能包,用于fontforge、ttx等字体软件;
数据库
MySQLdb:成熟的[MySQL]数据库模块
Baresql:SQL数据库封装ZODB,Python原生对象数据库,KV对象图数据库;
pickledb:简单、轻量级的 KV 键值存储
TinyDB:轻量级、面向文档的数据库;
mysql-python:MySQL 的 Python 工具库
mysqlclient:mysql-python分支,支持Python 3
PyMySQL:纯Python编写的MySQL驱动,兼容mysql-python;
mysql-connector-python:MySQL连接器,来自[Oracle],用纯Python编写;
oursql:MySQL 连接器,提供本地命令语句和 BLOB 支持;
psycopg2:最流行的 Python PostgreSQL 适配器
txpostgres:基于 Twisted for PostgreSQL 的异步驱动程序;
查询:PostgreSQL 的 psycopg2 函数库;
dataset:存储Python字典数据,用于SQLite、MySQL和PostgreSQL;
cassandra-python-driver:开源分布式NoSQL数据库系统Apache Cassandra系统的Python驱动程序
pycassa:简化的 cassandra 数据库 Python 驱动程序
HappyBase:友好的Apache[Hbase]函数库
PyMongo:官方 MongoDB 客户端
plyvel:一个快速且功能丰富的 LevelDB Python 接口
redis-py:redis 客户端
py2neo:Python客户端(基于Neo4j的RESTful接口)
telephus:基于 Twisted 的 cassandra 客户端
txRedis:基于 Twisted 的 Redis 客户端
本文介绍了六个 Python 库。由于篇幅原因,其余内容将在下一期更新。