📢 转载信息
原文作者:Bala Priya C
Image by Author
# 引言
作为一名数据科学家,你可能已经熟悉NumPy、pandas、scikit-learn和Matplotlib等库。但Python生态系统极其庞大,还有许多鲜为人知的库可以帮助你更轻松地完成数据科学任务。
在本文中,我们将探索十个这样的库,它们根据数据科学家日常工作的四个关键领域进行组织:
- 用于加速探索性分析的自动化EDA和分析
- 用于处理不适合内存的数据集大规模数据处理
- 用于维护干净、可靠管道的数据质量和验证
- 用于特定领域任务(如地理空间和时间序列工作)的专业数据分析
我们还将为你提供学习资源,帮助你快速上手。希望你能从中找到一些可以添加到你的数据科学工具箱中的库!
# 1. Pandera
数据验证是任何数据科学管道中的关键环节,但通常是手动完成或使用自定义脚本。Pandera是一个统计数据验证库,它为pandas DataFrames带来了类型提示和Schema验证功能。
以下是使Pandera有用的特性列表:
- 允许你为DataFrame定义Schema,指定每列预期的数据类型、值范围和统计属性
- 与pandas集成,并在验证失败时提供信息丰富的错误消息,使调试更加轻松
- 支持在Schema定义内进行假设检验(hypothesis testing),允许你在管道执行期间验证数据的统计属性
Arjan Codes 制作的“How to Use Pandas With Pandera to Validate Your Data in Python”(如何在Python中使用Pandas和Pandera验证数据)提供了关于Schema定义和验证模式的清晰示例。
# 2. Vaex
处理不适合内存的数据集是一个常见挑战。Vaex是一个高性能的Python库,用于惰性(lazy)、内存外(out-of-core)的DataFrames,可以在笔记本电脑上处理数十亿行数据。
值得探索的Vaex关键特性:
- 利用内存映射和惰性评估,处理大于RAM的数据集,而无需将所有内容加载到内存中
- 通过利用高效的C++实现,提供快速的聚合和过滤操作
- 提供类似pandas的熟悉API,使需要扩展规模的现有pandas用户能够平稳过渡
Vaex introduction in 11 minutes 是一个关于使用Vaex处理大型数据集的快速入门教程。
# 3. Pyjanitor
数据清洗代码很快就会变得混乱且难以阅读。Pyjanitor是一个为pandas DataFrames提供干净、方法链式(method-chaining)API的库。这使得数据清洗工作流程更具可读性和可维护性。
Pyjanitor提供以下功能:
- 通过附加方法扩展pandas,用于常见的清理任务,如删除空列、将列名重命名为snake_case以及处理缺失值
- 支持数据清洗操作的方法链式调用,使你的预处理步骤读起来像一个清晰的管道
- 包含用于常见但繁琐任务的函数,如标记缺失值、按时间范围过滤以及条件列创建
观看Eric Ma关于“Pyjanitor: Clean APIs for Cleaning Data”(Pyjanitor:用于数据清洗的干净API)的演讲,并查看“Easy Data Cleaning in Python with PyJanitor – Full Step-by-Step Tutorial”(使用PyJanitor在Python中轻松进行数据清洗——完整分步教程)以开始使用。
# 4. D-Tale
探索和可视化DataFrames通常需要切换多个工具并编写大量代码。D-Tale是一个Python库,提供了一个交互式GUI,用于以类似电子表格的界面可视化和分析pandas DataFrames。
D-Tale的实用之处在于:
- 启动一个交互式Web界面,你无需编写额外代码即可对DataFrame进行排序、过滤和探索
- 提供内置的图表功能,包括直方图、相关性和自定义图表,可通过点击界面访问
- 包含数据清洗、异常检测、代码导出等功能,以及通过GUI构建自定义列的能力
How to quickly explore data in Python using the D-Tale library(如何使用D-Tale库在Python中快速探索数据)提供了全面的分步指南。
# 5. Sweetviz
使用标准EDA工具生成数据集之间的比较分析报告非常繁琐。Sweetviz是一个自动化的EDA库,可以创建有用的可视化效果,并提供数据集之间的详细比较。
Sweetviz的实用之处在于:
- 生成全面的HTML报告,包含目标分析,显示特征与目标变量的关系(适用于分类或回归任务)
- 非常适合数据集比较,允许你通过并排可视化比较训练集与测试集或转换前后的数据
- 在几秒钟内生成报告,并包括关联分析,显示所有特征之间的相关性和关系
How to Quickly Perform Exploratory Data Analysis (EDA) in Python using Sweetviz(如何使用Sweetviz在Python中快速执行探索性数据分析(EDA))教程是一个很好的入门资源。
# 6. cuDF
在处理大型数据集时,基于CPU的处理可能会成为瓶颈。cuDF是NVIDIA提供的GPU DataFrame库,它提供类似pandas的API,但在GPU上运行操作以实现巨大的速度提升。
cuDF的实用特性:
- 在兼容硬件上,对groupby、join和filtering等常见操作提供50到100倍的速度提升
- 提供API,与pandas非常相似,只需进行最少的代码更改即可利用GPU加速
- 与更广泛的RAPIDS生态系统集成,实现端到端的GPU加速数据科学工作流
Krish Naik 制作的“NVIDIA RAPIDS cuDF Pandas - Large Data Preprocessing with cuDF pandas accelerator mode”(NVIDIA RAPIDS cuDF Pandas - 使用cuDF pandas加速器模式进行大型数据预处理)是一个有用的入门资源。
# 7. ITables
在Jupyter Notebook中探索大型DataFrame可能会很笨拙。ITables(交互式表格)将交互式DataTables带到Jupyter,允许你直接在Notebook中搜索、排序和分页浏览DataFrame。
ITables的实用之处在于:
- 将pandas DataFrame转换为具有内置搜索、排序和分页功能的交互式表格
- 通过仅渲染可见行来高效处理大型DataFrame,保持Notebook的响应速度
- 只需很少的代码;通常只需一个导入语句即可转换Notebook中所有DataFrame的显示效果
Quick Start to Interactive Tables(交互式表格快速入门)包含清晰的使用示例。
# 8. GeoPandas
空间数据分析在各个行业中越来越重要,但许多数据科学家因其复杂性而避开它。GeoPandas扩展了pandas以支持空间操作,使地理空间数据分析变得易于上手。
GeoPandas提供以下功能:
- 使用类似pandas的熟悉界面提供空间操作,如intersection(相交)、union(合并)和buffer(缓冲区)
- 处理各种地理空间数据格式,包括Shapefiles、GeoJSON和PostGIS数据库
- 与matplotlib和其他可视化库集成,用于创建地图和空间可视化
Kaggle的“Geospatial Analysis”微课程涵盖了GeoPandas的基础知识。
# 9. tsfresh
手动从时间序列数据中提取有意义的特征非常耗时,并且需要领域专业知识。tsfresh会自动提取数百个时间序列特征,并选择与你的预测任务最相关的特征。
tsfresh的有用特性:
- 自动计算时间序列特征,包括统计特性、频域特征和熵度量
- 包含特征选择方法,可识别哪些特征对你的特定预测任务确实相关
Introduction to tsfresh(tsfresh简介)涵盖了tsfresh是什么以及它在时间序列特征工程应用中的用途。
# 10. ydata-profiling (pandas-profiling)
探索性数据分析(EDA)可能重复且耗时。ydata-profiling(前身为pandas-profiling)可以在几秒钟内为你的DataFrame生成全面的HTML报告,其中包含统计数据、相关性、缺失值和分布情况。
ydata-profiling的实用之处:
- 自动创建广泛的EDA报告,包括单变量分析、相关性、交互作用和缺失数据模式
- 识别潜在的数据质量问题,如高基数性(high cardinality)、偏度和重复行
- 提供一个可以与利益相关者共享或用于文档记录的交互式HTML报告
DataCamp的“Pandas Profiling (ydata-profiling) in Python: A Guide for Beginners”(Python中Pandas Profiling(ydata-profiling)指南)包含详细示例。
# 总结
这十个库解决了你在数据科学工作中将面临的实际挑战。总而言之,我们介绍了用于处理超出内存限制的数据集、需要快速分析新数据、希望在生产管道中确保数据质量,或处理地理空间或时间序列等专用格式的有用库。
你不必一次性学习所有这些。从确定哪个类别解决了你当前遇到的瓶颈开始。
- 如果你花费太多时间在手动EDA上,可以尝试Sweetviz或ydata-profiling。
- 如果内存是你的限制因素,请尝试使用Vaex。
- 如果数据质量问题持续破坏你的管道,请研究一下Pandera。
祝你探索愉快!
Bala Priya C 是来自印度的开发者和技术作家。她喜欢在数学、编程、数据科学和内容创作的交叉点工作。她的兴趣和专长领域包括DevOps、数据科学和自然语言处理。她喜欢阅读、写作、编码和咖啡!目前,她正致力于通过撰写教程、操作指南、观点文章等方式学习并与开发者社区分享她的知识。Bala还创建引人入胜的资源概述和编码教程。
🚀 想要体验更好更全面的AI调用?
欢迎使用青云聚合API,约为官网价格的十分之一,支持300+全球最新模型,以及全球各种生图生视频模型,无需翻墙高速稳定,文档丰富,小白也可以简单操作。
评论区