大家好,我是木木。今天给大家分享一个超强的 Python 库,Vaex。
这是一个专为处理超大数据集设计的库,能够高效地进行数据清洗、处理和可视化,尤其适用于那些不适合放入内存中的大型数据集。
Vaex的三大特点
-
内存效率高 -
Vaex 使用了延迟计算和内存映射的技术,能够让你在仅使用少量内存的情况下,处理数十亿行数据。 -
快速数据处理 -
它可以利用表达式的优化和JIT(即时编译)技术,执行超快的数据过滤、聚合和变换操作。 -
易于数据可视化 -
Vaex 集成了多种数据可视化选项,支持快速创建散点图、直方图等,帮助你直观理解大规模数据集。
最佳实践
安装方法:
Vaex 可以通过 pip 进行安装:
pip install vaex
功能一:数据聚合与懒加载
它允许您对训练数据执行 groupby 聚合,然后将这些聚合用作训练和测试集中的特性
示例代码
import vaex
vaex.multithreading.thread_count_default = 8
import vaex.ml
df = vaex.datasets.titanic()
gbt = vaex.ml.GroupByTransformer(by='pclass', agg={'age': ['mean', 'std'],
'fare': ['mean', 'std'],
})
df = gbt.fit_transform(df)
print(df.head(5))
功能二:高效的数据过滤、聚合与模型训练
Vaex 不仅允许你高效地对数据集进行过滤和聚合操作,还可以通过集成的机器学习功能,直接在大规模数据集上训练预测模型。
示例代码:使用 Vaex 和 scikit-learn 训练模型
from vaex.ml.sklearn import IncrementalPredictor
from sklearn.linear_model import SGDClassifier
import vaex
# 加载一个大型的 Iris 数据集(假设有超过 1 亿样本)
df = vaex.datasets.iris_1e9()
# 定义特征列和目标列
features = ['petal_length', 'petal_width', 'sepal_length', 'sepal_width']
target = 'class_'
# 创建并配置 SGDClassifier 模型
model = SGDClassifier(learning_rate='constant', eta0=0.0001, random_state=42)
# 使用 IncrementalPredictor 封装模型,设置批处理大小和部分拟合参数
vaex_model = IncrementalPredictor(features=features, target=target, model=model,
batch_size=500_000, partial_fit_kwargs={'classes':[0, 1, 2]})
# 在 Vaex DataFrame 上拟合模型
vaex_model.fit(df=df, progress='widget')
# 应用模型进行预测
df = vaex_model.transform(df)
print(df.head())
高级功能:Vaex-GraphQL标准查询
是一个通过 GraphQL 接口公开 DataFrame 的插件包。这使得数据或聚合/统计数据或机器学习模型可以很容易地共享到使用标准查询语言的前端程序或其他程序中。
import vaex
df = vaex.datasets.titanic()
result = df.graphql.execute("""
{
df {
min {
age
fare
}
mean {
age
fare
}
max {
age
fare
}
groupby {
sex {
count
mean {
age
}
}
}
}
}
""")
print(result.data)
小总结
通过使用 Vaex,我们能够以极低的内存消耗处理和分析大规模数据集。其懒加载、快速操作和虚拟列功能,让数据科学家和分析师的工作变得更加高效和便捷。
—— End ——
原文始发于微信公众号(木木夕咦):Vaex,一个实用的python库
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/261061.html