Python 是一种令人惊叹的语言。 事实上,它是世界上发展最快的编程语言之一。 它一次又一次地证明了其在各个行业的开发人员职位和数据科学职位中的实用性。 整个 Python 及其库的生态系统使其成为世界各地用户(初学者和高级用户)的合适选择。 其成功和受欢迎的原因之一是其强大的库集合,这使其如此动态和快速。
在本文中,我们将介绍一些用于数据科学任务的 Python 库,除了常用的库,如 pandas、scikit-learn 和 matplotlib。 尽管像 pandas 和 scikit-learn 这样的库是进行机器学习任务时首先想到的,但了解该领域的其他 Python 产品总是好的。
Wget
提取数据,尤其是从 Web 提取数据,是数据科学家的一项重要任务。 Wget 是一个免费实用程序,用于从 Web 非交互式下载文件。 它支持 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.'
有关更多示例,请参阅文档中的用法部分。
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 中的一个开源库,它专门用于处理时间序列问题。 该库拥有出色的现代时间序列模型阵列,包括但不限于 ARIMA、GARCH 和 VAR 模型。 简而言之,PyFlux 提供了一种时间序列建模的概率方法。 值得一试。
安装
pip install pyflux
示例
有关用法和示例,请参阅文档。
IPyvolume
传达结果是数据科学的一个重要方面,而可视化结果提供了显着的优势。 IPyvolume 是一个 Python 库,用于以最少的配置和精力在 Jupyter 笔记本中可视化 3D 体积和字形(例如,3D 散点图)。 但是,它目前处于 pre-1.0 阶段。 一个很好的类比是这样的:IPyvolume 的 volshow 对于 3D 数组就像 matplotlib 的 imshow 对于 2D 数组一样。 你可以在文档中阅读更多内容。
安装
Using pip
$ pip install ipyvolume
Conda/Anaconda
$ conda install -c conda-forge ipyvolume
示例
动画

体积渲染

Dash
Dash 是一个用于构建 Web 应用程序的高效 Python 框架。 它构建在 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 应用程序将下拉菜单绑定到 D3.js Plotly 图表。(来源)
Gym
来自 OpenAI 的 Gym 是一个用于开发和比较强化学习算法的工具包。 它与任何数值计算库兼容,例如 TensorFlow 或 Theano。 Gym 库是测试问题(也称为环境)的集合,你可以使用它们来解决你的强化学习算法。 这些环境具有共享接口,允许你编写通用算法。
安装
pip install gym
示例
以下示例将运行环境 CartPole-v0 的一个实例 1,000 个时间步,并在每个步骤中渲染环境。

你可以在 Gym 网站上阅读有关其他环境的信息。
结论
这些是我为数据科学选择的有用但鲜为人知的 Python 库。 如果你知道要添加到此列表的另一个库,请在下面的评论中提及。
这最初发布在 Analytics Vidhya Medium 频道上,并经许可转载。
6 条评论