Python 数据分析与可视化实战:从数据清洗到图表呈现
目录
一、数据采集与初步探索
二、数据清洗的七种武器
1. 缺失值处理策略
2. 异常值检测与修正
3. 数据类型转换技巧
三、数据转换的魔法工坊
1. 透视表与交叉表
2. 窗口函数实战
3. 文本数据处理
四、可视化呈现的艺术
1. 基础图表进阶用法
2. 高级可视化方案
3. 可视化设计原则
五、实战案例:电商用户行为分析
1. 业务场景
2. 分析流程
3. 关键发现
六、部署与交付
一、数据采集与初步探索
在真实场景中,数据往往以"脏乱差"的形态出现。某电商平台的用户行为日志可能包含缺失的商品ID、异常的点击时间戳,甚至混杂测试数据。面对这样的原始数据,我们首先需要建立数据探查的"三板斧":
import pandas as pd# 读取CSV文件时自动推断数据类型
df = pd.read_csv('sales_data.csv', parse_dates=['order_date'])# 基础信息概览
print(df.info()) # 内存占用、非空值统计
print(df.describe()) # 数值列统计指标
print(df.head(3)) # 预览前3行结构
通过这三行代码,可以快速获取数据全貌。当发现order_date列存在NaT(缺失时间戳)时,需要结合业务场景判断:是数据采集遗漏,还是用户未完成支付的中间状态?
二、数据清洗的七种武器
1. 缺失值处理策略
# 删除策略:当某列缺失率超过80%时
df.dropna(thresh=len(df)*0.2, axis=1, inplace=True)# 填充策略:时间序列用前向填充
df['price'].fillna(method='ffill', inplace=True)# 业务填充:用户年龄用中位数,地区用众数
df['age'].fillna(df['age'].median(), inplace=True)
df['region'].fillna(df['region'].mode()[0], inplace=True)
2. 异常值检测与修正
# 3σ原则检测数值异常
z_scores = (df['price'] - df['price'].mean()) / df['price'].std()
df = df[(z_scores > -3) & (z_scores < 3)]# 箱线图可视化辅助判断
import seaborn as sns
sns.boxplot(x=df['price'])
3. 数据类型转换技巧
# 字符串转分类变量
df['product_category'] = df['product_category'].astype('category')# 拆分复合字段
df[['province', 'city']] = df['location'].str.split('/', expand=True)# 时间戳特征工程
df['hour'] = df['order_time'].dt.hour
df['weekday'] = df['order_time'].dt.weekday
三、数据转换的魔法工坊
1. 透视表与交叉表
# 构建销售透视表
pivot = df.pivot_table(index='region', columns='product_category',values='amount',aggfunc='sum',fill_value=0
)# 交叉表分析用户行为
cross = pd.crosstab(df['device_type'],df['purchase_flag'],normalize='index'
)
2. 窗口函数实战
# 计算移动平均销量
df['rolling_avg'] = df.groupby('product_id')['sales'].transform(lambda x: x.rolling(7, min_periods=1).mean()
)# 排名函数应用
df['sales_rank'] = df.groupby('region')['sales'].rank(ascending=False)
3. 文本数据处理
# 正则表达式清洗
df['clean_comment'] = df['raw_comment'].str.replace(r'[^a-zA-Z0-9\s]', '')# 词频统计基础
from collections import Counter
word_counts = Counter(' '.join(df['clean_comment']).split())
四、可视化呈现的艺术
1. 基础图表进阶用法
import matplotlib.pyplot as plt# 双Y轴组合图表
fig, ax1 = plt.subplots(figsize=(10,6))
ax1.plot(df['date'], df['sales'], 'b-', label='销售额')
ax2 = ax1.twinx()
ax2.plot(df['date'], df['conversion_rate'], 'r--', label='转化率')# 动态标注极值点
max_idx = df['sales'].idxmax()
ax1.annotate(f'峰值: {df.loc[max_idx,"sales"]}',xy=(max_idx, df.loc[max_idx,"sales"]),xytext=(max_idx-3, df.loc[max_idx,"sales"]*0.9),arrowprops=dict(arrowstyle='->'))
2. 高级可视化方案
import plotly.express as px# 交互式热力图
fig = px.density_heatmap(df, x='order_hour', y='day_of_week',z='order_count',title='订单时间分布热力图'
)
fig.show()# 桑基图展示用户流转
fig = px.sankey(df,node={'label': ['访问','加购','下单','支付'],'color': ['lightblue','lightgreen','orange','red']},source=[0,0,1,1,2],target=[1,2,2,3,3],value=[800,200,150,50,100]
)
3. 可视化设计原则
- 色彩方案:使用ColorBrewer等工具选择色盲友好配色
- 字体选择:西文用Arial/Helvetica,中文用思源黑体
- 图表尺寸:根据展示媒介调整,PPT推荐16:9,A4报告用5:3
- 动态效果:交互式图表添加悬停提示、范围筛选器
五、实战案例:电商用户行为分析
1. 业务场景
某电商平台发现转化率下降,需要从用户行为数据中定位问题。数据集包含200万条用户行为日志,字段包括用户ID、商品ID、行为类型(点击/收藏/加购/购买)、时间戳等。
2. 分析流程
# 数据读取优化
df = pd.read_parquet('user_behavior.parquet', engine='pyarrow')# 行为路径分析
behavior_flow = df.groupby(['user_id'])['behavior_type'].apply(lambda x: '/'.join(x.unique())
).value_counts().sort_index()# 漏斗转化计算
funnel = df[df['behavior_type'].isin(['click','cart','buy'])].groupby('session_id'
)['behavior_type'].agg(lambda x: '/'.join(x)).value_counts()# 绘制漏斗图
from pyecharts.charts import Funnel
funnel = Funnel()
funnel.add("转化路径", [list(z) for z in zip(funnel.index, funnel.values)],sort_="descending",label_opts={"position": "inside"})
funnel.render("conversion_funnel.html")
3. 关键发现
- 移动端用户加购转化率比PC端低15%
- 夜间22-24点的点击购买转化率最高
- 商品详情页加载时间超过3秒会导致30%的用户流失
六、部署与交付
- 自动化报告:使用Jupyter Notebook的nbconvert生成HTML报告
- 仪表盘开发:将关键图表集成到Streamlit/Dash应用
- 数据API:用FastAPI封装分析逻辑,提供实时查询接口
- 文档编写:使用Markdown记录分析逻辑,插入可交互图表
通过这种从数据采集到可视化交付的完整链路,即使面对TB级电商数据,也能高效完成从数据清洗到业务洞察的全流程。关键在于将每个处理步骤封装成可复用的函数模块,配合适当的自动化工具,使数据分析真正成为业务决策的加速器。
相关文章:

Python 数据分析与可视化实战:从数据清洗到图表呈现
目录 一、数据采集与初步探索 二、数据清洗的七种武器 1. 缺失值处理策略 2. 异常值检测与修正 3. 数据类型转换技巧 三、数据转换的魔法工坊 1. 透视表与交叉表 2. 窗口函数实战 3. 文本数据处理 四、可视化呈现的艺术 1. 基础图表进阶用法 2. 高级可视化方案 3.…...

机器学习数据降维方法
1.数据类型 2.如何选择降维方法进行数据降维 3.线性降维:主成分分析(PCA)、线性判别分析(LDA) 4.非线性降维 5.基于特征选择的降维 6.基于神经网络的降维 数据降维是将高维数据转换为低维表示的过程,旨在保…...

uefi和legacy有什么区别_从几方面分析uefi和legacy的区别
uefi和legacy是两种不同的引导方式,uefi是新式的BIOS,legacy是传统BIOS。你在UEFI模式下安装的系统,只能用UEFI模式引导;同理,如果你是在Legacy模式下安装的系统,也只能在legacy模式下进系统。uefi只支持64为系统且磁盘…...

Spring @Autowired自动装配的实现机制
Spring Autowired自动装配的实现机制 Autowired 注解实现原理详解一、Autowired 注解定义二、Qualifier 注解辅助指定 Bean 名称三、BeanFactory:按类型获取 Bean四、注入逻辑实现五、小结 源码见:mini-spring Autowired 注解实现原理详解 Autowired 的…...
Neo4j 数据可视化与洞察获取:原理、技术与实践指南
在关系密集型数据的分析领域,Neo4j 凭借其强大的图数据模型脱颖而出。然而,将复杂的连接关系转化为直观见解,需要专业的数据可视化技术和分析方法。本文将深入探讨 Neo4j 数据可视化的核心原理、关键技术、实用技巧以及结合图数据科学库&…...

一种基于性能建模的HADOOP配置调优策略
1.摘要 作为分布式系统基础架构的Hadoop为应用程序提供了一组稳定可靠的接口。该文作者提出了一种基于集成学习建模的Hadoop配置参数调优的方法。实验结果表明,该性能模型可以准确预测MapReduce应用程序的运行时间。采用提出的Hadoop配置参数方法调优后,…...

【Stable Diffusion 1.5 】在 Unet 中每个 Cross Attention 块中的张量变化过程
系列文章目录 文章目录 系列文章目录前言特征图和注意力图的尺寸差异原因在Break-a-Scene中的具体实现总结 前言 特征图 (Latent) 尺寸和注意力图(attention map)尺寸在扩散模型中有差异,是由于模型架构和注意力机制的特性决定的。 特征图和注意力图的尺寸差异原…...

MySQL - Windows 中 MySQL 禁用开机自启,并在需要时手动启动
Windows 中 MySQL 禁用开机自启,并在需要时手动启动 打开服务管理器:在底部搜索栏输入【services.msc】 -> 点击【服务】 打开 MySQL 服务的属性管理:找到并右击 MySQL 服务 -> 点击【属性】 此时的 MySQL 服务:正在运行&a…...
前端下载文件,文件打不开的问题记录
需求: 下载是很常见的接口,但是经常存在下载的文件异常的问题。此处记录一个常见的错误。 分析: 1、接口请求需要配置{responseType: ‘blob’},此时要求返回的格式为blob,进而进行下载。 const res await axios.…...
小白的进阶之路系列之十一----人工智能从初步到精通pytorch综合运用的讲解第四部分
本文将介绍如何用PyTorch构建模型 torch.nn.Module和torch.nn.Parameter 除了Parameter之外,本视频中讨论的所有类都是torch.nn.Module的子类。这是PyTorch基类,用于封装PyTorch模型及其组件的特定行为。 torch.nn.Module的一个重要行为是注册参数。如果特定的Module子类具…...

OpenCV CUDA模块霍夫变换------在 GPU 上执行概率霍夫变换检测图像中的线段端点类cv::cuda::HoughSegmentDetector
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::cuda::HoughSegmentDetector 是 OpenCV 的 CUDA 模块中一个非常重要的类,它用于在 GPU 上执行 概率霍夫变换(Probabi…...
详解一下RabbitMQ中的channel.Publish
函数定义(来自 github.com/streadway/amqp) func (ch *Channel) Publish(exchange string,key string,mandatory bool,immediate bool,msg Publishing, ) error这个方法的作用是:向指定的交换机 exchange 发送一条消息 msg,带上路…...
硬件学习笔记--62 MCU的ECC功能简介
1. 基本概念 ECC(Error Correction Code,错误校正码)是MCU(微控制器)中用于检测和纠正存储器数据错误的硬件功能,主要应用于Flash、RAM、Cache等存储单元,确保数据在传输或存储过程中的可靠性。…...
Uiverse.io:免费UI组件库
Uiverse.io 完整使用指南:免费UI组件库的终极教程 🌟 什么是 Uiverse.io? Uiverse.io 是一个开源的UI组件库平台,为开发者和设计师提供了大量精美的、可直接使用的HTML/CSS组件。这个平台的特色在于所有组件都是由社区贡献的,完全免费,并且可以直接复制代码使用。 �…...
普中STM32F103ZET6开发攻略(四)
接续上文:普中STM32F103ZET6开发攻略(三)-CSDN博客 点关注不迷路哟。你的点赞、收藏,一键三连,是我持续更新的动力哟!!! 目录 接续上文:普中STM32F103ZET6开发攻略&am…...

ck-editor5的研究 (5):优化-页面离开时提醒保存,顺便了解一下 Editor的生命周期 和 6大编辑器类型
前言 经过前面的 4 篇内容,我们已经慢慢对 CKEditor5 熟悉起来了。这篇文章,我们就来做一个优化,顺便再补几个知识点: 当用户离开时页面时,提醒他保存数据了解一下 CKEditor5 的 六大编辑器类型了解一下 editor 实例对…...

[3D GISMesh]三角网格模型中的孔洞修补算法
📐 三维网格模型空洞修复技术详解 三维网格模型在扫描、重建或传输过程中常因遮挡、噪声或数据丢失产生空洞(即边界非闭合区域),影响模型的完整性与可用性。空洞修复(Hole Filling)是计算机图形学和几何处…...

11.2 java语言执行浅析3美团面试追魂七连问
美团面试追魂七连问:关于Object o New Object() ,1请解释一下对象的创建过程(半初始化) 2,加问DCL要不要volatile 问题(指令重排) 3.对象在内存中的存储布局(对象与数组的存储不同),4.对象头具体包括什么.5.对象怎么定位.6.对象怎么分配(栈-线程本地-Eden-Old)7.在…...

MySQL 全量、增量备份与恢复
一.MySQL 数据库备份概述 备份的主要目的是灾难恢复,备份还可以测试应用、回滚数据修改、查询历史数据、审计等。之前已经学习过如何安装 MySQL,本小节将从生产运维的角度了解备份恢复的分类与方法。 1 数据备份的重要性 在企业中数据的价值至关…...
【25.06】FISCOBCOS使用caliper自定义测试 通过webase 单机四节点 helloworld等进行测试
前置条件 安装一个Ubuntu20+的镜像 基础环境安装 Git cURL vim jq sudo apt install -y git curl vim jq Docker和Docker-compose 这个命令会自动安装docker sudo apt install docker-compose sudo chmod +x /usr/bin/docker-compose docker versiondocker-compose vers…...

MonoPCC:用于内窥镜图像单目深度估计的光度不变循环约束|文献速递-深度学习医疗AI最新文献
Title 题目 MonoPCC: Photometric-invariant cycle constraint for monocular depth estimation of endoscopic images MonoPCC:用于内窥镜图像单目深度估计的光度不变循环约束 01 文献速递介绍 单目内窥镜是胃肠诊断和手术的关键医学成像工具,但其…...
如何计算H5页面加载时的白屏时间
计算 H5 页面加载时的 白屏时间(First Paint Time)是前端性能优化的重要指标,通常指从用户发起页面请求到浏览器首次渲染像素(如背景色、文字等)的时间。以下是几种常用的计算方法: 1. 使用 Performance AP…...

SpringAI系列 - MCP篇(三) - MCP Client Boot Starter
目录 一、Spring AI Mcp集成二、Spring AI MCP Client Stater三、spring-ai-starter-mcp-client-webflux集成示例3.1 maven依赖3.2 配置说明3.3 集成Tools四、通过SSE连接MCP Server五、通过STDIO连接MCP Server六、通过JSON文件配置STDIO连接一、Spring AI Mcp集成 Spring AI…...

【深度学习新浪潮】以Dify为例的大模型平台的对比分析
我们从核心功能、适用群体、易用性、可扩展性和安全性五个维度展开对比分析: 一、核心功能对比 平台核心功能多模型支持插件与工具链Dify低代码开发、RAG增强、Agent自律执行、企业级安全支持GPT-4/5、Claude、Llama3、Gemini及开源模型(如Qwen-VL-72B),支持混合模型组合可…...

Asp.net core 使用EntityFrame Work
安装以下Nuget 包 Microsoft.EntityFrameworkCore.Tools Microsoft.EntityFrameworkCore.Design Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore Microsoft.EntityFrameworkCore.SqlServer或者Npgsql.EntityFrameworkCore.PostgreSQL 安装完上述Nuget包之后,在appset…...
isp中的 ISO代表什么意思
isp中的 ISO代表什么意思 在摄影和图像信号处理(ISP,Image Signal Processor)领域,ISO是一个用于衡量相机图像传感器对光线敏感度的标准参数。它最初源于胶片摄影时代的 “国际标准化组织(International Organization …...

AI Coding 资讯 2025-06-03
Prompt工程 RAG-MCP:突破大模型工具调用瓶颈,告别Prompt膨胀 大语言模型(LLM)在工具调用时面临Prompt膨胀和决策过载两大核心挑战。RAG-MCP创新性地引入检索增强生成技术,通过外部工具向量索引和动态检索机制,仅将最相关的工具信…...

2024年12月 C/C++(三级)真题解析#中国电子学会#全国青少年软件编程等级考试
C/C++编程(1~8级)全部真题・点这里 第1题:最近的斐波那契数 斐波那契数列 Fn 的定义为:对 n ≥ 0 有 Fn+2 = Fn+1 + Fn,初始值为 F0 = 0 和 F1 = 1。所谓与给定的整数 N 最近的斐波那契数是指与 N 的差之绝对值最小的斐波那契数。 本题就请你为任意给定的整数 N 找出与之最…...
3d GIS数据来源与编辑工具
1、卫星遥感 2、航空摄影测量 3、地面实测技术 全站仪 3维扫描 3D GIS数据制作全流程详解 一、数据采集:多源数据获取 3D GIS数据的制作需从多维度采集地理空间信息,以下是主要采集方式及适用场景: (一)遥感与航测…...

NeRF PyTorch 源码解读 - 体渲染
文章目录 1. 体渲染公式推导1.1. T ( t ) T(t) T(t) 的推导1.2. C ( r ) C(r) C(r) 的推导 2. 体渲染公式离散化3. 代码解读 1. 体渲染公式推导 如下图所示,渲染图像上点 P P P 的颜色值 c c c 是累加射线 O P → \overrightarrow{OP} OP 在近平面和远平面范围…...