9 个鲜为人知的用于数据科学的 Python 库

超越 pandas、scikit-learn 和 matplotlib,学习在 Python 中进行数据科学的一些新技巧。
357 位读者喜欢这个。
Python in a tree

来自 Wikimedia Commons 的 CC0 原始图片

Python 是一门令人惊叹的语言。事实上,它是世界上增长最快的编程语言之一。它一次又一次地证明了其在开发人员职位和跨行业的数据科学职位中的实用性。Python 及其库的整个生态系统使其成为世界各地用户(初学者和高级用户)的合适选择。其成功和受欢迎的原因之一是其强大的库集,这些库使其如此动态和快速。

在本文中,我们将研究一些用于数据科学任务的 Python 库,这些库不同于常用的库,如 pandas、scikit-learnmatplotlib。虽然像 pandas 和 scikit-learn 这样的库是机器学习任务中最先想到的,但了解该领域中的其他 Python 产品总是好的。

Wget

提取数据,尤其是从网络上提取数据,是数据科学家的一项重要任务。Wget 是一个免费实用程序,用于从网络上非交互式下载文件。它支持 HTTP、HTTPS 和 FTP 协议,以及通过 HTTP 代理进行检索。由于它是非交互式的,即使用户未登录,它也可以在后台工作。因此,下次您想下载网站或页面中的所有图像时,wget 将随时为您提供帮助。

安装

$ pip install wget

示例

import wget
url = 'http://www.futurecrew.com/skaven/song_files/mp3/razorback.mp3'

filename = wget.download(url)
100% [................................................] 3841532 / 3841532

filename
'razorback.mp3'

Pendulum

对于在 Python 中处理日期时间时感到沮丧的人来说,Pendulum 来了。它是一个 Python 包,旨在简化 datetime 操作。它是 Python 本机类的直接替代品。有关深入信息,请参阅文档

安装

$ pip install pendulum

示例

import pendulum

dt_toronto = pendulum.datetime(2012, 1, 1, tz='America/Toronto')
dt_vancouver = pendulum.datetime(2012, 1, 1, tz='America/Vancouver')

print(dt_vancouver.diff(dt_toronto).in_hours())

3

Imbalanced-learn

大多数分类算法在每个类中的样本数量几乎相同时(即,平衡)效果最佳。但是现实生活中的案例充满了不平衡的数据集,这可能会对学习阶段和随后的机器学习算法预测产生影响。幸运的是,创建了 imbalanced-learn 库来解决此问题。它与 scikit-learn 兼容,并且是 scikit-learn-contrib 项目的一部分。下次遇到不平衡数据集时,请尝试使用它。

安装

pip install -U imbalanced-learn

# or

conda install -c conda-forge imbalanced-learn

示例

有关用法和示例,请参阅文档

FlashText

在自然语言处理 (NLP) 任务期间清理文本数据通常需要替换或从句子中提取关键字。通常,可以使用正则表达式完成此类操作,但是如果要搜索的术语数量达到数千个,它们可能会变得很麻烦。

Python 的 FlashText 模块基于 FlashText 算法,为这种情况提供了合适的替代方案。FlashText 最好的部分是运行时与搜索词的数量无关。您可以在文档中阅读更多相关信息。

安装

$ pip install flashtext

示例

提取关键字

from flashtext import KeywordProcessor
keyword_processor = KeywordProcessor()

# keyword_processor.add_keyword(<unclean name>, <standardised name>)

keyword_processor.add_keyword('Big Apple', 'New York')
keyword_processor.add_keyword('Bay Area')
keywords_found = keyword_processor.extract_keywords('I love Big Apple and Bay Area.')

keywords_found
['New York', 'Bay Area']

替换关键字

keyword_processor.add_keyword('New Delhi', 'NCR region')

new_sentence = keyword_processor.replace_keywords('I love Big Apple and new delhi.')

new_sentence
'I love New York and NCR region.'

有关更多示例,请参阅文档中的 usage 部分。

FuzzyWuzzy

名称听起来很奇怪,但 FuzzyWuzzy 是一个非常有用的库,它用于字符串匹配。它可以轻松实现诸如字符串比较比率、令牌比率等操作。它对于匹配保存在不同数据库中的记录也很方便。

安装

$ pip install fuzzywuzzy

示例

from fuzzywuzzy import fuzz
from fuzzywuzzy import process

# Simple Ratio

fuzz.ratio("this is a test", "this is a test!")
97

# Partial Ratio
fuzz.partial_ratio("this is a test", "this is a test!")
 100

更多示例可以在 FuzzyWuzzy 的 GitHub 仓库中找到。

PyFlux

时间序列分析是机器学习中最常见的问题之一。PyFlux 是 Python 中的一个开源库,专门为处理时间序列问题而构建。该库拥有一系列优秀的现代时间序列模型,包括但不限于 ARIMAGARCHVAR 模型。简而言之,PyFlux 为时间序列建模提供了一种概率方法。值得一试。

安装

pip install pyflux

示例

有关用法和示例,请参阅文档

IPyvolume

交流结果是数据科学的重要方面,而可视化结果提供了显着的优势。IPyvolume 是一个 Python 库,用于在 Jupyter 笔记本中可视化 3D 体积和字形(例如,3D 散点图),只需最少的配置和工作量。但是,它目前处于 1.0 之前的阶段。一个好的类比是这样的:IPyvolume 的 volshow 对于 3D 数组就像 matplotlib 的 imshow 对于 2D 数组。您可以在文档中阅读更多相关信息。

安装

Using pip
$ pip install ipyvolume

Conda/Anaconda
$ conda install -c conda-forge ipyvolume

示例

动画

Ipyvolume animation

体积渲染

Ipyvolume volume rendering animation

Dash

Dash 是一个高效的 Python 框架,用于构建 Web 应用程序。它构建在 Flask、Plotly.js 和 React.js 之上,并将现代 UI 元素(如下拉菜单、滑块和图形)与您的分析 Python 代码联系起来,而无需 JavaScript。Dash 非常适合构建可以在 Web 浏览器中呈现的数据可视化应用程序。有关更多详细信息,请查阅用户指南

安装

pip install dash==0.29.0  # The core dash backend
pip install dash-html-components==0.13.2  # HTML components
pip install dash-core-components==0.36.0  # Supercharged components
pip install dash-table==3.1.3  # Interactive DataTable component (new!)

示例

以下示例显示了一个具有下拉功能的高度交互式图形。当用户在下拉列表中选择一个值时,应用程序代码会将 Google Finance 中的数据动态导出到 Pandas DataFrame 中。

Dash app example animation

将下拉菜单与 D3.js Plotly 图形绑定的 Dash 应用程序。(来源

Gym

来自 OpenAIGym 是一个用于开发和比较强化学习算法的工具包。它与任何数值计算库兼容,例如 TensorFlow 或 Theano。Gym 库是一组测试问题,也称为环境,您可以使用它们来解决您的强化学习算法。这些环境具有共享接口,允许您编写通用算法。

安装

pip install gym

示例

以下示例将运行环境 CartPole-v0 的一个实例 1,000 个时间步,并在每个步骤渲染环境。

Gym animation

您可以在 Gym 网站上阅读有关 其他环境 的信息。

结论

这些是我挑选的用于数据科学的有用但鲜为人知的 Python 库。如果您知道另一个要添加到此列表中的库,请在下面的评论中提及它。 


最初发布在 Analytics Vidhya Medium 频道上,经许可转载。

Parul
Parul 是一位数据科学和深度学习爱好者。她对创新、教育和编程深感兴趣,并希望通过机器学习解决现实生活中的问题,使其能够对社会产生直接影响。她还对“科技领域的女性”充满热情,并不断鼓励和指导年轻女孩加入 STEM 领域。

6 条评论

还有一些

Panel (panel.pyviz.org) --- 适用于 Python 的简易仪表板
PyViz (pyviz.org) -- 可视化通用站点
Chartify (https://github.com/spotify/chartify/) -- 高级绘图

谢谢 Travis 添加到列表中。

回复 作者 Travis Oliphant (未验证)

new_sentence
'我喜欢新德里和 NCR 地区。'

代替

'我喜欢纽约和 NCR 地区。'

keyword_processor.add_keyword(,
它基本上用标准化名称替换常用名称。因此,当我们运行第一个代码片段时,Big Apple 已被标准化为 New York,在第二个代码片段中,我们将 NCR 地区分配为新德里的标准格式。
因此,Big Apple 和 new delhi 都被重命名。

回复 作者 Raja Purkayastha (未验证)

你好 Parul Pandey,我再怎么强调这个工具的有用性也不为过。它是一个增强版的 python 提示符。它具有完成、历史记录、shell 功能以及更多功能。请务必查看一下 https://mybkexperience.me

Creative Commons 许可协议本作品根据 Creative Commons 署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.