跳到主要内容 30 个数据工程必备的 Python 包 | 极客日志
Python AI 算法
30 个数据工程必备的 Python 包 本文介绍了 30 个数据工程必备的 Python 包,涵盖任务通知、进度监控、日志记录、文本处理、统计计算、模型验证等维度。内容包括 Knockknock、tqdm、Pandas-log、Emoji、TheFuzz 等工具的安装命令、代码示例及应用场景。这些工具能有效提升数据处理效率、简化调试流程并增强模型评估能力,适用于数据分析、机器学习及自动化运维场景。
NodeJser 发布于 2025/2/6 更新于 2026/4/21 2 浏览Python 作为目前最易入门且生态丰富的编程语言,在数据处理、机器学习及自动化领域占据主导地位。得益于 NumPy、SciPy 等基础库的支持,以及庞大的社区贡献,Python 拥有众多高效工具包,能显著提升数据工程师的工作流效率。
本文精选了 30 个在数据工程、数据分析及机器学习场景中极具价值的 Python 包。这些工具涵盖了任务通知、进度监控、日志记录、文本处理、统计计算、模型验证等多个维度。以下将逐一介绍其核心功能、安装方式及典型应用场景。
1. Knockknock Knockknock 是一个用于机器学习模型训练状态通知的工具包。当模型训练结束或发生崩溃时,它可以通过电子邮件、Slack、Microsoft Teams 等多种渠道发送通知,确保开发者及时获知任务状态。
from knockknock import email_sender
from sklearn.linear_model import LinearRegression
import numpy as np
@email_sender(recipient_emails=["[email protected] " ], sender_email="[email protected] " )
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 是 Python 中最流行的进度条库。在进行迭代或循环操作时,它能提供可视化的进度反馈,支持 Jupyter Notebook 和命令行终端。
from tqdm import tqdm
q = 0
for i in tqdm(range (10000000 )):
q = i + 1
场景: 大数据集处理、文件下载、复杂迭代计算等需要监控进度的场景。
3. pandas-log pandas-log 基于 R 的 Tidyverse 理念,为 Pandas 的基本操作(如 .query, .drop, .merge)提供详细的执行日志反馈,帮助追踪数据分析步骤。
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]})
with pandas_log.enable():
res = (df.drop("born" , axis=1 ).groupby('name' ))
4. Emoji Emoji 包支持对表情符号文本的解析与转换,解决了 Python 处理 Unicode 表情符号的复杂性。
import emoji
print (emoji.emojize('Python is :thumbs_up:' ))
场景: 日志美化、用户界面输出增强、情感分析结果展示。
5. TheFuzz TheFuzz 利用 Levenshtein 距离算法计算文本相似度,常用于模糊匹配和数据清洗。
from thefuzz import fuzz, process
score = fuzz.ratio("Test the word" , "test the Word!" )
choices = ["Atlanta Falcons" , "New York Jets" , "New York Giants" ]
result = process.extract("new york jets" , choices, limit=2 )
场景: NLP 中的实体对齐、拼写纠错、重复数据检测。
6. Numerizer Numerizer 能将书写形式的数字文本(如 "forty two")转换为对应的整数或浮点数。
from numerizer import numerize
numerize('forty two' )
numerize('nine and three quarters' )
场景: 非结构化文本数据中的数值提取,自然语言理解预处理。
7. PyAutoGUI PyAutoGUI 允许程序自动控制鼠标和键盘,实现 GUI 自动化操作。
import pyautogui
pyautogui.moveTo(10 , 15 )
pyautogui.click()
pyautogui.doubleClick()
pyautogui.press('enter' )
场景: 网页自动化测试、重复性桌面操作脚本、数据采集机器人。
8. Weightedcalcs Weightedcalcs 专注于加权统计计算,包括加权平均值、中位数、标准差及分布分析。
pip install weightedcalcs
import seaborn as sns
import weightedcalcs as wc
df = sns.load_dataset('mpg' )
calc = wc.Calculator("mpg" )
calc.distribution(df, "origin" )
9. scikit-posthocs scikit-posthocs 提供了类似 scikit-learn API 的事后检验(Post-hoc tests)工具,常用于 ANOVA 后的成对比较。
pip install scikit-posthocs
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)
sp.posthoc_ttest(df, val_col='SepalWidth' , group_col='Species' , p_adjust='holm' )
10. Cerberus Cerberus 是一个轻量级的数据验证库,用于定义和验证数据结构是否符合预期模式。
from cerberus import Validator
schema = {'name' : {'type' : 'string' }, 'age' : {'type' : 'integer' }}
v = Validator(schema)
document = {'name' : 'john doe' , 'age' : 15 }
v.validate(document)
场景: API 输入校验、配置文件验证、数据入库前检查。
11. ppscore ppscore 用于计算变量与目标变量之间的预测能力分数(0 到 1),可检测线性或非线性关系。
import seaborn as sns
import ppscore as pps
df = sns.load_dataset('mpg' )
pps.predictors(df, 'mpg' )
场景: 特征选择、变量重要性评估、探索性数据分析。
12. Maya Maya 简化了 DateTime 数据的解析与操作,提供更直观的日期时间处理接口。
import maya
now = maya.now()
tomorrow = maya.when('tomorrow' )
print (tomorrow.datetime())
13. Pendulum Pendulum 是另一个强大的日期时间库,支持时区转换、ISO 格式处理及复杂的日期运算。
import pendulum
now = pendulum.now("Europe/Berlin" )
now.in_timezone("Asia/Tokyo" )
now.add(days=2 )
场景: 跨时区应用开发、国际化时间显示、周期性任务。
14. category_encoders category_encoders 提供了多种类别数据编码方法(如 OneHot, Binary, Target Encoding),便于将分类特征转换为数值特征。
pip install category_encoders
from category_encoders import BinaryEncoder
enc = BinaryEncoder(cols=['origin' ]).fit(df)
numeric_dataset = enc.transform(df)
15. scikit-multilearn scikit-multilearn 专为多标签分类问题设计,支持训练预测具有多个类别目标的数据集。
pip install scikit-multilearn
from skmultilearn.dataset import load_dataset
from skmultilearn.adapt import MLkNN
X_train, y_train, _, _ = load_dataset('emotions' , 'train' )
classifier = MLkNN(k=3 )
prediction = classifier.fit(X_train, y_train).predict(X_test)
16. Multiset Multiset 类似于内置 set,但允许元素重复出现,适用于计数逻辑。
from multiset import Multiset
set1 = Multiset('aab' )
17. Jazzit Jazzit 在代码出错或运行等待期间播放音乐,增加开发趣味性。
from jazzit import error_track
@error_track("music.mp3" , wait=5 )
def run ():
for num in reversed (range (10 )):
print (10 /num)
18. handcalcs handcalcs 用于在 Jupyter Notebook 中将数学公式自动渲染为 LaTeX 方程形式。
import handcalcs.render
from math import sqrt
%%render
a = 4
b = 6
c = sqrt(3 *a + b/7 )
19. NeatText NeatText 简化文本清理和预处理流程,适用于 NLP 项目。
import neattext as nt
mytext = "This is the word sample but ,our WEBSITE is https://example.com ."
docx = nt.TextFrame(text=mytext)
docx.normalize()
场景: 社交媒体数据清洗、评论去噪、URL 移除。
20. Combo Combo 提供模型集成工具箱,支持 Stacking 等方法将多个模型整合为一个。
from combo.models.classifier_stacking import Stacking
clf = Stacking(classifiers, n_folds=4 , shuffle_data=False )
clf.fit(X_train, y_train)
场景: 提升模型性能、竞赛建模、生产环境鲁棒性优化。
21. PyAztro PyAztro 提供星座运势数据,包含幸运数字、标志等信息。
import pyaztro
pyaztro.Aztro(sign='gemini' ).description
22. Faker Faker 用于生成合成数据,广泛应用于测试数据构造。
from faker import Faker
fake = Faker()
print (fake.name())
场景: 单元测试数据生成、隐私保护脱敏、原型演示。
23. Fairlearn Fairlearn 用于评估和减轻机器学习模型中的不公平性,提供偏差检测 API。
from fairlearn.metrics import MetricFrame, selection_rate
from fairlearn.datasets import fetch_adult
data = fetch_adult(as_frame=True )
selection_rates = MetricFrame(metrics=selection_rate, y_true=y_true, sensitive_features=sex)
24. tiobeindexpy tiobeindexpy 用于获取 TIOBE 编程指数排名数据。
from tiobeindexpy import tiobeindexpy as tb
df = tb.top_20()
25. pytrends pytrends 通过 Google API 获取关键词趋势数据,需网络环境支持。
from pytrends.request import TrendReq
pytrend = TrendReq()
keywords = pytrend.suggestions(keyword='Present Gift' )
26. visions visions 用于语义数据分析,自动推断列的数据类型。
from visions.functional import detect_type, infer_type
from visions.typesets import CompleteSet
df = sns.load_dataset('titanic' )
print (detect_type(df, CompleteSet()))
27. Schedule Schedule 为任何代码创建作业调度功能,简单易用。
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 用于文本拼写更正,支持多种语言,辅助数据清洗。
from autocorrect import Speller
spell = Speller()
spell("I'm not sleaspy and tehre is no place I'm giong to." )
29. funcy funcy 包含大量实用的函数式编程工具,提升代码简洁度。
from funcy import select, even
select(even, {i for i in range (20 )})
30. IceCream IceCream 增强调试过程的打印输出,提供更详细的上下文信息。
from icecream import ic
def some_function (i ):
return i + 35
ic(some_function(121 ))
总结 本文详细介绍了 30 个在数据工程工作中极具实用性的 Python 包。这些工具覆盖了从数据预处理、模型训练到结果可视化的全流程。大多数包易于安装和使用,部分高级功能建议查阅官方文档。希望这些工具能帮助开发者构建更高效的数据工作流。
相关免费在线工具 加密/解密文本 使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
RSA密钥对生成器 生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
Mermaid 预览与可视化编辑 基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
curl 转代码 解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
Base64 字符串编码/解码 将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
Base64 文件转换器 将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online