這篇文章主要介紹“有哪些數(shù)據(jù)工程必備的Python包”的相關(guān)知識(shí),小編通過(guò)實(shí)際案例向大家展示操作過(guò)程,操作方法簡(jiǎn)單快捷,實(shí)用性強(qiáng),希望這篇“有哪些數(shù)據(jù)工程必備的Python包”文章能幫助大家解決問(wèn)題。
創(chuàng)新互聯(lián)是一家專注于成都做網(wǎng)站、網(wǎng)站制作和雅安電信機(jī)房的網(wǎng)絡(luò)公司,有著豐富的建站經(jīng)驗(yàn)和案例。
Knockknock是一個(gè)簡(jiǎn)單的Python包,它會(huì)在機(jī)器學(xué)習(xí)模型訓(xùn)練結(jié)束或崩潰時(shí)通知您。我們可以通過(guò)多種渠道獲得通知,如電子郵件、Slack、Microsoft Teams等。
為了安裝該包,我們使用以下代碼。
pip install knockknock
例如,我們可以使用以下代碼將機(jī)器學(xué)習(xí)建模訓(xùn)練狀態(tài)通知到指定的電子郵件地址。
from knockknock import email_senderfrom sklearn.linear_model import LinearRegressionimport numpy as np@email_sender(recipient_emails=["", ""], sender_email="")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)
這樣就可以在該函數(shù)出現(xiàn)問(wèn)題或者完成時(shí)獲得通知。
當(dāng)需要進(jìn)行迭代或循環(huán)時(shí),如果你需要顯示進(jìn)度條?那么tqdm就是你需要的。這個(gè)包將在你的筆記本或命令提示符中提供一個(gè)簡(jiǎn)單的進(jìn)度計(jì)。
讓我們從安裝包開始。
pip install tqdm
然后可以使用以下代碼來(lái)顯示循環(huán)過(guò)程中的進(jìn)度條。
from tqdm import tqdmq = 0for i in tqdm(range(10000000)):q = i +1
就像上面的gifg,它可以在notebook上顯示一個(gè)很好的進(jìn)度條。當(dāng)有一個(gè)復(fù)雜的迭代并且想要跟蹤進(jìn)度時(shí),它會(huì)非常有用。
Panda -log可以對(duì)Panda的基本操作提供反饋,如.query、.drop、.merge等。它基于R的Tidyverse,可以使用它了解所有數(shù)據(jù)分析步驟。
安裝包
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]})
然后讓我們嘗試用下面的代碼做一個(gè)簡(jiǎn)單的 pandas 操作記錄。
with pandas_log.enable():res = (df.drop("born", axis = 1).groupby('name'))
通過(guò) pandas-log,我們可以獲取所有的執(zhí)行信息。
顧名思義,Emoji 是一個(gè)支持 emoji 文本解析的 Python 包。 通常,我們很難用 Python 處理表情符號(hào),但 Emoji 包可以幫助我們進(jìn)行轉(zhuǎn)換。
使用以下代碼安裝 Emoji 包。
pip install emoji
看看下面代碼:
import emojiprint(emoji.emojize('Python is :thumbs_up:'))
有了這個(gè)包,可以輕易的輸出表情符號(hào)。
TheFuzz 使用 Levenshtein 距離來(lái)匹配文本以計(jì)算相似度。
pip install thefuzz
下面代碼介紹如何使用 TheFuzz 進(jìn)行相似性文本匹配。
from thefuzz import fuzz, process#Testing the score between two sentencesfuzz.ratio("Test the word", "test the Word!")
TheFuzz 還可以同時(shí)從多個(gè)單詞中提取相似度分?jǐn)?shù)。
choices = ["Atlanta Falcons", "New York Jets", "New York Giants", "Dallas Cowboys"]process.extract("new york jets", choices, limit=2)
TheFuzz 適用于任何文本數(shù)據(jù)相似性檢測(cè),這個(gè)工作在nlp中非常重要。
Numerizer 可將寫入的數(shù)字文本轉(zhuǎn)換為對(duì)應(yīng)的整數(shù)或浮點(diǎn)數(shù)。
pip install numerizer
然后 讓我們嘗試幾個(gè)輸入來(lái)進(jìn)行轉(zhuǎn)換。
from numerizer import numerizenumerize('forty two')
如果使用另一種書寫風(fēng)格,它也可以工作的。
numerize('forty-two')
numerize('nine and three quarters')
如果輸入不是數(shù)字的表達(dá)式,那么將會(huì)保留:
numerize('maybe around nine and three quarters')
PyAutoGUI 可以自動(dòng)控制鼠標(biāo)和鍵盤。
pip install pyautogui
然后我們可以使用以下代碼測(cè)試。
import pyautoguipyautogui.moveTo(10, 15)pyautogui.click()pyautogui.doubleClick()pyautogui.press('enter')
上面的代碼會(huì)將鼠標(biāo)移動(dòng)到某個(gè)位置并單擊鼠標(biāo)。 當(dāng)需要重復(fù)操作(例如下載文件或收集數(shù)據(jù))時(shí),非常有用。
Weightedcalcs 用于統(tǒng)計(jì)計(jì)算。 用法從簡(jiǎn)單的統(tǒng)計(jì)數(shù)據(jù)(例如加權(quán)平均值、中位數(shù)和標(biāo)準(zhǔn)變化)到加權(quán)計(jì)數(shù)和分布等。
pip install weightedcalcs
使用可用數(shù)據(jù)計(jì)算加權(quán)分布。
import seaborn as snsdf = sns.load_dataset('mpg')import weightedcalcs as wccalc = wc.Calculator("mpg")
然后我們通過(guò)傳遞數(shù)據(jù)集并計(jì)算預(yù)期變量來(lái)進(jìn)行加權(quán)計(jì)算。
calc.distribution(df, "origin")
scikit-posthocs 是一個(gè)用于“事后”測(cè)試分析的 python 包,通常用于統(tǒng)計(jì)分析中的成對(duì)比較。 該軟件包提供了簡(jiǎn)單的類似 scikit-learn API 來(lái)進(jìn)行分析。
pip install scikit-posthocs
然后讓我們從簡(jiǎn)單的數(shù)據(jù)集開始,進(jìn)行 ANOVA 測(cè)試。
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)
獲得了 ANOVA 測(cè)試結(jié)果,但不確定哪個(gè)變量類對(duì)結(jié)果的影響最大,可以使用以下代碼進(jìn)行原因的查看。
sp.posthoc_ttest(df, val_col='SepalWidth', group_col='Species', p_adjust='holm')
使用 scikit-posthoc,我們簡(jiǎn)化了事后測(cè)試的成對(duì)分析過(guò)程并獲得了 P 值
Cerberus 是一個(gè)用于數(shù)據(jù)驗(yàn)證的輕量級(jí) python 包。
pip install cerberus
Cerberus 的基本用法是驗(yàn)證類的結(jié)構(gòu)。
from cerberus import Validatorschema = {'name': {'type': 'string'}, 'gender':{'type': 'string'}, 'age':{'type':'integer'}}v = Validator(schema)
定義好需要驗(yàn)證的結(jié)構(gòu)后,可以對(duì)實(shí)例進(jìn)行驗(yàn)證。
document = {'name': 'john doe', 'gender':'male', 'age': 15}v.validate(document)
如果匹配,則 Validator 類將輸出True 。 這樣我們可以確保數(shù)據(jù)結(jié)構(gòu)是正確的。
ppscore 用于計(jì)算與目標(biāo)變量相關(guān)的變量的預(yù)測(cè)能力。 該包計(jì)算可以檢測(cè)兩個(gè)變量之間的線性或非線性關(guān)系的分?jǐn)?shù)。 分?jǐn)?shù)范圍從 0(無(wú)預(yù)測(cè)能力)到 1(完美預(yù)測(cè)能力)。
pip install ppscore
使用 ppscore 包根據(jù)目標(biāo)計(jì)算分?jǐn)?shù)。
import seaborn as snsimport ppscore as ppsdf = sns.load_dataset('mpg')pps.predictors(df, 'mpg')
結(jié)果進(jìn)行了排序。 排名越低變量對(duì)目標(biāo)的預(yù)測(cè)能力越低。
Maya 用于盡可能輕松地解析 DateTime 數(shù)據(jù)。
pip install maya
然后我們可以使用以下代碼輕松獲得當(dāng)前日期。
import mayanow = maya.now()print(now)
還可以為明天日期。
tomorrow = maya.when('tomorrow')tomorrow.datetime()
Pendulum 是另一個(gè)涉及 DateTime 數(shù)據(jù)的 python 包。 它用于簡(jiǎn)化任何 DateTime 分析過(guò)程。
pip install pendulum
我們可以對(duì)實(shí)踐進(jìn)行任何的操作。
import pendulumnow = pendulum.now("Europe/Berlin")now.in_timezone("Asia/Tokyo")now.to_iso8601_string()now.add(days=2)
category_encoders 是一個(gè)用于類別數(shù)據(jù)編碼(轉(zhuǎn)換為數(shù)值數(shù)據(jù))的python包。 該包是各種編碼方法的集合,我們可以根據(jù)需要將其應(yīng)用于各種分類數(shù)據(jù)。
pip install category_encoders
可以使用以下示例應(yīng)用轉(zhuǎn)換。
from category_encoders import BinaryEncoderimport pandas as pdenc = BinaryEncoder(cols=['origin']).fit(df)numeric_dataset = enc.transform(df)numeric_dataset.head()
scikit-multilearn 可以用于特定于多類分類模型的機(jī)器學(xué)習(xí)模型。 該軟件包提供 API 用于訓(xùn)練機(jī)器學(xué)習(xí)模型以預(yù)測(cè)具有兩個(gè)以上類別目標(biāo)的數(shù)據(jù)集。
pip install scikit-multilearn
利用樣本數(shù)據(jù)集進(jìn)行多標(biāo)簽KNN來(lái)訓(xùn)練分類器并度量性能指標(biāo)。
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)
Multiset類似于內(nèi)置的set函數(shù),但該包允許相同的字符多次出現(xiàn)。
pip install multiset
可以使用下面的代碼來(lái)使用 Multiset 函數(shù)。
from multiset import Multisetset1 = Multiset('aab')set1
Jazzit 可以在我們的代碼出錯(cuò)或等待代碼運(yùn)行時(shí)播放音樂(lè)。
pip install jazzit
使用以下代碼在錯(cuò)誤情況下嘗試示例音樂(lè)。
from jazzit import error_track@error_track("curb_your_enthusiasm.mp3", wait=5)def run():for num in reversed(range(10)):print(10/num)
這個(gè)包雖然沒(méi)什么用,但是它的功能是不是很有趣,哈
handcalcs 用于簡(jiǎn)化notebook中的數(shù)學(xué)公式過(guò)程。 它將任何數(shù)學(xué)函數(shù)轉(zhuǎn)換為其方程形式。
pip install handcalcs
使用以下代碼來(lái)測(cè)試 handcalcs 包。 使用 %%render 魔術(shù)命令來(lái)渲染 Latex 。
import handcalcs.renderfrom math import sqrt
%%rendera = 4b = 6c = sqrt(3*a + b/7)
NeatText 可簡(jiǎn)化文本清理和預(yù)處理過(guò)程。 它對(duì)任何 NLP 項(xiàng)目和文本機(jī)器學(xué)習(xí)項(xiàng)目數(shù)據(jù)都很有用。
pip install neattext
使用下面的代碼,生成測(cè)試數(shù)據(jù)
import neattext as nt mytext = "This is the word sample but ,our WEBSITE is https://exaempleeele.com ?."docx = nt.TextFrame(text=mytext)
TextFrame 用于啟動(dòng) NeatText 類然后可以使用各種函數(shù)來(lái)查看和清理數(shù)據(jù)。
docx.describe()
使用 describe 函數(shù),可以顯示每個(gè)文本統(tǒng)計(jì)信息。進(jìn)一步清理數(shù)據(jù),可以使用以下代碼。
docx.normalize()
Combo 是一個(gè)用于機(jī)器學(xué)習(xí)模型和分?jǐn)?shù)組合的 python 包。 該軟件包提供了一個(gè)工具箱,允許將各種機(jī)器學(xué)習(xí)模型訓(xùn)練成一個(gè)模型。 也就是可以對(duì)模型進(jìn)行整合。
pip install combo
使用來(lái)自 scikit-learn 的乳腺癌數(shù)據(jù)集和來(lái)自 scikit-learn 的各種分類模型來(lái)創(chuàng)建機(jī)器學(xué)習(xí)組合。
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
接下來(lái),看一下用于預(yù)測(cè)目標(biāo)的單個(gè)分類器。
# 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()
使用 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)
你是否需要星座數(shù)據(jù)或只是對(duì)今天的運(yùn)氣感到好奇? 可以使用 PyAztro 來(lái)獲得這些信息! 這個(gè)包有幸運(yùn)數(shù)字、幸運(yùn)標(biāo)志、心情等等。 這是我們?nèi)斯ぶ悄芩忝幕A(chǔ)數(shù)據(jù),哈
pip install pyaztro
使用以下代碼訪問(wèn)今天的星座信息。
import pyaztropyaztro.Aztro(sign='gemini').description
Faker 可用于簡(jiǎn)化生成合成數(shù)據(jù)。 許多開發(fā)人員使用這個(gè)包來(lái)創(chuàng)建測(cè)試的數(shù)據(jù)。
pip install Faker
要使用 Faker 包生成合成數(shù)據(jù)
from faker import Fakerfake = Faker()
生成名字
fake.name()
每次從 Faker 類獲取 .name 屬性時(shí),F(xiàn)aker 都會(huì)隨機(jī)生成數(shù)據(jù)。
Fairlearn 用于評(píng)估和減輕機(jī)器學(xué)習(xí)模型中的不公平性。 該軟件包提供了許多查看偏差所必需的 API。
pip install fairlearn
然后可以使用 Fairlearn 的數(shù)據(jù)集來(lái)查看模型中有多少偏差。
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')
Fairlearn API 有一個(gè) selection_rate 函數(shù),可以使用它來(lái)檢測(cè)組模型預(yù)測(cè)之間的分?jǐn)?shù)差異,以便我們可以看到結(jié)果的偏差。
tiobeindexpy 用于獲取 TIOBE 索引數(shù)據(jù)。 TIOBE 指數(shù)是一個(gè)編程排名數(shù)據(jù),對(duì)于開發(fā)人員來(lái)說(shuō)是非常重要的因?yàn)槲覀儾幌脲e(cuò)過(guò)編程世界的下一件大事。
pip install tiobeindexpy
可以通過(guò)以下代碼獲得當(dāng)月前 20 名的編程語(yǔ)言排名。
from tiobeindexpy import tiobeindexpy as tbdf = tb.top_20()
pytrends 可以使用 Google API 獲取關(guān)鍵字趨勢(shì)數(shù)據(jù)。如果想要了解當(dāng)前的網(wǎng)絡(luò)趨勢(shì)或與我們的關(guān)鍵字相關(guān)的趨勢(shì)時(shí),該軟件包非常有用。這個(gè)需要訪問(wèn)google,所以你懂的。
pip install pytrends
假設(shè)我想知道與關(guān)鍵字“Present Gift”相關(guān)的當(dāng)前趨勢(shì),
from pytrends.request import TrendReqimport pandas as pdpytrend = TrendReq()keywords = pytrend.suggestions(keyword='Present Gift')df = pd.DataFrame(keywords)df
該包將返回與關(guān)鍵字相關(guān)的前 5 個(gè)趨勢(shì)。
visions 是一個(gè)用于語(yǔ)義數(shù)據(jù)分析的 python 包。 該包可以檢測(cè)數(shù)據(jù)類型并推斷列的數(shù)據(jù)應(yīng)該是什么。
pip install visions
可以使用以下代碼檢測(cè)數(shù)據(jù)中的列數(shù)據(jù)類型。 這里使用 seaborn 的 Titanic 數(shù)據(jù)集。
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))
Schedule 可以為任何代碼創(chuàng)建作業(yè)調(diào)度功能
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)
autocorrect 是一個(gè)用于文本拼寫更正的 python 包,可應(yīng)用于多種語(yǔ)言。 用法很簡(jiǎn)單,并且對(duì)數(shù)據(jù)清理過(guò)程非常有用。
pip install autocorrect
可以使用類似于以下代碼進(jìn)行自動(dòng)更正。
from autocorrect import Spellerspell = Speller()spell("I'm not sleaspy and tehre is no place I'm giong to.")
funcy 包含用于日常數(shù)據(jù)分析使用的精美實(shí)用功能。 包中的功能太多了,我無(wú)法全部展示出來(lái),有興趣的請(qǐng)查看他的文檔。
pip install funcy
這里只展示一個(gè)示例函數(shù),用于從可迭代變量中選擇一個(gè)偶數(shù),如下面的代碼所示。
from funcy import select, evenselect(even, {i for i in range (20)})
IceCream 可以使調(diào)試過(guò)程更容易。該軟件包在打印/記錄過(guò)程中提供了更詳細(xì)的輸出。
pip install icecream
可以使用下面代碼
from icecream import icdef some_function(i):i = 4 + (1 * 2)/ 10 return i + 35ic(some_function(121))
也可以用作函數(shù)檢查器。
def foo():ic()if some_function(12):ic()else:ic()foo()
打印的詳細(xì)程度非常適合分析。
關(guān)于“有哪些數(shù)據(jù)工程必備的Python包”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。
文章標(biāo)題:有哪些數(shù)據(jù)工程必備的Python包
當(dāng)前URL:http://aaarwkj.com/article22/iihgjc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、App開發(fā)、Google、域名注冊(cè)、定制開發(fā)、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)