乐趣区

关于人工智能:30-个数据工程必备的Python-包

Python 能够说是最容易入门的编程语言,在 numpy,scipy 等根底包的帮忙下,对于数据的解决和机器学习来说 Python 能够说是目前最好的语言,在各位大佬和热心贡献者的帮忙下 Python 领有一个宏大的社区反对技术倒退,开发两个各种 Python 包来帮忙数据人员的工作。

在本文中,将介绍一些十分独特的并且好用的 Python 包,它们能够在许多方面帮忙你构建数据的工作流。

1、Knockknock

Knockknock 是一个简略的 Python 包,它会在机器学习模型训练完结或解体时告诉您。咱们能够通过多种渠道取得告诉,如电子邮件、Slack、Microsoft Teams 等。

为了装置该包,咱们应用以下代码。

pip install knockknock

例如,咱们能够应用以下代码将机器学习建模训练状态告诉到指定的电子邮件地址。

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 就是你须要的。这个包将在你的笔记本或命令提示符中提供一个简略的进度计。

让咱们从安装包开始。

pip install tqdm

而后能够应用以下代码来显示循环过程中的进度条。

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,能够应用它理解所有数据分析步骤。

安装包

pip install pandas-log

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

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 操作记录。

with pandas_log.enable():
    res = (df.drop("born", axis = 1)
             .groupby('name')
          )

通过 pandas-log,咱们能够获取所有的执行信息。

4、Emoji

顾名思义,Emoji 是一个反对 emoji 文本解析的 Python 包。通常,咱们很难用 Python 解决表情符号,但 Emoji 包能够帮忙咱们进行转换。

应用以下代码装置 Emoji 包。

pip install emoji

看看上面代码:

import emoji
print(emoji.emojize('Python is :thumbs_up:'))

有了这个包,能够轻易的输入表情符号。

5、TheFuzz

TheFuzz 应用 Levenshtein 间隔来匹配文本以计算类似度。

pip install thefuzz

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

from thefuzz import fuzz, process

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

TheFuzz 还能够同时从多个单词中提取类似度分数。

choices = ["Atlanta Falcons", "New York Jets", "New York Giants", "Dallas Cowboys"]
process.extract("new york jets", choices, limit=2)

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

6、Numerizer

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

pip install numerizer

而后 让咱们尝试几个输出来进行转换。

from numerizer import numerize
numerize('forty two')

如果应用另一种书写格调,它也能够工作的。

numerize('forty-two')
numerize('nine and three quarters')

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

numerize('maybe around nine and three quarters')

7、PyAutoGUI

PyAutoGUI 能够自动控制鼠标和键盘。

pip install pyautogui

而后咱们能够应用以下代码测试。

import pyautogui
pyautogui.moveTo(10, 15)
pyautogui.click()
pyautogui.doubleClick()
pyautogui.press('enter')

下面的代码会将鼠标挪动到某个地位并单击鼠标。当须要反复操作(例如下载文件或收集数据)时,十分有用。

8、Weightedcalcs

Weightedcalcs 用于统计计算。用法从简略的统计数据(例如加权平均值、中位数和规范变动)到加权计数和散布等。

pip install weightedcalcs

应用可用数据计算加权散布。

import seaborn as sns
df = sns.load_dataset('mpg')
import weightedcalcs as wc
calc = wc.Calculator("mpg")

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

calc.distribution(df, "origin")

9、scikit-posthocs

scikit-posthocs 是一个用于“预先”测试剖析的 python 包,通常用于统计分析中的成对比拟。该软件包提供了简略的相似 scikit-learn API 来进行剖析。

pip install scikit-posthocs

而后让咱们从简略的数据集开始,进行 ANOVA 测试。

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 测试后果,但不确定哪个变量类对后果的影响最大,能够应用以下代码进行起因的查看。

sp.posthoc_ttest(df, val_col='SepalWidth', group_col='Species', p_adjust='holm')

应用 scikit-posthoc,咱们简化了预先测试的成对剖析过程并取得了 P 值

10、Cerberus

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

pip install cerberus

Cerberus 的根本用法是验证类的构造。

from cerberus import Validator
schema = {'name': {'type': 'string'}, 'gender':{'type': 'string'}, 'age':{'type':'integer'}}
v = Validator(schema)

定义好须要验证的构造后,能够对实例进行验证。

document = {'name': 'john doe', 'gender':'male', 'age': 15}
v.validate(document)

如果匹配,则 Validator 类将输入 True。这样咱们能够确保数据结构是正确的。

11、ppscore

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

pip install ppscore

应用 ppscore 包依据指标计算分数。

import seaborn as sns
import ppscore as ppsdf = sns.load_dataset('mpg')
pps.predictors(df, 'mpg')

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

12、Maya

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

 pip install maya

而后咱们能够应用以下代码轻松取得以后日期。

import maya
now = maya.now()
print(now)

还能够为今天日期。

tomorrow = maya.when('tomorrow')
tomorrow.datetime()

13、Pendulum

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

pip install pendulum

咱们能够对实际进行任何的操作。

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 包。该包是各种编码方法的汇合,咱们能够依据须要将其利用于各种分类数据。

pip install category_encoders

能够应用以下示例利用转换。

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 用于训练机器学习模型以预测具备两个以上类别指标的数据集。

pip install scikit-multilearn

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

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 函数,但该包容许雷同的字符屡次呈现。

pip install multiset

能够应用上面的代码来应用 Multiset 函数。

from multiset import Multiset
set1 = Multiset('aab')
set1

17、Jazzit

Jazzit 能够在咱们的代码出错或期待代码运行时播放音乐。

pip install jazzit

应用以下代码在谬误状况下尝试示例音乐。

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 中的数学公式过程。它将任何数学函数转换为其方程模式。

pip install handcalcs

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

import handcalcs.render
from math import sqrt
%%rendera = 4
b = 6
c = sqrt(3*a + b/7)

19、NeatText

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

pip install neattext

应用上面的代码,生成测试数据

import neattext as nt 
mytext = "This is the word sample but ,our WEBSITE is https://exaempleeele.com 😊✨."
docx = nt.TextFrame(text=mytext)

TextFrame 用于启动 NeatText 类而后能够应用各种函数来查看和清理数据。

docx.describe()

应用 describe 函数,能够显示每个文本统计信息。进一步清理数据,能够应用以下代码。

docx.normalize()

20、Combo

Combo 是一个用于机器学习模型和分数组合的 python 包。该软件包提供了一个工具箱,容许将各种机器学习模型训练成一个模型。也就是能够对模型进行整合。

pip install combo

应用来自 scikit-learn 的乳腺癌数据集和来自 scikit-learn 的各种分类模型来创立机器学习组合。

from sklearn.tree import DecisionTreeClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.neighbors import KNeighborsClassifier

from sklearn.model_selection import train_test_split
from sklearn.datasets import load_breast_cancer

from combo.models.classifier_stacking import Stacking
from combo.utils.data import evaluate_print

接下来,看一下用于预测指标的单个分类器。

# Define data file and read X and y
random_state = 42
X, y = load_breast_cancer(return_X_y=True)X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4,random_state=random_state)
# initialize a group of clfs
classifiers = [DecisionTreeClassifier(random_state=random_state),
                   LogisticRegression(random_state=random_state),
                   KNeighborsClassifier(),
                   RandomForestClassifier(random_state=random_state),
                   GradientBoostingClassifier(random_state=random_state)]
clf_names = ['DT', 'LR', 'KNN', 'RF', 'GBDT']

for i, clf in enumerate(classifiers):
    clf.fit(X_train, y_train)
    y_test_predict = clf.predict(X_test)
    evaluate_print(clf_names[i] + '|', y_test, y_test_predict)
    print()

应用 Combo 包的 Stacking 模型。

clf = Stacking(classifiers, n_folds=4, shuffle_data=False,
                   keep_original=True, use_proba=False,
                   random_state=random_state)

clf.fit(X_train, y_train)
y_test_predict = clf.predict(X_test)

evaluate_print('Stacking |', y_test, y_test_predict)

21、PyAztro

你是否须要星座数据或只是对明天的运气感到好奇?能够应用 PyAztro 来取得这些信息!这个包有侥幸数字、侥幸标记、情绪等等。这是咱们人工智能算命的根底数据,哈

pip install pyaztro

应用以下代码拜访明天的星座信息。

import pyaztro
pyaztro.Aztro(sign='gemini').description

22、Faker

Faker 可用于简化生成合成数据。许多开发人员应用这个包来创立测试的数据。

pip install Faker

要应用 Faker 包生成合成数据

from faker import Faker
fake = Faker()

生成名字

fake.name()

每次从 Faker 类获取 .name 属性时,Faker 都会随机生成数据。

23、Fairlearn

Fairlearn 用于评估和加重机器学习模型中的不公平性。该软件包提供了许多查看偏差所必须的 API。

pip install fairlearn

而后能够应用 Fairlearn 的数据集来查看模型中有多少偏差。

from fairlearn.metrics import MetricFrame, selection_rate
from fairlearn.datasets import fetch_adult

data = fetch_adult(as_frame=True)
X = data.data
y_true = (data.target == '>50K') * 1
sex = X['sex']

selection_rates = MetricFrame(metrics=selection_rate,
                              y_true=y_true,
                              y_pred=y_true,
                              sensitive_features=sex)

fig = selection_rates.by_group.plot.bar(
    legend=False, rot=0,
    title='Fraction earning over $50,000')

Fairlearn API 有一个 selection_rate 函数,能够应用它来检测组模型预测之间的分数差别,以便咱们能够看到后果的偏差。

24、tiobeindexpy

tiobeindexpy 用于获取 TIOBE 索引数据。TIOBE 指数是一个编程排名数据,对于开发人员来说是十分重要的因为咱们不想错过编程世界的下一件小事。

pip install tiobeindexpy

能够通过以下代码取得当月前 20 名的编程语言排名。

from tiobeindexpy import tiobeindexpy as tb
df = tb.top_20()

25、pytrends

pytrends 能够应用 Google API 获取关键字趋势数据。如果想要理解以后的网络趋势或与咱们的关键字相干的趋势时,该软件包十分有用。这个须要拜访 google,所以你懂的。

pip install pytrends

假如我想晓得与关键字“Present Gift”相干的以后趋势,

from pytrends.request import TrendReq
import pandas as pd
pytrend = TrendReq()

keywords = pytrend.suggestions(keyword='Present Gift')
df = pd.DataFrame(keywords)
df

该包将返回与关键字相干的前 5 个趋势。

26、visions

visions 是一个用于语义数据分析的 python 包。该包能够检测数据类型并推断列的数据应该是什么。

pip install visions

能够应用以下代码检测数据中的列数据类型。这里应用 seaborn 的 Titanic 数据集。

import seaborn as sns
from visions.functional import detect_type, infer_type
from visions.typesets import CompleteSet
df = sns.load_dataset('titanic')
typeset = CompleteSet()

converting everything to strings
print(detect_type(df, typeset))

27、Schedule

Schedule 能够为任何代码创立作业调度性能

pip install schedule

例如,咱们想 10 秒工作一次:

import schedule
import time

def job():
    print("I'm working...")

schedule.every(10).seconds.do(job)

while True:
    schedule.run_pending()
    time.sleep(1)

28、autocorrect

autocorrect 是一个用于文本拼写更正的 python 包,可利用于多种语言。用法很简略,并且对数据清理过程十分有用。

pip install autocorrect

能够应用相似于以下代码进行主动更正。

from autocorrect import Speller
spell = Speller()
spell("I'm not sleaspy and tehre is no place I'm giong to.")

29、funcy

funcy 蕴含用于日常数据分析应用的精美实用功能。包中的性能太多了,我无奈全副展现进去,有趣味的请查看他的文档。

pip install funcy

这里只展现一个示例函数,用于从可迭代变量中抉择一个偶数,如上面的代码所示。

from funcy import select, even
select(even, {i for i in range (20)})

30、IceCream

IceCream 能够使调试过程更容易。该软件包在打印 / 记录过程中提供了更具体的输入。

pip install icecream

能够应用上面代码

from icecream import ic

def some_function(i):
    i = 4 + (1 * 2)/ 10 
    return i + 35

ic(some_function(121))

也能够用作函数查看器。

def foo():
    ic()

    if some_function(12):
        ic()
    else:
        ic()

foo()

打印的具体水平非常适合剖析

总结

在本文中,总结了 30 个在数据工作中有用的独特 Python 包。大多数软件包易于应用且简单明了,但有些可能性能较多须要进一步浏览其文档,如果你有趣味请去 pypi 网站搜寻并查看该软件包的主页和文档,心愿本文对你有所帮忙。

https://avoid.overfit.cn/post/b8a5170206934a119d1420dbb358bbc6

作者:Cornellius Yudha Wijaya

退出移动版