引言

对于想转行数据分析、零基础学 Python 的朋友来说,NumPy+Pandas+Matplotlib 就是数据分析领域的「三剑客」,也是入行必过的第一关!很多新手踩坑:要么乱学顺序,要么死记硬背函数,要么一上来就啃高阶语法,直接劝退。这篇文章严格按照数值计算→数据处理→可视化→综合实战的科学顺序,4 周搞定三剑客(每天投入 1-2 小时即可),全程无晦涩理论、全是可直接运行的代码 + 逐行详解,学完就能独立完成入门级数据分析项目!

全文框架:前置准备→NumPy(数值基石)→Pandas(核心处理,重点)→Matplotlib(可视化)→综合实战→学习总结,新手跟着走,一步不迷路!

目录

引言

模块 1:前置准备:零基础必看!

1.1 数据分析刚需 Python 基础(只学这些就够)

1.2 三剑客 + Jupyter 一键安装

1.3 Jupyter Notebook 启动与使用(最佳实战工具)

1.4 前置小练习(巩固基础)

模块 2:阶段 1 - NumPy:数值计算底层基石

2.1 NumPy 核心定位

2.2 必学核心知识点 + 实战代码

1. 导入库 + 数组创建(入门第一步)

2. 数组属性查看(快速了解数据)

3. 索引切片 + 条件筛选

4. 向量化运算(NumPy 核心优势)

5. 常用统计函数

6. 随机数生成(模拟数据必备)

2.3 NumPy 小实战

2.4 NumPy 新手避坑指南

模块 3:阶段 2 - Pandas:数据分析核心引擎(全文重点!)

3.1 Pandas 核心定位

3.2 核心数据结构(必学)

1. Series(一维数据:带索引的列表)

2. DataFrame(二维数据:Excel 表格,核心中的核心)

3.3 Pandas 必学实战技能(逐行详解)

1. 数据读写(读取 / 导出 Excel/CSV)

2. 数据探查(快速看懂数据)

3. 数据清洗(高频核心!)

4. 数据筛选与排序

5. 分组聚合(数据分析灵魂!)

6. 数据合并(简单拼接)

3.4 Pandas 专项实战(完整流程)

3.5 Pandas 新手避坑指南

模块 4:阶段 3 - Matplotlib(3-5 天):数据可视化

4.1 Matplotlib 核心作用

4.2 固定绘图模板(新手直接套用)

4.3 5 种入门必绘图表

1. 折线图(展示趋势)

2. 柱状图(分类对比)

3. 直方图(数据分布)

4. 散点图(变量关系)

5. 饼图(占比分析)

4.4 图表美化(基础操作)

4.5 Matplotlib 新手避坑指南

模块 5:阶段 4 - 综合实战项目:电商销售数据分析

模块 6:必备学习资源 + 避坑总结

6.1 免费优质学习资源

6.2 全文核心学习总结

6.3 新手通用避坑指南

结语 + 进阶方向


模块 1:前置准备:零基础必看!

1.1 数据分析刚需 Python 基础(只学这些就够)

不用啃完整本 Python!仅需掌握 4 个基础知识点,直接开冲三剑客:

  1. 变量定义(a=10
  2. 列表 / 字典基础([1,2,3]/{"name":"小明"}
  3. 条件判断(if/else
  4. 基础循环(for循环)

1.2 三剑客 + Jupyter 一键安装

打开电脑的命令提示符(CMD),直接复制运行这行代码,一键安装所有工具:

# 安装numpy、pandas、matplotlib、jupyter notebook
pip install numpy pandas matplotlib jupyter -i https://pypi.tuna.tsinghua.edu.cn/simple

解释:-i 是清华镜像源,解决安装慢、失败的问题,新手必加!

1.3 Jupyter Notebook 启动与使用(最佳实战工具)

  1. CMD 中输入命令:jupyter notebook
  2. 自动弹出浏览器页面,点击New→Python3新建代码文件
  3. 代码写在单元格里,按Shift+Enter运行,全程用这个工具跑代码

1.4 前置小练习(巩固基础)

# 基础练习:定义列表+循环+判断
score = [80, 90, 60, 75]
for i in score:
    if i >= 80:
        print(f"分数{i}:优秀")

运行结果:

分数80:优秀
分数90:优秀

模块 2:阶段 1 - NumPy:数值计算底层基石

2.1 NumPy 核心定位

通俗说:Python 自带的列表太慢,NumPy 用「数组」替代列表,专门做数值计算,是 Pandas 的底层基础,处理大数据速度提升 100 倍!

2.2 必学核心知识点 + 实战代码

1. 导入库 + 数组创建(入门第一步)
# 1. 导入numpy库,固定简写为np(行业通用规范)
import numpy as np

# 2. 从列表创建数组
arr1 = np.array([1,2,3,4])
# 3. 生成连续数值数组(左闭右开,1到9)
arr2 = np.arange(1,10)
# 4. 生成全0/全1数组(3行2列)
arr3 = np.zeros((3,2))
arr4 = np.ones((2,3))

print(arr1)
print(arr2)
print(arr3)

逐行解释

  • import numpy as np:导入库,np 是固定简写,必须记
  • np.array():将 Python 列表转为 NumPy 数组
  • np.arange():生成连续数字,和range()用法一致
  • np.zeros()/ones():生成指定形状的全 0 / 全 1 数组,括号内是 (行,列)
2. 数组属性查看(快速了解数据)
arr = np.array([[1,2,3],[4,5,6]])
# 查看数组形状(行,列)
print("形状:", arr.shape)
# 查看数组维度
print("维度:", arr.ndim)
# 查看数据类型
print("类型:", arr.dtype)

核心属性shape(最常用,看数据行列)、ndim(维度)、dtype(数据类型)

3. 索引切片 + 条件筛选
arr = np.arange(1,10)
# 索引:取第2个元素(索引从0开始)
print(arr[1])
# 切片:取第2到第5个元素
print(arr[1:5])
# 条件筛选:取大于5的数字
print(arr[arr>5])

新手易错:索引从 0 开始,切片左闭右开!

4. 向量化运算(NumPy 核心优势)
arr = np.array([1,2,3])
# 数组整体运算,不用写循环!
print(arr + 10)   # 每个元素+10
print(arr * 2)    # 每个元素×2

优势:对比 Python 循环,代码更简洁、计算更快!

5. 常用统计函数
arr = np.array([1,2,3,4,5])
print("求和:", np.sum(arr))
print("均值:", np.mean(arr))
print("最大值:", np.max(arr))
print("标准差:", np.std(arr))

高频函数sum(求和)、mean(均值)、max(最值)、std(标准差)

6. 随机数生成(模拟数据必备)
# 生成0-1之间的随机数组(3行3列)
arr = np.random.rand(3,3)
print(arr)

2.3 NumPy 小实战

# 实战:生成10个学生随机成绩,计算平均分
import numpy as np
score = np.random.randint(0,100,10)  # 生成0-100的10个随机整数
print("学生成绩:", score)
print("平均分:", np.mean(score))

2.4 NumPy 新手避坑指南

⚠️ 避坑 1:数组和列表不能直接混合运算,必须用np.array()转数组⚠️ 避坑 2:索引从 0 开始,切片不包含右边界⚠️ 避坑 3:二维数组索引写法是arr[行,列],不是列表的arr[行][列]


模块 3:阶段 2 - Pandas:数据分析核心引擎(全文重点!)

3.1 Pandas 核心定位

Excel 的代码版!数据分析绝对主角,专门处理表格数据(CSV/Excel),数据清洗、分组统计、筛选查询全靠它,占实战工作 80% 的工作量!

3.2 核心数据结构(必学)

1. Series(一维数据:带索引的列表)
import pandas as pd
# 创建Series:索引+数值
s = pd.Series([80,90,70], index=["小明","小红","小刚"])
print(s)

解释:一维表格,左边是索引,右边是数值。

2. DataFrame(二维数据:Excel 表格,核心中的核心)
# 创建DataFrame(标准表格)
data = {
    "姓名": ["小明","小红","小刚"],
    "语文": [80,90,70],
    "数学": [95,85,90]
}
df = pd.DataFrame(data)
print(df)

解释:行 = 样本,列 = 字段,和 Excel 表格完全一致,Pandas 所有操作都围绕 DataFrame

3.3 Pandas 必学实战技能(逐行详解)

1. 数据读写(读取 / 导出 Excel/CSV)
import pandas as pd
# 读取CSV文件(Excel用pd.read_excel())
# df = pd.read_csv("数据.csv")
# 导出文件
# df.to_csv("导出数据.csv", index=False)  # index=False:不导出索引列

# 演示用:创建模拟数据
df = pd.DataFrame({
    "商品": ["手机","电脑","平板"],
    "销量": [100,80,120],
    "价格": [3000,5000,2000]
})

核心函数pd.read_csv()(读文件)、df.to_csv()(写文件)

2. 数据探查(快速看懂数据)
​# 查看前5行数据(最常用)
print(df.head())
# 查看数据基本信息(列名、数据类型、缺失值)
print(df.info())
# 查看数值列统计信息(均值、最值、数量)
print(df.describe())
# 查看数据行列数
print("行列数:", df.shape)

​

实战作用:拿到数据第一步,先探查数据结构、缺失值、异常值!

3. 数据清洗(高频核心!)
# 模拟带缺失值、重复值的数据
df = pd.DataFrame({
    "姓名": ["小明","小红","小明","小刚"],
    "成绩": [80,None,80,90]
})

# 1. 处理缺失值:删除/填充
df = df.dropna()  # 删除缺失值
# df = df.fillna(0)  # 缺失值填充为0

# 2. 删除重复值
df = df.drop_duplicates()

# 3. 数据类型转换
df["成绩"] = df["成绩"].astype(int)

print(df)

核心操作dropna()(删缺失值)、fillna()(填缺失值)、drop_duplicates()(删重复值)

4. 数据筛选与排序
# 条件筛选:销量大于100的商品
df = pd.DataFrame({"商品":["手机","电脑","平板"],"销量":[100,80,120]})
res = df[df["销量"] > 100]

# 排序:按销量降序排序(ascending=False=降序)
res = df.sort_values(by="销量", ascending=False)
print(res)

5. 分组聚合(数据分析灵魂!)
# 模拟数据:按班级分组统计平均分
df = pd.DataFrame({
    "班级": ["一班","一班","二班","二班"],
    "成绩": [80,90,70,85]
})
# 分组+求均值
res = df.groupby("班级")["成绩"].mean()
print(res)

核心公式df.groupby(分组列)[统计列].聚合函数()聚合函数mean(均值)、sum(求和)、count(计数)、max(最值)

6. 数据合并(简单拼接)
# 两个表格上下拼接
df1 = pd.DataFrame({"姓名":["小明","小红"]})
df2 = pd.DataFrame({"姓名":["小刚","小丽"]})
df = pd.concat([df1,df2], ignore_index=True)
print(df)

3.4 Pandas 专项实战(完整流程)

# 实战:学生成绩分析(读取→清洗→统计)
import pandas as pd

# 1. 创建数据
df = pd.DataFrame({
    "姓名": ["小明","小红","小刚","小明"],
    "语文": [80,90,None,80],
    "数学": [95,85,90,95]
})

# 2. 数据清洗
df = df.drop_duplicates()  # 去重
df = df.fillna(df["语文"].mean())  # 缺失值填充为语文平均分

# 3. 统计分析:计算总分
df["总分"] = df["语文"] + df["数学"]

# 4. 结果输出
print("清洗后数据:")
print(df)
print("\n总分排名:")
print(df.sort_values("总分", ascending=False))

3.5 Pandas 新手避坑指南

⚠️ 避坑 1:列名必须加引号,df["成绩"] 不能写成 df[成绩]⚠️ 避坑 2:groupby后必须指定统计列,否则会报错⚠️ 避坑 3:导出文件必须加index=False,否则会多一列无用索引⚠️ 避坑 4:缺失值会导致统计报错,优先清洗缺失值再分析


模块 4:阶段 3 - Matplotlib(3-5 天):数据可视化

4.1 Matplotlib 核心作用

把枯燥的数字变成直观图表,让分析结果一目了然,入门只学 5 种基础图表就够用

4.2 固定绘图模板(新手直接套用)

# 导入库,固定简写
import matplotlib.pyplot as plt
# 解决中文乱码(必加!)
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False

4.3 5 种入门必绘图表

1. 折线图(展示趋势)
x = [1,2,3,4]
y = [10,20,15,25]
plt.plot(x,y, color="red", linewidth=2)
plt.title("月度销量趋势")
plt.xlabel("月份")
plt.ylabel("销量")
plt.show()

2. 柱状图(分类对比)
x = ["一班","二班","三班"]
y = [85,90,88]
plt.bar(x,y, color="blue")
plt.title("班级平均分对比")
plt.show()

3. 直方图(数据分布)
data = [80,85,90,95,80,85,90]
plt.hist(data, bins=5)
plt.title("成绩分布")
plt.show()

4. 散点图(变量关系)
x = [1,2,3,4,5]
y = [10,20,30,40,50]
plt.scatter(x,y)
plt.title("学习时长与成绩关系")
plt.show()

5. 饼图(占比分析)
labels = ["手机","电脑","平板"]
sizes = [40,30,30]
plt.pie(sizes, labels=labels, autopct="%1.1f%%")
plt.title("商品销量占比")
plt.show()

4.4 图表美化(基础操作)

  • plt.title():加标题
  • plt.xlabel/ylabel():加坐标轴名称
  • plt.legend():加图例
  • plt.color:修改颜色

4.5 Matplotlib 新手避坑指南

⚠️ 避坑 1:不写中文配置代码,图表中文会乱码⚠️ 避坑 2:绘图最后必须加plt.show(),否则不显示图表⚠️ 避坑 3:数据维度必须对应,否则报错


模块 5:阶段 4 - 综合实战项目:电商销售数据分析

三剑客联动!完整流程:生成数据→清洗分析→可视化,新手跟着敲就能跑通!

# ===================== 1. 导入三剑客 =====================
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# 解决中文乱码
plt.rcParams["font.sans-serif"] = ["SimHei"]

# ===================== 2. NumPy生成模拟数据 =====================
# 生成30条销售数据:商品、销量、销售额
goods = ["手机","电脑","平板","耳机"]
sale_num = np.random.randint(50,200,30)  # 销量50-200
sale_amount = sale_num * np.random.choice([3000,5000,2000,100],30)  # 销售额

# ===================== 3. Pandas数据处理 =====================
# 创建DataFrame
df = pd.DataFrame({
    "商品": np.random.choice(goods,30),
    "销量": sale_num,
    "销售额": sale_amount
})

# 数据清洗:去重+缺失值处理
df = df.drop_duplicates()

# 统计:按商品分组统计总销量、总销售额
result = df.groupby("商品").agg({
    "销量": "sum",
    "销售额": "sum"
}).reset_index()

print("销售统计结果:")
print(result)

# ===================== 4. Matplotlib可视化 =====================
# 柱状图:商品销量对比
plt.figure(figsize=(8,5))
plt.bar(result["商品"], result["销量"], color=["red","blue","green","orange"])
plt.title("电商商品销量对比")
plt.xlabel("商品类型")
plt.ylabel("总销量")
plt.show()

# 饼图:销售额占比
plt.figure(figsize=(6,6))
plt.pie(result["销售额"], labels=result["商品"], autopct="%1.1f%%")
plt.title("商品销售额占比")
plt.show()

实战结论

  1. 平板 / 手机销量最高,是主力商品
  2. 电脑销售额占比最大,利润贡献最高
  3. 耳机销量偏低,可优化营销方案

模块 6:必备学习资源 + 避坑总结

6.1 免费优质学习资源

  1. 官方文档:NumPy/Pandas/Matplotlib 官网(中文翻译版)
  2. 练习数据集:Kaggle 入门数据集、阿里云天池
  3. 工具:Jupyter Notebook(全程实战)

6.2 全文核心学习总结

  1. 学习顺序:NumPy→Pandas→Matplotlib,不可逆
  2. 权重分配:Pandas 占 60% 精力,重点练数据清洗、分组聚合
  3. 学习节奏:4 周,每天 1-2 小时,边敲代码边学

6.3 新手通用避坑指南

⚠️ 不要死记函数:用到再查,多练自然记住⚠️ 不要跳过数据清洗:80% 的报错都来自脏数据⚠️ 不要只看不动手:代码必须亲手敲一遍,才能学会⚠️ 不要贪多:入门只学刚需内容,高阶语法后期再学


结语 + 进阶方向

恭喜你!学完这篇文章,你已经掌握了数据分析三剑客的入门核心技能,能独立完成数据读取、清洗、统计、可视化全流程!

入门标准:能独立完成本文的电商 / 成绩分析项目进阶路线

  1. 可视化进阶:Seaborn(更美观的图表)
  2. 进阶分析:Scikit-learn(机器学习入门)
  3. 实战提升:Kaggle 入门竞赛、企业真实数据集

数据分析没有捷径,多动手、多实战就是最快的路!加油,新手们!

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐