30 个数据工程必备的Python 包

2022-11-11 17:50:01 浏览数 (2)

点击上方“Deephub Imba”,关注公众号,好文章不错过 !

Python 可以说是最容易入门的编程语言,在numpy,scipy等基础包的帮助下,对于数据的处理和机器学习来说Python可以说是目前最好的语言,在各位大佬和热心贡献者的帮助下Python拥有一个庞大的社区支持技术发展,开发两个各种 Python 包来帮助数据人员的工作。

在本文中,将介绍一些非常独特的并且好用的 Python 包,它们可以在许多方面帮助你构建数据的工作流。

1、Knockknock

Knockknock是一个简单的Python包,它会在机器学习模型训练结束或崩溃时通知您。我们可以通过多种渠道获得通知,如电子邮件、Slack、Microsoft Teams等。

为了安装该包,我们使用以下代码。

代码语言:javascript复制
pip install knockknock

例如,我们可以使用以下代码将机器学习建模训练状态通知到指定的电子邮件地址。

代码语言:javascript复制
from knockknock import email_sender
from sklearn.linear_model import LinearRegression
import numpy as np

@email_sender(recipient_emails=["<your_email@address.com>", "<your_second_email@address.com>"], sender_email="<sender_email@gmail.com>")
def train_linear_model(your_nicest_parameters):
    x = np.array([[1, 1], [1, 2], [2, 2], [2, 3]])
    y = np.dot(x, np.array([1, 2]))   3 
    regression = LinearRegression().fit(x, y)
return regression.score(x, y)

这样就可以在该函数出现问题或者完成时获得通知。

2、tqdm

当需要进行迭代或循环时,如果你需要显示进度条?那么tqdm就是你需要的。这个包将在你的笔记本或命令提示符中提供一个简单的进度计。

让我们从安装包开始。

代码语言:javascript复制
pip install tqdm

然后可以使用以下代码来显示循环过程中的进度条。

代码语言:javascript复制
from tqdm import tqdm
q = 0
for i in tqdm(range(10000000)):
    q = i  1

就像上面的gifg,它可以在notebook上显示一个很好的进度条。当有一个复杂的迭代并且想要跟踪进度时,它会非常有用。

3、Pandas-log

Panda -log可以对Panda的基本操作提供反馈,如.query、.drop、.merge等。它基于R的Tidyverse,可以使用它了解所有数据分析步骤。

安装包

代码语言:javascript复制
pip install pandas-log

安装包之后,看看下面的示例。

代码语言:javascript复制
import pandas as pd
import numpy as np
import pandas_log
df = pd.DataFrame({"name": ['Alfred', 'Batman', 'Catwoman'],
                   "toy": [np.nan, 'Batmobile', 'Bullwhip'],
                   "born": [pd.NaT, pd.Timestamp("1940-04-25"),   pd.NaT]})

然后让我们尝试用下面的代码做一个简单的 pandas 操作记录。

代码语言:javascript复制
with pandas_log.enable():
    res = (df.drop("born", axis = 1)
             .groupby('name')
          )

通过 pandas-log,我们可以获取所有的执行信息。

4、Emoji

顾名思义,Emoji 是一个支持 emoji 文本解析的 Python 包。通常,我们很难用 Python 处理表情符号,但 Emoji 包可以帮助我们进行转换。

使用以下代码安装 Emoji 包。

代码语言:javascript复制
pip install emoji

看看下面代码:

代码语言:javascript复制
import emoji
print(emoji.emojize('Python is :thumbs_up:'))

有了这个包,可以轻易的输出表情符号。

5、TheFuzz

TheFuzz 使用 Levenshtein 距离来匹配文本以计算相似度。

代码语言:javascript复制
pip install thefuzz

下面代码介绍如何使用 TheFuzz 进行相似性文本匹配。

代码语言:javascript复制
from thefuzz import fuzz, process

#Testing the score between two sentences
fuzz.ratio("Test the word", "test the Word!")

TheFuzz 还可以同时从多个单词中提取相似度分数。

代码语言:javascript复制
choices = ["Atlanta Falcons", "New York Jets", "New York Giants", "Dallas Cowboys"]
process.extract("new york jets", choices, limit=2)

TheFuzz 适用于任何文本数据相似性检测,这个工作在nlp中非常重要。

6、Numerizer

Numerizer 可将写入的数字文本转换为对应的整数或浮点数。

代码语言:javascript复制
pip install numerizer

然后 让我们尝试几个输入来进行转换。

代码语言:javascript复制
from numerizer import numerize
numerize('forty two')

如果使用另一种书写风格,它也可以工作的。

代码语言:javascript复制
numerize('forty-two')
代码语言:javascript复制
numerize('nine and three quarters')

如果输入不是数字的表达式,那么将会保留:

代码语言:javascript复制
numerize('maybe around nine and three quarters')

7、PyAutoGUI

PyAutoGUI 可以自动控制鼠标和键盘。

代码语言:javascript复制
pip install pyautogui

然后我们可以使用以下代码测试。

代码语言:javascript复制
import pyautogui
pyautogui.moveTo(10, 15)
pyautogui.click()
pyautogui.doubleClick()
pyautogui.press('enter')

上面的代码会将鼠标移动到某个位置并单击鼠标。当需要重复操作(例如下载文件或收集数据)时,非常有用。

8、Weightedcalcs

Weightedcalcs 用于统计计算。用法从简单的统计数据(例如加权平均值、中位数和标准变化)到加权计数和分布等。

代码语言:javascript复制
pip install weightedcalcs

使用可用数据计算加权分布。

代码语言:javascript复制
import seaborn as sns
df = sns.load_dataset('mpg')
import weightedcalcs as wc
calc = wc.Calculator("mpg")

然后我们通过传递数据集并计算预期变量来进行加权计算。

代码语言:javascript复制
calc.distribution(df, "origin")

9、scikit-posthocs

scikit-posthocs 是一个用于“事后”测试分析的 python 包,通常用于统计分析中的成对比较。该软件包提供了简单的类似 scikit-learn API 来进行分析。

代码语言:javascript复制
pip install scikit-posthocs

然后让我们从简单的数据集开始,进行 ANOVA 测试。

代码语言:javascript复制
import statsmodels.api as sa
import statsmodels.formula.api as sfa
import scikit_posthocs as sp
df = sa.datasets.get_rdataset('iris').data
df.columns = df.columns.str.replace('.', '')

lm = sfa.ols('SepalWidth ~ C(Species)', data=df).fit()
anova = sa.stats.anova_lm(lm)
print(anova)

获得了 ANOVA 测试结果,但不确定哪个变量类对结果的影响最大,可以使用以下代码进行原因的查看。

代码语言:javascript复制
sp.posthoc_ttest(df, val_col='SepalWidth', group_col='Species', p_adjust='holm')

使用 scikit-posthoc,我们简化了事后测试的成对分析过程并获得了 P 值

10、Cerberus

Cerberus 是一个用于数据验证的轻量级 python 包。

代码语言:javascript复制
pip install cerberus

Cerberus 的基本用法是验证类的结构。

代码语言:javascript复制
from cerberus import Validator
schema = {'name': {'type': 'string'}, 'gender':{'type': 'string'}, 'age':{'type':'integer'}}
v = Validator(schema)

定义好需要验证的结构后,可以对实例进行验证。

代码语言:javascript复制
document = {'name': 'john doe', 'gender':'male', 'age': 15}
v.validate(document)

如果匹配,则 Validator 类将输出True 。这样我们可以确保数据结构是正确的。

11、ppscore

ppscore 用于计算与目标变量相关的变量的预测能力。该包计算可以检测两个变量之间的线性或非线性关系的分数。分数范围从 0(无预测能力)到 1(完美预测能力)。

代码语言:javascript复制
pip install ppscore

使用 ppscore 包根据目标计算分数。

代码语言:javascript复制
import seaborn as sns
import ppscore as ppsdf = sns.load_dataset('mpg')
pps.predictors(df, 'mpg')

结果进行了排序。排名越低变量对目标的预测能力越低。

12、Maya

Maya 用于尽可能轻松地解析 DateTime 数据。

代码语言:javascript复制
 pip install maya

然后我们可以使用以下代码轻松获得当前日期。

代码语言:javascript复制
import maya
now = maya.now()
print(now)

还可以为明天日期。

代码语言:javascript复制
tomorrow = maya.when('tomorrow')
tomorrow.datetime()

13、Pendulum

Pendulum 是另一个涉及 DateTime 数据的 python 包。它用于简化任何 DateTime 分析过程。

代码语言:javascript复制
pip install pendulum

我们可以对实践进行任何的操作。

代码语言:javascript复制
import pendulum
now = pendulum.now("Europe/Berlin")

now.in_timezone("Asia/Tokyo")

now.to_iso8601_string()

now.add(days=2)

14、category_encoders

category_encoders 是一个用于类别数据编码(转换为数值数据)的python包。该包是各种编码方法的集合,我们可以根据需要将其应用于各种分类数据。

代码语言:javascript复制
pip install category_encoders

可以使用以下示例应用转换。

代码语言:javascript复制
from category_encoders import BinaryEncoder
import pandas as pd

enc = BinaryEncoder(cols=['origin']).fit(df)
numeric_dataset = enc.transform(df)
numeric_dataset.head()

15、scikit-multilearn

scikit-multilearn 可以用于特定于多类分类模型的机器学习模型。该软件包提供 API 用于训练机器学习模型以预测具有两个以上类别目标的数据集。

代码语言:javascript复制
pip install scikit-multilearn

利用样本数据集进行多标签KNN来训练分类器并度量性能指标。

代码语言:javascript复制
from skmultilearn.dataset import load_dataset
from skmultilearn.adapt import MLkNN
import sklearn.metrics as metrics

X_train, y_train, feature_names, label_names = load_dataset('emotions', 'train')
X_test, y_test, _, _ = load_dataset('emotions', 'test')

classifier = MLkNN(k=3)
prediction = classifier.fit(X_train, y_train).predict(X_test)

metrics.hamming_loss(y_test, prediction)

16、Multiset

Multiset类似于内置的set函数,但该包允许相同的字符多次出现。

代码语言:javascript复制
pip install multiset

可以使用下面的代码来使用 Multiset 函数。

代码语言:javascript复制
from multiset import Multiset
set1 = Multiset('aab')
set1

17、Jazzit

Jazzit 可以在我们的代码出错或等待代码运行时播放音乐。

代码语言:javascript复制
pip install jazzit

使用以下代码在错误情况下尝试示例音乐。

代码语言:javascript复制
from jazzit import error_track

@error_track("curb_your_enthusiasm.mp3", wait=5)
def run():
    for num in reversed(range(10)):
        print(10/num)

这个包虽然没什么用,但是它的功能是不是很有趣,哈

18、handcalcs

handcalcs 用于简化notebook中的数学公式过程。它将任何数学函数转换为其方程形式。

代码语言:javascript复制
pip install handcalcs

使用以下代码来测试 handcalcs 包。使用 %%render 魔术命令来渲染 Latex 。

代码语言:javascript复制
import handcalcs.render
from math import sqrt
代码语言:javascript复制
%%rendera = 4
b = 6
c = sqrt(3*a   b/7)

19、NeatText

NeatText 可简化文本清理和预处理过程。它对任何 NLP 项目和文本机器学习项目数据都很有用。

代码语言:javascript复制
pip install neattext

使用下面的代码,生成测试数据

代码语言:javascript复制
import neattext as nt 
mytext = "This is the word sample but ,our WEBSITE is https://exaempleeele.com 


	

0 人点赞