データ エンジニアリングに不可欠な 30 の Python パッケージ

PHPz
リリース: 2023-04-12 16:58:07
転載
1745 人が閲覧しました

Python は、最も簡単に始められるプログラミング言語であると言えます。numpy や scipy などの基本的なパッケージの助けを借りて、Python は現在、データ処理と機械学習に最適な言語であると言えます。専門家と熱心な Python には、テクノロジー開発をサポートする寄稿者の大規模なコミュニティがあり、データ サイエンティストの作業を支援するために 2 つのさまざまな Python パッケージが開発されています。

データ エンジニアリングに不可欠な 30 の Python パッケージ

この記事では、さまざまな方法でデータ ワークフローを構築するのに役立つ、非常にユニークで使いやすい Python パッケージをいくつか紹介します。

1. Knockknock

Knockknock は、機械学習モデルのトレーニングが終了またはクラッシュしたときに通知するシンプルな Python パッケージです。電子メール、Slack、Microsoft Teams などの複数のチャネルを通じて通知を受け取ることができます。

このパッケージをインストールするには、次のコードを使用します。

pip install knockknock
ログイン後にコピー

たとえば、次のコードを使用して、機械学習モデリングのトレーニング ステータスを指定の電子メール アドレスに通知できます。

from knockknock import email_senderfrom sklearn.linear_model import LinearRegressionimport 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 tqdmq = 0for i in tqdm(range(10000000)):q = i +1
ログイン後にコピー

データ エンジニアリングに不可欠な 30 の Python パッケージ

上の gifg のように、ノートブック上に素敵な進行状況バーを表示できます。複雑な反復があり、進行状況を追跡したい場合に便利です。

3. Pandas-log

Panda -log は、.query、.drop、.merge などの Panda の基本操作に関するフィードバックを提供できます。これは R の Tidyverse に基づいており、すべてのデータ分析ステップを理解するために使用できます。

パッケージをインストールする

pip install pandas-log
ログイン後にコピー

パッケージをインストールした後、以下の例を見てください。

import pandas as pdimport numpy as npimport pandas_logdf = pd.DataFrame({"name": ['Alfred', 'Batman', 'Catwoman'],"toy": [np.nan, 'Batmobile', 'Bullwhip'],"born": [pd.NaT, pd.Timestamp("1940-04-25"), pd.NaT]})
ログイン後にコピー

それでは、次のコードを使用して簡単なパンダの操作記録を作成してみましょう。

with pandas_log.enable():res = (df.drop("born", axis = 1).groupby('name'))
ログイン後にコピー

データ エンジニアリングに不可欠な 30 の Python パッケージ

pandas-log を通じて、すべての実行情報を取得できます。

4. Emoji

名前が示すように、Emoji は絵文字テキストの解析をサポートする Python パッケージです。通常、Python で絵文字を処理するのは困難ですが、Emoji パッケージは変換に役立ちます。

次のコードを使用して絵文字パッケージをインストールします。

pip install emoji
ログイン後にコピー

次のコードを見てください:

import emojiprint(emoji.emojize('Python is :thumbs_up:'))
ログイン後にコピー

データ エンジニアリングに不可欠な 30 の Python パッケージ

このパッケージを使用すると、簡単に絵文字を出力できます。

5, TheFuzz

TheFuzz は、レーベンシュタイン距離を使用してテキストを照合し、類似性を計算します。

pip install thefuzz
ログイン後にコピー

次のコードは、類似テキスト マッチングに TheFuzz を使用する方法を説明しています。

from thefuzz import fuzz, process#Testing the score between two sentencesfuzz.ratio("Test the word", "test the Word!")
ログイン後にコピー

データ エンジニアリングに不可欠な 30 の Python パッケージ

TheFuzz は、複数の単語から同時に類似性スコアを抽出することもできます。

choices = ["Atlanta Falcons", "New York Jets", "New York Giants", "Dallas Cowboys"]process.extract("new york jets", choices, limit=2)
ログイン後にコピー

データ エンジニアリングに不可欠な 30 の Python パッケージ

TheFuzz はあらゆるテキスト データの類似性検出に適しており、この作業は NLP において非常に重要です。

6. Numerizer

Numerizer は、書き込まれた数値テキストを、対応する整数または浮動小数点数に変換できます。

pip install numerizer
ログイン後にコピー

それでは、いくつかの入力を試して変換してみましょう。

from numerizer import numerizenumerize('forty two')
ログイン後にコピー

データ エンジニアリングに不可欠な 30 の Python パッケージ

別の書き方を使用しても機能します。

numerize('forty-two')
ログイン後にコピー

データ エンジニアリングに不可欠な 30 の Python パッケージ

numerize('nine and three quarters')
ログイン後にコピー

データ エンジニアリングに不可欠な 30 の Python パッケージ

入力が数値式でない場合、それは保持されます:

numerize('maybe around nine and three quarters')
ログイン後にコピー

データ エンジニアリングに不可欠な 30 の Python パッケージ

7、PyAutoGUI

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

pip install pyautogui
ログイン後にコピー

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

import pyautoguipyautogui.moveTo(10, 15)pyautogui.click()pyautogui.doubleClick()pyautogui.press('enter')
ログイン後にコピー

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

8、Weightedcalcs

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

pip install weightedcalcs
ログイン後にコピー

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

import seaborn as snsdf = sns.load_dataset('mpg')import weightedcalcs as wccalc = wc.Calculator("mpg")
ログイン後にコピー

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

calc.distribution(df, "origin")
ログイン後にコピー

データ エンジニアリングに不可欠な 30 の Python パッケージ

9、scikit-posthocs

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

pip install scikit-posthocs
ログイン後にコピー

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

import statsmodels.api as saimport statsmodels.formula.api as sfaimport scikit_posthocs as spdf = sa.datasets.get_rdataset('iris').datadf.columns = df.columns.str.replace('.', '')lm = sfa.ols('SepalWidth ~ C(Species)', data=df).fit()anova = sa.stats.anova_lm(lm)print(anova)
ログイン後にコピー

データ エンジニアリングに不可欠な 30 の Python パッケージ

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

sp.posthoc_ttest(df, val_col='SepalWidth', group_col='Species', p_adjust='holm')
ログイン後にコピー

データ エンジニアリングに不可欠な 30 の Python パッケージ

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

10、Cerberus

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

pip install cerberus
ログイン後にコピー

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

from cerberus import Validatorschema = {'name': {'type': 'string'}, 'gender':{'type': 'string'}, 'age':{'type':'integer'}}v = Validator(schema)
ログイン後にコピー

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

document = {'name': 'john doe', 'gender':'male', 'age': 15}v.validate(document)
ログイン後にコピー

データ エンジニアリングに不可欠な 30 の Python パッケージ

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

11、ppscore

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

pip install ppscore
ログイン後にコピー

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

import seaborn as snsimport ppscore as ppsdf = sns.load_dataset('mpg')pps.predictors(df, 'mpg')
ログイン後にコピー

データ エンジニアリングに不可欠な 30 の Python パッケージ

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

12、Maya

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

pip install maya
ログイン後にコピー

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

import mayanow = maya.now()print(now)
ログイン後にコピー

还可以为明天日期。

tomorrow = maya.when('tomorrow')tomorrow.datetime()
ログイン後にコピー

データ エンジニアリングに不可欠な 30 の Python パッケージ

13、Pendulum

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

pip install pendulum
ログイン後にコピー

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

import pendulumnow = pendulum.now("Europe/Berlin")now.in_timezone("Asia/Tokyo")now.to_iso8601_string()now.add(days=2)
ログイン後にコピー

データ エンジニアリングに不可欠な 30 の Python パッケージ

14、category_encoders

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

pip install category_encoders
ログイン後にコピー

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

from category_encoders import BinaryEncoderimport pandas as pdenc = BinaryEncoder(cols=['origin']).fit(df)numeric_dataset = enc.transform(df)numeric_dataset.head()
ログイン後にコピー

データ エンジニアリングに不可欠な 30 の Python パッケージ

15、scikit-multilearn

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

pip install scikit-multilearn
ログイン後にコピー

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

from skmultilearn.dataset import load_datasetfrom skmultilearn.adapt import MLkNNimport sklearn.metrics as metricsX_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)
ログイン後にコピー

データ エンジニアリングに不可欠な 30 の Python パッケージ

16、Multiset

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

pip install multiset
ログイン後にコピー

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

from multiset import Multisetset1 = Multiset('aab')set1
ログイン後にコピー

データ エンジニアリングに不可欠な 30 の Python パッケージ

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.renderfrom math import sqrt
ログイン後にコピー
%%rendera = 4b = 6c = sqrt(3*a + b/7)
ログイン後にコピー

データ エンジニアリングに不可欠な 30 の Python パッケージ

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()
ログイン後にコピー

データ エンジニアリングに不可欠な 30 の Python パッケージ

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

docx.normalize()
ログイン後にコピー

データ エンジニアリングに不可欠な 30 の Python パッケージ

20、Combo

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

pip install combo
ログイン後にコピー

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

from sklearn.tree import DecisionTreeClassifierfrom sklearn.linear_model import LogisticRegressionfrom sklearn.ensemble import GradientBoostingClassifierfrom sklearn.ensemble import RandomForestClassifierfrom sklearn.neighbors import KNeighborsClassifierfrom sklearn.model_selection import train_test_splitfrom sklearn.datasets import load_breast_cancerfrom combo.models.classifier_stacking import Stackingfrom combo.utils.data import evaluate_print
ログイン後にコピー

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

# Define data file and read X and yrandom_state = 42X, 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 clfsclassifiers = [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()
ログイン後にコピー

データ エンジニアリングに不可欠な 30 の Python パッケージ

使用 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)
ログイン後にコピー

データ エンジニアリングに不可欠な 30 の Python パッケージ

21、PyAztro

你是否需要星座数据或只是对今天的运气感到好奇? 可以使用 PyAztro 来获得这些信息! 这个包有幸运数字、幸运标志、心情等等。 这是我们人工智能算命的基础数据,哈

pip install pyaztro
ログイン後にコピー

使用以下代码访问今天的星座信息。

import pyaztropyaztro.Aztro(sign='gemini').description
ログイン後にコピー

データ エンジニアリングに不可欠な 30 の Python パッケージ

22、Faker

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

pip install Faker
ログイン後にコピー

要使用 Faker 包生成合成数据

from faker import Fakerfake = Faker()
ログイン後にコピー

生成名字

fake.name()
ログイン後にコピー

データ エンジニアリングに不可欠な 30 の Python パッケージ

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

23、Fairlearn

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

pip install fairlearn
ログイン後にコピー

然后可以使用 Fairlearn 的数据集来查看模型中有多少偏差。

from fairlearn.metrics import MetricFrame, selection_ratefrom fairlearn.datasets import fetch_adultdata = fetch_adult(as_frame=True)X = data.datay_true = (data.target == '>50K') * 1sex = 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')
ログイン後にコピー

データ エンジニアリングに不可欠な 30 の Python パッケージ

Fairlearn API 有一个 selection_rate 函数,可以使用它来检测组模型预测之间的分数差异,以便我们可以看到结果的偏差。

24、tiobeindexpy

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

pip install tiobeindexpy
ログイン後にコピー

可以通过以下代码获得当月前 20 名的编程语言排名。

from tiobeindexpy import tiobeindexpy as tbdf = tb.top_20()
ログイン後にコピー

データ エンジニアリングに不可欠な 30 の Python パッケージ

25、pytrends

pytrends 可以使用 Google API 获取关键字趋势数据。如果想要了解当前的网络趋势或与我们的关键字相关的趋势时,该软件包非常有用。这个需要访问google,所以你懂的。

pip install pytrends
ログイン後にコピー

假设我想知道与关键字“Present Gift”相关的当前趋势,

from pytrends.request import TrendReqimport pandas as pdpytrend = TrendReq()keywords = pytrend.suggestions(keyword='Present Gift')df = pd.DataFrame(keywords)df
ログイン後にコピー

データ エンジニアリングに不可欠な 30 の Python パッケージ

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

26、visions

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

pip install visions
ログイン後にコピー

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

import seaborn as snsfrom visions.functional import detect_type, infer_typefrom visions.typesets import CompleteSetdf = sns.load_dataset('titanic')typeset = CompleteSet()converting everything to stringsprint(detect_type(df, typeset))
ログイン後にコピー

データ エンジニアリングに不可欠な 30 の Python パッケージ

27、Schedule

Schedule 可以为任何代码创建作业调度功能

pip install schedule
ログイン後にコピー

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

import scheduleimport timedef job():print("I'm working...")schedule.every(10).seconds.do(job)while True:schedule.run_pending()time.sleep(1)
ログイン後にコピー

データ エンジニアリングに不可欠な 30 の Python パッケージ

28、autocorrect

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

pip install autocorrect
ログイン後にコピー

可以使用类似于以下代码进行自动更正。

from autocorrect import Spellerspell = Speller()spell("I'm not sleaspy and tehre is no place I'm giong to.")
ログイン後にコピー

データ エンジニアリングに不可欠な 30 の Python パッケージ

29、funcy

funcy 包含用于日常数据分析使用的精美实用功能。 包中的功能太多了,我无法全部展示出来,有兴趣的请查看他的文档。

pip install funcy
ログイン後にコピー

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

from funcy import select, evenselect(even, {i for i in range (20)})
ログイン後にコピー

データ エンジニアリングに不可欠な 30 の Python パッケージ

30、IceCream

IceCream 可以使调试过程更容易。该软件包在打印/记录过程中提供了更详细的输出。

pip install icecream
ログイン後にコピー

可以使用下面代码

from icecream import icdef some_function(i):i = 4 + (1 * 2)/ 10 return i + 35ic(some_function(121))
ログイン後にコピー

データ エンジニアリングに不可欠な 30 の Python パッケージ

也可以用作函数检查器。

def foo():ic()if some_function(12):ic()else:ic()foo()
ログイン後にコピー

データ エンジニアリングに不可欠な 30 の Python パッケージ

印刷される詳細レベルは分析に最適です。

概要

この記事では、データ作業に役立つ 30 個のユニークな Python パッケージをまとめます。ほとんどのソフトウェア パッケージは使いやすく、シンプルで明確ですが、中にはさらに多くの機能があり、ドキュメントをさらに読む必要があるものもあります。興味がある場合は、pypi の Web サイトにアクセスして、パッケージのホームページとドキュメントを検索して表示してください。この記事がお役に立てば幸いです。

以上がデータ エンジニアリングに不可欠な 30 の Python パッケージの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:51cto.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート