Python 数据分析实战:Pandas+Matplotlib 从入门到可视化报表
📌 博客标签:Python数据分析、Pandas实战、Matplotlib可视化、Seaborn绘图、电商数据分析、股票可视化、零基础Python
🔥 爆款核心卖点:零基础友好、全程实操、1小时速成专业可视化报表,适配学生作业、运营数据分析、产品数据复盘、职场报表制作
👥 适配人群:Python零基础新手、在校学生、运营/产品/市场职场人、数据分析入门学习者
一、前言:为什么所有人都要学 Pandas+Matplotlib?
在数据分析、运营复盘、产品迭代、学生科研作业中,Excel 能做的基础数据分析,Python 全能高效实现;Excel 做不了的复杂清洗、批量可视化、动态报表,Python 轻松拿捏。
Pandas 是 Python 数据分析核心工具,主打数据读取、清洗、转换、分组聚合、透视统计,搞定80%的数据处理工作;Matplotlib+Seaborn 是可视化黄金组合,可制作折线图、柱状图、热力图、分布图等专业图表,替代传统Excel图表,产出高清可直接用于汇报的可视化报表。
本文主打零基础极速入门,全程无废话、全实操,跟着敲代码,1小时从零学会完整数据分析+可视化全流程,附赠两大热门实战案例:电商用户行为分析、股票数据可视化,学完直接落地工作和学习场景。
二、环境准备(零基础一键安装)
无需复杂配置,终端执行以下命令,一次性安装所有需要的依赖库:
pip install pandas matplotlib seaborn numpy
导入通用库(所有案例通用,直接复制开头运行即可):
# 数据分析库
import pandas as pd
import numpy as np
# 可视化核心库
import matplotlib.pyplot as plt
import seaborn as sns
# 解决Matplotlib中文乱码、负号显示异常(必加!)
plt.rcParams['font.sans-serif'] = ['SimHei', 'PingFang SC', 'Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False
# 设置Seaborn美化样式
sns.set_style("whitegrid")
三、Pandas 核心全流程实操(读取+清洗+转换+聚合)
数据分析的核心流程:数据读取 → 数据探索 → 数据清洗 → 数据转换 → 分组聚合统计,下面手把手实操每一步核心代码。
3.1 数据读取(支持Excel/CSV,职场最常用)
日常工作90%数据都是CSV、Excel格式,Pandas一行代码即可读取:
# 读取csv文件
df = pd.read_csv("data.csv", encoding="utf-8")
# 读取Excel文件(需提前安装openpyxl)
# df = pd.read_excel("data.xlsx")
# 基础数据探索(快速查看数据)
print("数据行列数:", df.shape)
print("\n数据前5行:")
print(df.head())
print("\n数据基本信息:")
print(df.info())
print("\n数据统计描述:")
print(df.describe())
print("\n字段空值数量:")
print(df.isnull().sum())
3.2 数据清洗(处理空值、重复值、异常值)
原始数据普遍存在脏数据,清洗是数据分析必备步骤,零基础通用清洗方案:
# 1. 删除完全重复数据
df = df.drop_duplicates()
# 2. 空值处理:删除空值 / 填充空值
df = df.dropna() # 删除含空值的行
# df = df.fillna(0) # 空值填充为0
# df["字段名"].fillna(df["字段名"].mean()) # 均值填充数值型空值
# 3. 简单异常值过滤(示例:过滤数值为负数的异常数据)
df = df[df["数值字段"] >= 0]
3.3 数据转换(字段处理、类型转换、衍生字段)
对原始字段进行加工,生成分析所需的新数据,适配业务统计需求:
# 1. 数据类型转换
df["日期"] = pd.to_datetime(df["日期"]) # 转为时间格式
df["金额"] = df["金额"].astype("float") # 转为浮点数值
# 2. 衍生新字段
df["月份"] = df["日期"].dt.month # 从日期中提取月份
df["年份"] = df["日期"].dt.year # 提取年份
# 3. 字段重命名
df.rename(columns={"old_name": "new_name"}, inplace=True)
# 4. 筛选指定条件数据
filter_df = df[(df["月份"] == 6) & (df["金额"] > 0)]
3.4 数据聚合与分组统计(业务核心)
分组聚合是运营、产品数据分析的核心,用于统计维度数据、复盘业务指标:
# 1. 单维度分组统计:按月统计总金额
month_total = df.groupby("月份")["金额"].sum().reset_index()
print("月度金额统计:")
print(month_total)
# 2. 多维度分组统计:按月份+渠道统计订单量、金额
group_data = df.groupby(["月份", "渠道"]).agg(
订单总数=("订单ID", "count"),
总金额=("金额", "sum"),
平均金额=("金额", "mean")
).reset_index()
# 3. 透视表(高阶统计,职场高频使用)
pivot_data = pd.pivot_table(df, index="月份", columns="渠道", values="金额", aggfunc="sum", fill_value=0)
print("\n透视表统计:")
print(pivot_data)
四、Matplotlib+Seaborn 可视化绘图入门
数据处理完成后,通过可视化将枯燥数据转为直观图表,Matplotlib 灵活定制,Seaborn 一键美化,组合使用产出专业汇报级图表。
4.1 基础绘图通用模板(所有图表通用)
# 通用画布设置
plt.figure(figsize=(12, 6)) # 设置图表尺寸
# 绘图代码
# ...
# 通用美化配置
plt.title("图表标题", fontsize=14, pad=15)
plt.xlabel("X轴名称", fontsize=12)
plt.ylabel("Y轴名称", fontsize=12)
plt.grid(alpha=0.3) # 显示网格,降低透明度
plt.tight_layout() # 自动适配布局,防止文字截断
plt.savefig("图表.png", dpi=300, bbox_inches="tight") # 高清保存
plt.show()
4.2 高频图表快速绘制
涵盖工作最常用的折线图、柱状图、热力图、分布图:
# 1. 折线图(趋势分析:时间、走势数据)
plt.figure(figsize=(10,5))
plt.plot(month_total["月份"], month_total["金额"], color="#1f77b4", marker="o", linewidth=2)
plt.title("月度金额趋势图")
plt.xlabel("月份")
plt.ylabel("总金额")
plt.grid(alpha=0.3)
plt.show()
# 2. 柱状图(对比分析:分类数据对比)
plt.figure(figsize=(10,5))
sns.barplot(x="月份", y="金额", data=month_total, palette="Blues_d")
plt.title("月度金额柱状对比图")
plt.show()
# 3. 热力图(相关性分析)
corr = df.corr()
plt.figure(figsize=(8,6))
sns.heatmap(corr, annot=True, cmap="coolwarm", fmt=".2f")
plt.title("数据相关性热力图")
plt.show()
五、实战案例一:电商用户行为数据分析(运营必备)
场景适配:电商运营复盘、用户行为分析、转化率统计、月度销量分析,学生课程设计首选案例。
模拟电商数据集:包含用户ID、访问时间、行为类型(浏览/加购/下单/支付)、消费金额、商品品类。全程模拟真实业务数据,可直接替换自有CSV文件使用。
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 全局配置
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
sns.set_style("whitegrid")
# 1. 模拟生成电商数据(无外部文件也可直接运行)
np.random.seed(666)
dates = pd.date_range("2025-01-01", periods=30, freq="D")
behavior = ["浏览", "加购", "下单", "支付"]
category = ["服饰", "美妆", "数码", "食品", "家居"]
data = {
"用户ID": np.random.randint(1000, 5000, 800),
"访问时间": np.random.choice(dates, 800),
"行为类型": np.random.choice(behavior, 800),
"商品品类": np.random.choice(category, 800),
"消费金额": np.random.uniform(0, 500, 800).round(2)
}
df_shop = pd.DataFrame(data)
# 2. 数据清洗
df_shop = df_shop.drop_duplicates()
df_shop["消费金额"] = df_shop["消费金额"].fillna(0)
df_shop = df_shop[df_shop["消费金额"] >= 0]
# 3. 数据转换
df_shop["日期"] = df_shop["访问时间"].dt.date
df_shop["小时"] = df_shop["访问时间"].dt.hour
# 4. 业务聚合统计
# 各行为数量统计
behavior_count = df_shop["行为类型"].value_counts().reset_index()
behavior_count.columns = ["行为类型", "次数"]
# 各品类消费金额统计
category_sale = df_shop.groupby("商品品类")["消费金额"].sum().sort_values(ascending=False).reset_index()
# 5. 可视化分析
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(16, 6))
# 行为分布柱状图
sns.barplot(x="行为类型", y="次数", data=behavior_count, ax=ax1, palette="Greens_d")
ax1.set_title("用户行为分布统计", fontsize=14)
ax1.set_xlabel("用户行为")
ax1.set_ylabel("行为次数")
# 品类销售额分布
sns.barplot(x="商品品类", y="消费金额", data=category_sale, ax=ax2, palette="Oranges_d")
ax2.set_title("各品类总销售额排行", fontsize=14)
ax2.set_xlabel("商品品类")
ax2.set_ylabel("总销售额")
plt.tight_layout()
plt.savefig("电商用户行为分析报表.png", dpi=300)
plt.show()
print("✅ 电商数据分析完成!")
print("各品类销售额:\n", category_sale)
案例价值:可直接用于运营日报、周报复盘,快速找出用户流失节点、爆款品类、低效品类,辅助运营策略调整。
六、实战案例二:股票数据可视化分析(量化/金融入门)
场景适配:金融数据分析、股票走势复盘、价格波动可视化、学生量化入门作业。本案例实现股票时间序列走势、涨跌幅分析、价格区间统计。
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
# 全局配置
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 1. 模拟股票数据(时间、开盘价、收盘价、最高价、最低价、成交量)
np.random.seed(888)
stock_dates = pd.date_range("2025-01-01", periods=60, freq="D")
base_price = 100
# 生成波动价格
close_price = base_price + np.cumsum(np.random.randn(60)*2)
open_price = close_price + np.random.randn(60)*1
high_price = np.maximum(open_price, close_price) + np.random.uniform(0,2,60)
low_price = np.minimum(open_price, close_price) - np.random.uniform(0,2,60)
volume = np.random.randint(10000, 50000, 60)
df_stock = pd.DataFrame({
"日期": stock_dates,
"开盘价": open_price.round(2),
"收盘价": close_price.round(2),
"最高价": high_price.round(2),
"最低价": low_price.round(2),
"成交量": volume
})
# 2. 数据加工:计算日涨跌幅
df_stock["涨跌幅"] = df_stock["收盘价"].pct_change() * 100
# 3. 可视化股票走势
plt.figure(figsize=(14, 6))
# 绘制收盘价走势
plt.plot(df_stock["日期"], df_stock["收盘价"], color="#e74c3c", linewidth=2, label="收盘价")
# 填充走势区域
plt.fill_between(df_stock["日期"], df_stock["收盘价"], alpha=0.2, color="#e74c3c")
plt.title("股票60日收盘价走势可视化", fontsize=15)
plt.xlabel("日期")
plt.ylabel("价格(元)")
plt.legend()
plt.grid(alpha=0.3)
plt.tight_layout()
plt.savefig("股票走势可视化报表.png", dpi=300)
plt.show()
# 4. 涨跌幅分布直方图
plt.figure(figsize=(10,5))
plt.hist(df_stock["涨跌幅"].dropna(), bins=15, color="#3498db", alpha=0.7)
plt.title("股票日涨跌幅分布直方图")
plt.xlabel("涨跌幅(%)")
plt.ylabel("频次")
plt.grid(alpha=0.3)
plt.show()
print("✅ 股票数据分析可视化完成!")
print("数据概览:\n", df_stock[["日期","收盘价","涨跌幅"]].head(10))
七、学习总结&落地技巧
7.1 核心知识复盘
-
Pandas核心链路:数据读取→探索→清洗(去重/去空/去异常)→字段转换→分组聚合→透视统计,覆盖90%数据分析工作
-
可视化核心:Matplotlib负责基础绘图与精细定制,Seaborn负责快速美化,搭配使用产出专业报表
-
两大实战场景:电商用户行为(运营通用)、股票时序数据(金融/量化通用),可直接复用改造
7.2 零基础速成技巧
-
不用死记硬背代码,保存本文模板,工作学习直接复制修改字段即可使用
-
优先掌握分组聚合+可视化核心组合,快速产出分析结论
-
所有图表均可高清保存,直接用于PPT汇报、课程设计、工作复盘
八、写在最后
Pandas+Matplotlib 是数据分析的入门基石,也是职场刚需技能。相比于繁琐的Excel手动操作,Python数据分析可以实现一次写代码、终身复用,批量处理数据、自动生成可视化报表,大幅提升工作效率。
本文全程零基础友好,无复杂语法、无冗余知识点,1小时即可从入门到做出专业可视化报表,不管是学生做作业、运营做数据复盘、产品做用户分析,都可以直接套用。
💡 福利:需要本文完整源码+测试数据集可以评论区留言,免费分享!
关注我,持续更新Python数据分析、可视化报表、自动化办公、机器学习实战干货,零基础也能快速进阶数据分析师!
更多推荐

所有评论(0)