Python 0基础 入门级 数据分析 5:matplotlib/seaborn 可视化

Python 数据分析 5:matplotlib/seaborn 可视化(画折线图 / 柱状图 / 热力图,调好看样式)

做数据分析时,“数据表格” 不如 “图表” 直观 —— 比如看 “每月销售额趋势”,表格里的数字需要逐个对比,而折线图一眼就能看出上升 / 下降;看 “各品类销量对比”,柱状图比数字罗列更易区分高低。matplotlib 是 Python 可视化的 “基础工具”,seaborn 在其基础上优化了样式,两者结合能画出既专业又好看的图表。

本文以电商 2024 年 Q1 销售数据为实战案例,手把手教你画 “折线图(趋势)、柱状图(对比)、热力图(关联)”,重点讲解 “样式优化技巧”(颜色、字体、布局),让你的图表从 “简陋” 变 “适合汇报”,新手也能轻松上手。

一、为什么需要数据可视化?(用业务场景说明)

假设我们有一份电商销售数据(延续上一篇分组统计的数据),包含 “月份、商品类别、地区、销售额、销量” 等字段。业务中常需要:

  1. 看 “每月销售额变化”:判断旺季 / 淡季(用折线图,适合展示趋势);
  2. 比 “各品类总销量”:找出热销 / 滞销品类(用柱状图,适合展示对比);
  3. 分析 “地区 - 品类销售额分布”:看哪个地区哪个品类卖得好(用热力图,适合展示关联)。

这些需求用表格很难直观呈现,而可视化能 “一图胜千言”,甚至发现表格中隐藏的规律(比如 3 月家电销售额突增)。

二、环境准备与数据加载

1. 安装并导入库

seaborn 依赖 matplotlib,先安装再导入(已安装的可跳过):

# 安装matplotlib(基础)和seaborn(美化)

pip install matplotlib seaborn pandas numpy

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

import seaborn as sns

# 解决中文显示问题(新手必加,否则中文会变成方框)

plt.rcParams["font.sans-serif"] = ["SimHei", "DejaVu Sans"]  # 支持中文和英文

plt.rcParams["axes.unicode_minus"] = False  # 解决负号显示问题

# 设置seaborn默认样式(自带美化,比matplotlib默认好看)

sns.set_style("whitegrid")  # 白色网格背景,清晰不杂乱

2. 加载实战数据(延续上一篇的电商数据)

为保持连贯性,我们用分组统计后的 “结构化数据”(也可替换为你的实际数据):

# 1. 构造/加载电商销售数据(含月份、品类、地区、销售额)

# (如果有自己的数据,直接用pd.read_excel/pd.read_csv加载)

data = {

    "月份": ["2024-01", "2024-01", "2024-01", "2024-01",

            "2024-02", "2024-02", "2024-02", "2024-02",

            "2024-03", "2024-03", "2024-03", "2024-03"],

    "商品类别": ["家电", "服装", "食品", "美妆"] * 3,

    "地区": ["华北", "华东", "华南", "西部"] * 3,

    "销售额(万元)": [35.6, 12.8, 8.5, 15.2, 42.3, 15.6, 9.8, 18.5, 51.2, 18.9, 11.2, 22.3],

    "销量(件)": [120, 320, 850, 95, 145, 380, 920, 110, 180, 450, 1050, 130]

}

df = pd.DataFrame(data)

# 2. 预处理:生成后续需要的汇总数据(避免重复计算)

# 2.1 月度销售额汇总(折线图用)

monthly_sales = df.groupby("月份")["销售额(万元)"].sum().reset_index()

# 2.2 品类销量汇总(柱状图用)

category_sales = df.groupby("商品类别")["销量(件)"].sum().sort_values(ascending=False).reset_index()

# 2.3 地区-品类销售额透视表(热力图用)

region_category_sales = df.pivot_table(

    index="地区",

    columns="商品类别",

    values="销售额(万元)",

    aggfunc="sum"

)

# 查看数据是否准备好

print("

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小杰杂谈弱电知识

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值