当前位置: 首页 > news >正文

【Python数据分析】数据分析与可视化

目录

    • 前言
    • 1. 写在前面
    • 2. 环境一键安装
    • 3. 核心库 5 行速览
    • 4. 数据载入 & 初探
    • 5. 数据清洗 + 特征工程
    • 6. 描述性统计:分组洞察
    • 7. 可视化:静动结合
      • 7.1 静态图(matplotlib / seaborn)
      • 7.2 交互图(plotly)
    • 8. 时间序列(扩展)
    • 9. 一键运行完整脚本
    • 10. 小结 & 下一步

专栏导读
  • 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手
  • 🏳️‍🌈 个人博客主页:请点击——> 个人的博客主页 求收藏
  • 🏳️‍🌈 Github主页:请点击——> Github主页 求Star⭐
  • 🏳️‍🌈 知乎主页:请点击——> 知乎主页 求关注
  • 🏳️‍🌈 CSDN博客主页:请点击——> CSDN的博客主页 求关注
  • 👍 该系列文章专栏:请点击——>Python办公自动化专栏 求订阅
  • 🕷 此外还有爬虫专栏:请点击——>Python爬虫基础专栏 求订阅
  • 📕 此外还有python基础专栏:请点击——>Python基础学习专栏 求订阅
  • 文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏
  • ❤️ 欢迎各位佬关注! ❤️

前言

日期:2025-11-12
关键词:pandas、seaborn、plotly、数据分析、可视化


1. 写在前面

数据分析 ≠ 写代码,它是一套「获取 → 清洗 → 探索 → 可视化 → 洞察」的流水线。
本文用一份「餐厅小费」公开数据集,带你 15 分钟跑通整条流水线,代码全部可复现。


2. 环境一键安装

# 建议使用 Python 3.9+
pip install pandas==2.1 numpy==1.26 seaborn==0.12 matplotlib==3.8 plotly==5.18

3. 核心库 5 行速览

用途本文关键函数
pandas表格数据神器read_csv / groupby / merge
numpy向量化计算np.where / np.mean
seaborn高颜值静态图sns.boxplot / sns.heatmap
matplotlib基础绘图 & 微调plt.tight_layout / plt.show
plotly交互式图表,鼠标悬停px.scatter / px.bar

4. 数据载入 & 初探

import pandas as pd, numpy as np, seaborn as sns, matplotlib.pyplot as plt, plotly.express as px# seaborn 自带「餐厅小费」数据集,直接加载
df = sns.load_dataset("tips")
print("维度:", df.shape)          # (244, 7)
print(df.head())
print(df.info())                   # 无缺失,无中文

5. 数据清洗 + 特征工程

# 1) 缺失值——本文数据集已干净,无需处理
# 2) 构造新字段
df["tip_pct"] = df["tip"] / df["total_bill"]          # 小费率
df["is_weekend"] = df["day"].isin(["Sat", "Sun"])     # 是否周末
print(df[["total_bill", "tip", "tip_pct"]].describe())

6. 描述性统计:分组洞察

# 按「星期」看平均小费率
week_stats = df.groupby("day")["tip_pct"].agg(["mean", "std"]).round(3)
print(week_stats)# 透视表:性别 × 抽烟 的账单均值
pivot = df.pivot_table(values="total_bill", index="sex", columns="smoker", aggfunc="mean")
print(pivot)

7. 可视化:静动结合

7.1 静态图(matplotlib / seaborn)

# 1) 小费占比分布
plt.figure(figsize=(5, 3))
sns.histplot(df["tip_pct"], bins=20, kde=True)
plt.title("Distribution of Tip Percentage")
plt.tight_layout(); plt.show()# 2) 性别 vs 小费箱线图
plt.figure(figsize=(4, 4))
sns.boxplot(x="sex", y="tip_pct", data=df)
plt.title("Tip % by Gender")
plt.tight_layout(); plt.show()# 3) 相关性热力图
corr = df[["total_bill", "tip", "size", "tip_pct"]].corr(method="pearson")
plt.figure(figsize=(4, 3))
sns.heatmap(corr, annot=True, fmt=".2f", cmap="coolwarm", vmin=-1, vmax=1)
plt.title("Correlation Matrix")
plt.tight_layout(); plt.show()

7.2 交互图(plotly)

# 散点:账单 vs 小费,颜色=星期,大小=用餐人数
fig = px.scatter(df, x="total_bill", y="tip", color="day",size="size", hover_data=["sex", "smoker"],title="Interactive: Bill vs Tip")
fig.update_layout(width=600, height=400)
fig.show()

8. 时间序列(扩展)

tips 本身没有时间戳,我们可以伪造一个日期字段做演示:

# 假设数据从 2024-01-01 开始,每日递增
df["date"] = pd.date_range("2024-01-01", periods=len(df), freq="D")
ts = df.set_index("date").resample("W")["total_bill"].sum()
ts.plot(figsize=(6, 3), title="Weekly Total Bill")
plt.tight_layout(); plt.show()

9. 一键运行完整脚本

把下面内容保存为 analysis.pypython analysis.py 即可出图。

# analysis.py
import pandas as pd, numpy as np, seaborn as sns, matplotlib.pyplot as plt, plotly.express as pxdef main():df = sns.load_dataset("tips")df["tip_pct"] = df["tip"] / df["total_bill"]df["is_weekend"] = df["day"].isin(["Sat", "Sun"])print("Grouped by day:")print(df.groupby("day")["tip_pct"].mean().round(3))plt.figure(figsize=(5, 3))sns.histplot(df["tip_pct"], bins=20, kde=True)plt.title("Tip % Distribution")plt.tight_layout()plt.savefig("tip_pct_dist.png", dpi=300)fig = px.scatter(df, x="total_bill", y="tip", color="day",size="size", hover_data=["sex", "smoker"])fig.write_html("interactive_scatter.html")print("Done! 已生成 tip_pct_dist.png 与 interactive_scatter.html")if __name__ == "__main__":main()

10. 小结 & 下一步

  1. 本文覆盖了「清洗 → 统计 → 静/动可视化」完整闭环。
  2. sns.load_dataset("tips") 换成 pd.read_csv("你的文件.csv") 即可迁移到真实业务。
  3. 想继续深入:
    • scikit-learn 做预测(回归/分类)
    • Streamlit 把图表打包成 Web 应用
    • JupyterLab 交互式报告一键分享

Enjoy Coding & Happy Analyzing!

结尾
  • 希望对初学者有帮助;致力于办公自动化的小小程序员一枚
  • 希望能得到大家的【❤️一个免费关注❤️】感谢!
  • 求个 🤞 关注 🤞 +❤️ 喜欢 ❤️ +👍 收藏 👍
  • 此外还有办公自动化专栏,欢迎大家订阅:Python办公自动化专栏
  • 此外还有爬虫专栏,欢迎大家订阅:Python爬虫基础专栏
  • 此外还有Python基础专栏,欢迎大家订阅:Python基础学习专栏

http://www.dtcms.com/a/601042.html

相关文章:

  • MyBatis概述
  • Hadoop集群搭建(下):centos 7为例(已将将安装所需压缩包统一放在了/opt/software目录下)
  • 美创网站建设优势开县网站制作
  • 北京市网站建设网站怎么盈利的
  • 2.6、安全大脑:AI驱动的安全编排与自动化响应实战
  • Linux 进程间通信怎么选?——场景化决策指南
  • 折800网站源码石家庄新闻发布会
  • ThreadLocal 中弱引用(WeakReference)设计:为什么要 “故意” 让 Key 被回收?
  • Java大厂面试真题:从Spring Boot到AI微服务的三轮技术拷问
  • es开源小工具 -- 分析器功能
  • MQTT 与双工通信
  • 【.NET10】正式发布!微软开启智能开发生态新纪元
  • Linux 魔法:多种空块填充技术详解与实践
  • 深入浅出 SQLSugar:快速掌握高效 .NET ORM 框架
  • 广东哪家网站建网站搜索不到公司网站
  • 做网站开发需要学什么app开发自学教程
  • 【Linux】网络编程入门:从一个小型回声服务器开始
  • 【统一功能处理】从入门到源码:拦截器学习指南(含适配器模式深度解读)
  • linux 解析并生成一个platform_device设备具体过程
  • 编译器使用的开发语言 | 解析编译器的实现原理及其开发语言的选择
  • 佛山企业网站建设流程织梦营销型网站模板
  • 洛谷 P11965:[GESP202503 七级] 等价消除 ← 位运算(异或) + STL map
  • 智慧团建网登录入口移动网站如何优化排名
  • linux drm子系统专栏介绍
  • termux编译opencv给python用
  • 4.子任务四:Hive 安装配置
  • Lua学习记录(3) --- Lua中的复杂数据类型_table
  • 郑州做定制网站的公司南宁有名的seo费用
  • 华为SRv6技术:引领IP网络进入新时代的智能导航系统
  • 视频汇聚平台EasyCVR:构建通信基站“可视、可管、可控”的智慧安防体系