Python missingno和Vaex库:高性能的大数据分析

在这里插入图片描述

在数据分析和处理过程中,数据缺失是常见的问题。处理和理解数据缺失情况是确保数据质量和分析准确性的关键步骤。Python的missingno库提供了一种便捷且直观的方式来可视化数据缺失情况,从而帮助我们更好地理解和处理缺失值。本文将详细介绍missingno库的功能、安装与配置、基本和高级用法,以及如何在实际项目中应用它。

missingno库简介
missingno是一个开源的Python库,专门用于可视化数据缺失情况。它提供了多种图表类型,如矩阵图、条形图、热力图和树状图,帮助直观地展示数据集中缺失值的分布和模式。通过使用missingno库,数据科学家和分析师能够更轻松地识别和处理缺失数据,提高数据处理和分析的效率。

安装与配置
安装missingno
使用pip可以轻松安装missingno库:

pip install missingno

missingno库的核心功能
矩阵图(matrix plot):展示数据集中缺失值的整体分布。
条形图(bar plot):展示每个变量的缺失值数量。
热力图(heatmap):展示变量之间缺失值的相关性。
树状图(dendrogram):展示变量之间基于缺失值的层次聚类关系。

加载数据

import pandas as pd
import missingno as msno# 创建示例数据
data = {'A': [1, 2, None, 4, 5],'B': [None, 2, 3, 4, 5],'C': [1, None, 3, None, 5],'D': [1, 2, 3, 4, None]
}# 创建DataFrame
df = pd.DataFrame(data)
print(df)

矩阵图

mport missingno as msno# 绘制矩阵图
msno.matrix(df)

条形图
使用条形图展示每个变量的缺失值数量:

import missingno as msno# 绘制条形图
msno.bar(df)

热力图

import missingno as msno# 绘制热力图
msno.heatmap(df)

树状图

import missingno as msno# 绘制树状图
msno.dendrogram(df)

自定义图表样式

import missingno as msno# 自定义矩阵图样式
msno.matrix(df, figsize=(10, 6), color=(0.25, 0.25, 0.75))

数据缺失模式分析

import seaborn as sns
import matplotlib.pyplot as plt# 计算缺失值比例
missing_ratio = df.isnull().mean().sort_values(ascending=False)# 绘制缺失值比例条形图
plt.figure(figsize=(10, 6))
sns.barplot(x=missing_ratio.index, y=missing_ratio.values)
plt.title('Missing Values Ratio')
plt.show()

数据缺失填充前后的对比

# 填充缺失值
df_filled = df.fillna(df.mean())# 比较填充前后的矩阵图
fig, axes = plt.subplots(1, 2, figsize=(15, 6))
msno.matrix(df, ax=axes[0], sparkline=False)
axes[0].set_title('Before Filling Missing Values')
msno.matrix(df_filled, ax=axes[1], sparkline=False)
axes[1].set_title('After Filling Missing Values')
plt.show()

实际数据集的缺失值可视化

import pandas as pd
import missingno as msno# 加载示例数据集
df = pd.read_csv('/data/dataset.csv')# 绘制矩阵图
msno.matrix(df)# 绘制条形图
msno.bar(df)# 绘制热力图
msno.heatmap(df)# 绘制树状图
msno.dendrogram(df)

数据缺失值分析与处理

import pandas as pd
import missingno as msno
import matplotlib.pyplot as plt# 加载数据集
df = pd.read_csv('/data/dataset.csv')# 可视化缺失值
msno.matrix(df)# 计算缺失值比例
missing_ratio = df.isnull().mean().sort_values(ascending=False)# 绘制缺失值比例条形图
plt.figure(figsize=(10, 6))
sns.barplot(x=missing_ratio.index, y=missing_ratio.values)
plt.title('Missing Values Ratio')
plt.show()# 填充缺失值
df_filled = df.fillna(df.mean())# 比较填充前后的矩阵图
fig, axes = plt.subplots(1, 2, figsize=(15, 6))
msno.matrix(df, ax=axes[0], sparkline=False)
axes[0].set_title('Before Filling Missing Values')
msno.matrix(df_filled, ax=axes[1], sparkline=False)
axes[1].set_title('After Filling Missing Values')
plt.show()

缺失值处理策略的影响

import pandas as pd
import missingno as msno
import seaborn as sns
import matplotlib.pyplot as plt# 加载数据集
df = pd.read_csv('/data/dataset.csv')# 可视化缺失值
msno.matrix(df)# 不同缺失值处理策略
strategies = {'mean': df.fillna(df.mean()),'median': df.fillna(df.median()),'mode': df.fillna(df.mode().iloc[0])
}# 比较不同策略的矩阵图
fig, axes = plt.subplots(1, 3, figsize=(20, 6))
for ax, (name, data) in zip(axes, strategies.items()):msno.matrix(data, ax=ax, sparkline=False)ax.set_title(f'{name.capitalize()} Imputation')
plt.show()

Vaex库简介
Vaex是一个开源的Python库,专门用于处理和分析大规模数据集。它采用惰性计算和内存映射技术,允许在常规内存(RAM)中处理远超内存容量的数据。Vaex支持高效的过滤、聚合、分组和可视化操作,是进行大数据分析的理想选择。
安装Vaex

pip install vaex

Vaex库的核心功能
高效的数据加载:支持从CSV、HDF5、FITS等格式加载数据。
惰性计算:采用惰性计算策略,避免不必要的计算开销。
内存映射:使用内存映射技术处理大规模数据集。
快速过滤和选择:提供高效的过滤和选择操作。
分组和聚合:支持复杂的分组和聚合操作。
数据可视化:集成了数据可视化功能,支持快速生成可视化图表。

加载数据
Vaex支持从多种数据格式加载数据。以下示例展示了如何从CSV文件加载数据:

mport vaex# 加载CSV文件
df = vaex.from_csv('example.csv', convert=True)
print(df)

基本数据操作
Vaex提供了类似Pandas的数据操作接口,包括筛选、选择和转换等:

import vaex# 加载数据集
df = vaex.example()# 查看数据集基本信息
print(df.info())# 筛选数据
filtered_df = df[df.x > 0]# 选择特定列
selected_df = df[['x', 'y', 'z']]# 创建新列
df['r'] = (df.x**2 + df.y**2 + df.z**2)**0.5

数据聚合
Vaex支持高效的数据聚合操作,例如计算平均值、总和等:

import vaex# 加载数据集
df = vaex.example()# 计算每个分组的平均值
grouped_df = df.groupby(df.x, agg={'mean_y': vaex.agg.mean(df.y)})# 查看聚合结果
print(grouped_df)
高级功能与技巧

惰性计算
Vaex采用惰性计算策略,只有在需要结果时才进行实际计算。这可以显著提高性能和内存使用效率:

import vaex# 加载数据集
df = vaex.example()# 定义惰性计算操作
df['r'] = (df.x**2 + df.y**2 + df.z**2)**0.5# 触发实际计算
df.execute()
print(df['r'])

内存映射
Vaex使用内存映射技术处理大规模数据集,使得可以在常规内存中处理超大数据集:

import vaex# 加载大数据集
df = vaex.open('large_dataset.hdf5')# 执行数据操作
df['log_x'] = vaex.log(df.x + 1)
print(df)

多线程和分布式计算
Vaex支持多线程和分布式计算,可以显著加快数据处理速度:

import vaex# 加载数据集
df = vaex.example()# 启用多线程
df = df.to_pandas_df()# 执行并行计算
df['r'] = df.apply(lambda row: (row['x']**2 + row['y']**2 + row['z']**2)**0.5, axis=1)
print(df)

数据可视化
Vaex集成了数据可视化功能,可以快速生成可视化图表:

import vaex
import matplotlib.pyplot as plt# 加载数据集
df = vaex.example()# 绘制二维直方图
df.plot2d(df.x, df.y, f='log1p', shape=256)
plt.show()

实时数据分析
使用Vaex进行实时数据分析:

import vaex# 模拟实时数据流
data = {'time': [], 'value': []}
for i in range(1000):data['time'].append(i)data['value'].append(i * 2 + (i % 3))# 转换为Vaex数据帧
df = vaex.from_dict(data)# 实时计算滚动平均值
df['rolling_mean'] = df.value.rolling(10).mean()
print(df)

大规模地理数据处理
使用Vaex处理大规模地理数据:

import vaex# 加载地理数据集
df = vaex.open('geospatial_data.hdf5')# 计算地理数据的聚合统计
df['longitude'] = df['longitude'].astype('float64')
df['latitude'] = df['latitude'].astype('float64')# 计算每个区域的平均值
agg_df = df.groupby(['region'], agg={'mean_latitude': vaex.agg.mean(df.latitude), 'mean_longitude': vaex.agg.mean(df.longitude)})# 查看聚合结果
print(agg_df)

金融数据分析
使用Vaex分析金融数据:

import vaex# 加载金融数据集
df = vaex.open('financial_data.hdf5')# 计算股票的收益率
df['return'] = df['close'] / df['close'].shift(1) - 1# 聚合计算月度收益率
monthly_returns = df.groupby(df['date'].dt.to_period('M'), agg={'monthly_return': vaex.agg.sum(df['return'])})# 查看结果
print(monthly_returns)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/386535.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文看懂:数据产品的3种输出形式和4大服务层次

企业要想提升数据资产的价值,就必须了解数据产品。那么,什么是数据产品,我们该如何认识它? 在由WakeData惟客数据联合星光数智推出的直播栏目《星光对话》第5期中,星光数智首席数据架构师魏战松,分享了对于…

分布式事务解决方案(一) 2PC、3PC、TCC、Sega

目录 1.绪论 2.2PC 2.1 基本原理 2.1.1 组成 2.1.2 步骤 1.prepare阶段 2.commit阶段 2.2 2PC 存在的问题 2.2.1 阻塞问题 2.2.2 单点故障问题 1. 事务协调器宕机 2.部分数据不一致问题 2.资源管理器宕机 3. 事务协调器和资源管理管理器同时宕机 2.2 实现 2.2.1…

JCR一区级 | Matlab实现SO-Transformer-LSTM多变量回归预测(蛇群算法优化)

JCR一区级 | Matlab实现SO-Transformer-LSTM多变量回归预测(蛇群算法优化) 目录 JCR一区级 | Matlab实现SO-Transformer-LSTM多变量回归预测(蛇群算法优化)效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.【JCR一区级】M…

跨网段 IP 地址通信故障分析

现如今计算机网络的规模和复杂性不断增加,跨网段通信成为网络运行中的常见需求。但如果设备处于不同网段且路由设置出现偏差时就会导致通信故障,严重影响网络的正常运行和数据传输。 1.跨网段通信的基本原理 跨网段通信依赖于路由器的路由功能。路由器根…

影响卫星飞行的自然因素和人为因素

还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas,webgl,ech…

[tomato]靶机复现漏洞详解!

靶机地址: https://download.vulnhub.com/tomato/Tomato.ova 靶机环境:Vmware 网络:NAT模式 信息收集: arp-scan -l 扫描靶机ip地址 扫描开放的端口信息 nmap -sS -sV -p- 192.168.77.135 发现开放端口21&#xff…

谷粒商城实战笔记-75-商品服务-API-品牌管理-品牌分类关联与级联更新

文章目录 一,引入Mybatis Plus分页插件二,品牌列表的模糊查询三,增加品牌测试数据四,开发后台品牌关联分类接口1,接口product/categorybrandrelation/catelog/list2,接口product/categorybrandrelation/sav…

LabVIEW汽车动态信号模拟系统

随着汽车工业的快速发展,对汽车电子控制单元(ECU)的测试与仿真需求日益增加。开发了一种基于LabVIEW软件开发的汽车动态信号模拟系统,该系统能有效模拟ECU在实车环境下的工作状态,为ECU的开发和测试提供了一个高效、经…

2024电赛H题参考方案(+视频演示+核心控制代码)——自动行使小车

目录 一、题目要求 二、参考资源获取 三、参考方案 1、环境搭建及工程移植 2、相关模块的移植 4、整体控制方案视频演示 5、视频演示部分核心代码 总结 一、题目要求 小编自认为:此次H题属于控制类题目,相较于往年较为简单,功能也算单一&…

C语言:字符串函数、内存函数剖析

字符串函数、内存函数剖析 一、字符串函数(一)求字符串长度1、strlen(1)库函数实现(2)自定义实现 (二)长度不受限制的字符串函数1、strcpy(1)库函数实现&…

从零开始编写一个Chrome插件:详细教程

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119@qq.com] 📱个人微信:15279484656 🌐个人导航网站:www.forff.top 💡座右铭:总有人要赢。为什么不能是我呢? 专栏导…

CMDB运维管理平台是什么?

CMDB运维管理平台(Configuration Management Database)是一种致力于帮助企业有效管理和维护IT基础设施信息的工具。 在当今数字化浪潮的推动下,企业对IT系统的需求不断增长,IT基础设施复杂多样,为了有效管理这些系统的…

面试官没想到一个ArrayList,我都能跟他扯半小时

点赞再看,Java进阶一大半 南哥在stackoverflow社区看到14年前的这么一个问题:Java 的 Vector.add() 和 Vector.addElement() 有什么区别,大家有答案吗? 它们实际上没有区别!!!1996年的JDK 1.0版…

大模型微调框架swift简介

Tuners 参数高效调优 内存高效调优

FPGA开发——蜂鸣器的控制

一、概述 在项目开发的过程当中,我会通常会需要一个东西就行报警显示,有使用语音报警,信息报警等注入此类的方式,但最为简单使用的还是蜂鸣器的使用,蜂鸣器控制简单,成本低,是最为常用的模块之…

job任务不执行问题

今天早上有个同事在job服务新增了一个定时任务之后,发现其他所有job任务都停止了. 具体问题为:job任务默认是单线程的, 新增的那个任务为一分钟一次, 一分钟之内任务没有执行完毕, 其他任务为一个阻塞状态,导致服务停止.

【从0制作自己的ros导航小车:上位机篇】02、ros1多机通讯与坐标变换可视化

从0制作自己的ros导航小车 前言一、ros1多机通讯二、rviz可视化小车坐标系 前言 上节课完成了里程计数据与坐标变换发布,但是还没有测试,本节进行测试,测试之前需要知道一件事,上位机也就是开发板一般不做可视化用,因…

【JavaScript】详解JavaScript语法

文章目录 一、变量和数据类型二、运算符三、条件语句四、循环语句五、函数六、对象和数组七、ES6新特性八、实际应用案例 JavaScript是一门广泛应用于Web开发的编程语言。掌握JavaScript语法是成为前端开发者的第一步。本文将详细介绍JavaScript的基本语法,包括变量…

[ARC105E] Keep Graph Disconnected题解

题目 考虑加任意一条边时都会输的图的状态:图被分成两个强联通分量,每一个强联通分量都是一个完全图。 也就是说,假设一开始节点 1 1 1 和节点 n n n 不联通,那么还可以加 n ( n − 1 ) 2 − m − c n t 1 ( n − c n t 1 ) \…

Overlay网络

Overlay 介绍 Overlay网络是将已有的物理网络(Underlay网络)作为基础,在其上建立叠加的逻辑网络,实现网络资源的虚拟化。 传统网络带来了以下一些问题: ● 虚拟机规模受 网络规格限制在传统二层网络环境下&#xff0…