Python 数据分析与可视化实战:从数据清洗到图表呈现 - 指南

news/2025/10/6 10:33:57/文章来源:https://www.cnblogs.com/tlnshuju/p/19127371

Python 数据分析与可视化实战:从数据清洗到图表呈现 - 指南

2025-10-06 10:29  tlnshuju  阅读(0)  评论(0)    收藏  举报

目录

一、数据采集与初步探索

二、数据清洗的七种武器

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 snssns.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.hourdf['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 Counterword_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 Funnelfunnel = 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%的用户流失

六、部署与交付

通过这种从数据采集到可视化交付的完整链路,即使面对TB级电商数据,也能高效完成从数据清洗到业务洞察的全流程。关键在于将每个处理步骤封装成可复用的函数模块,配合适当的自动化工具,使数据分析真正成为业务决策的加速器。

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

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

相关文章

深度学习优化器算法巧思速览

这一篇博文想写很久了,一直没有下笔,核心原因也是有一些待办的思路在攻关验证。 我们先从一个核心的问题出发, 1. 为什么要研究优化器算法? 它的关联问题:训练为什么要调参,调的是什么参? 如果就这个问题去问各…

完整教程:LangChain完全指南:从入门到精通,打造AI应用开发新范式

完整教程:LangChain完全指南:从入门到精通,打造AI应用开发新范式pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: &quo…

在Windows下使用lucky实现TLS/SSL证书自动化

在Windows下使用lucky实现TLS/SSL证书自动化2024.06.06 TLS和SSL TLS 是传输层安全性协议 (Transport Layer Security) 的缩写 他的前身是 SSL 即安全套接层 (Secure Sockets Layer) 其目的是保障在互联网通信时数据…

NDK开发与实践(入门篇微课视频版)

本书旨在通过深入的理论与丰富的实战案例,引领读者系统学习NDK开发技术。NDK技术以其高安全性、卓越性能和高度复用性,成为现代应用开发的关键技术之一。本书从基本概念出发,全面介绍了NDK开发所需的核心基础知识,…

【深度学习优化算法】02:凸性 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

温州通业建设工程有限公司网站深圳网站建站的公司

Git学习笔记 文章目录 Git学习笔记一、版本控制二、Linux基础命令三、Git的环境配置四、Git的基本理论&#xff08;核心&#xff09;五、Git项目的搭建六、Git文件操作七、使用码云八、IDEA集成git九、Git分支 一、版本控制 什么是版本控制 版本控制&#xff08;Revision contr…

调了很久的代码总结

凡是在循环前面加了特判的东西,都要检查一下循环内部要不要判。 可以再读一遍题来调代码。

在Windows上搭建 EasyTier 公共服务器

在Windows上搭建 EasyTier 公共服务器2024.10.01 关于本教程 本教程将介绍如何在Windows上搭建 EasyTier 公共服务器 以帮助那些无公网的节点进行连接 值得注意的是EasyTier是不区分客户端和服务端的 其本身同时承载 服…

Transformer模型开发从0到1——原理深入与项目实践

本书分为5篇共17章。Transformer模型基础篇(第1~5章)重点介绍Transformer模型框架。把Transformer模型掰开,从最基础的输入出发,按照模型框架,一点一点走进Transformer模型的内部,直到最终的模型输出;Transform…

常州品牌网站建设免费文字变形logo设计

在软件工程中&#xff0c;设计模式是为了解决常见的软件设计问题而形成的一套经典解决方案。这些模式不仅能够帮助开发者提高设计的灵活性和代码的重用性&#xff0c;还能使问题的解决方案更加清晰、易于理解。《设计模式精解&#xff0d;GoF 23种设计模式》一书中所列举的23种…

毕业设计 网站开发简单吗蘑菇街网站模板

最近偶尔有用户反馈某些 HTTP 接口出现超时问题&#xff0c;而 web 服务端的 Trace 监控没有出现 http 返回值为 503 等异常情况。出现这种情况一般是web容器出现问题&#xff0c;客户端连 Arthas是Alibaba开源的Java诊断工具&#xff0c;深受开发者喜爱。 Github&#xff1a;h…

鸿蒙OS基于UniApp的区块链钱包创建实践:打造支持鸿蒙生态的Web3应用#三方框架 #Uniapp

鸿蒙OS&基于UniApp的区块链钱包创建实践:打造支持鸿蒙生态的Web3应用#三方框架 #Uniapppre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !impor…

CF700E

题目大意: 给定一个长为 \(n\) 的字符串 \(S\),你要找到最大的 \(k\),使得存在 \(s_{1} \sim s_{k}\) 使得 \(s_{1}\) 是 \(S\) 子串 且 \(s_{i}\) 在 \(s_{i - 1}\) 中作为子串至少出现两次。 \(n \le 2 \times 10…

价值弥漫:“AI元人文”的场域革命与共生之路

价值弥漫:“AI元人文”的场域革命与共生之路 本文探讨“价值弥漫”作为“AI元人文”核心实现路径的哲学基础与技术内涵,提出从“工具性AI”到“场域性AI”的范式转变。 引言:从“价值对齐”到“价值弥漫”的范式迁移…

手机app设计网站公司网站建设需要什么科目

流程图 一、前期准备 1.1 打开百度智能云官网找到管理中心创建应用 全选文字识别 1.2 保存好AppId、API Key和Secret Key 1.3 找到通用场景文字识别&#xff0c;立即使用 1.4 根据自己需要&#xff0c;选择要开通的项目 二、代码编写 以通用文字识别&#xff08;高精度版&am…

k8s之pod概念

1. pod基本概念 2. pod网络概念 3. pod的生命周期和状态 4. 探针 5. 创建pod 6. 总结‍ 1. pod基本概念Kubernetes 中,Pod 是最小的网络调度单位, 每个pod可以放多个容器(例如可以放多个docke容器在同一个pod中运行…

鸿蒙版Taro 搭建开发环境 - 教程

鸿蒙版Taro 搭建开发环境 - 教程2025-10-06 10:09 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !import…

CF 1055 Div.1+Div.2

F - Triple Attack 我会了。 G - Query Jungle 我会了。 H1 - Victorious Coloring (Easy Version) 我不会。 H2 - Victorious Coloring (Hard Version) 我不会。

LUCKY STUN穿透在Windows上使用UPnP工具为BT客户端自动添加内外端口号不同的映射规则

LUCKY STUN穿透在Windows上使用UPnP工具为BT客户端自动添加内外端口号不同的映射规则2024.02.07 关于本教程 本教程基于:基于stun穿透工具LUCKY,使BT客户端绿灯、开放TCP端口的办法(进化版) 在该教程中实现了使用 …

深圳门户网站制作wordpress 鼠标特效

摘要&#xff1a; 4月30日&#xff0c;阿里云发现&#xff0c;俄罗斯黑客利用Hadoop Yarn资源管理系统REST API未授权访问漏洞进行攻击。 Hadoop是一款由Apache基金会推出的分布式系统框架&#xff0c;它通过著名的 MapReduce 算法进行分布式处理&#xff0c;Yarn是Hadoop集群的…