Python 数据分析:Pandas+NumPy 超详细教程
本章学习目标从零掌握 NumPy 数值计算与 Pandas 数据处理核心能力可独立完成数据读取、清洗、转换、分析、可视化全流程代码可直接复制运行。一、引言为什么 PandasNumPy 是数据分析标配在 Python 数据分析领域NumPy 负责底层数值计算Pandas 负责高层数据结构与业务分析二者组合是数据从业者的必备工具。1.1 背景与意义NumPy提供多维数组、向量化运算、线性代数、随机数等基础能力速度比原生 Python 快 10~100 倍。Pandas基于 NumPy 构建提供 Series、DataFrame 数据结构支持 Excel/CSV/ 数据库读写、缺失值处理、分组聚合、时间序列等实战功能。市场现状金融、电商、运营、科研、机器学习等场景 90% 以上数据任务依赖 PandasNumPy。1.2 本章结构概览plaintext环境搭建 → NumPy核心 → Pandas核心 → 数据清洗 → 数据分析 → 可视化 → 实战案例 → 常见问题 → 总结二、环境搭建与基础配置2.1 安装命令手机 / 电脑通用bash运行# 安装基础库 pip install numpy pandas matplotlib openpyxl2.2 导入约定行业标准写法python运行import numpy as np import pandas as pd import matplotlib.pyplot as plt # 手机端适配不弹出窗口 plt.switch_backend(AGG)三、NumPy 核心教程数值计算地基3.1 核心概念ndarrayNumPy 多维数组同质、连续、向量化运算。维度0 维 (标量)、1 维 (向量)、2 维 (矩阵)、3 维 (张量)。优势避免循环、内存高效、支持广播、内置数学函数。3.2 创建数组python运行# 1. 从列表创建 arr1 np.array([1,2,3,4]) arr2 np.array([[1,2],[3,4]]) # 2. 快速创建 np.zeros((3,3)) # 全0 np.ones((2,4)) # 全1 np.arange(0,10,2) # 等差 np.linspace(0,1,5) # 等分 np.random.randn(5) # 标准正态3.3 数组属性手机必记python运行arr np.array([[1,2,3],[4,5,6]]) print(arr.shape) # 形状 (2,3) print(arr.ndim) # 维度 2 print(arr.dtype) # 类型 int64 print(arr.size) # 元素数 63.4 索引与切片python运行# 一维 a np.array([10,20,30,40]) print(a[1]) # 20 print(a[1:3]) # [20 30] # 二维 [行,列] b np.array([[1,2,3],[4,5,6],[7,8,9]]) print(b[0,1]) # 2 print(b[:,1]) # 第2列 [2 5 8] print(b[1:,:2]) # 切片3.5 向量化运算核心优势python运行a np.array([1,2,3]) b np.array([4,5,6]) print(a b) # [5 7 9] print(a * 2) # [2 4 6] print(np.sum(a))# 6 print(np.mean(a))# 23.6 广播机制不同形状数组可自动对齐计算无需手动扩展python运行a np.array([[1,2,3],[4,5,6]]) b np.array([10,20,30]) print(a b)3.7 常用数学函数python运行x np.array([1,2,3,4]) np.sqrt(x) # 平方根 np.exp(x) # 指数 np.log(x) # 对数 np.max(x) # 最大值 np.argmax(x) # 最大值索引四、Pandas 核心教程数据分析主力4.1 两大核心对象Series带索引的一维数组DataFrame带行列索引的二维表格Excel 表4.2 Series 创建与操作python运行# 创建 s pd.Series([10,20,30,40], index[a,b,c,d]) # 访问 print(s[b]) print(s[1]) print(s.mean())4.3 DataFrame 创建最常用python运行# 字典创建 data { 姓名:[张三,李四,王五], 年龄:[22,25,30], 薪资:[5000,7000,10000] } df pd.DataFrame(data) print(df)4.4 文件读写实战必备python运行# 读取CSV df pd.read_csv(data.csv) # 读取Excel df pd.read_excel(data.xlsx) # 保存 df.to_csv(out.csv, indexFalse) df.to_excel(out.xlsx, indexFalse)4.5 数据快速查看python运行df.head() # 前5行 df.info() # 结构信息 df.describe() # 统计描述 df.shape # 行列数 df.columns # 列名 df.dtypes # 类型4.6 数据选择手机必背python运行# 选列 df[姓名] df[[姓名,薪资]] # 选行标签/位置 df.loc[0] df.iloc[0] # 条件筛选 df[df[年龄]25] df[(df[薪资]6000) (df[年龄]30)]五、数据清洗数据分析 80% 工作量5.1 缺失值处理python运行# 查看缺失 df.isnull().sum() # 删除缺失行 df df.dropna() # 填充缺失 df df.fillna(0) df[薪资] df[薪资].fillna(df[薪资].mean())5.2 重复值处理python运行df.duplicated().sum() # 重复数 df df.drop_duplicates()5.3 数据类型转换python运行df[年龄] df[年龄].astype(int) df[日期] pd.to_datetime(df[日期])5.4 字段重命名与删除python运行df df.rename(columns{旧名:新名}) df df.drop(columns[无用列1,无用列2])5.5 字符串处理python运行df[姓名] df[姓名].str.strip() df[姓名] df[姓名].str.replace( ,) df[姓名] df[姓名].str.contains(张)六、数据分析核心操作6.1 分组聚合groupbypython运行# 按部门统计薪资 df.groupby(部门)[薪资].agg([mean,max,count]) # 多指标聚合 df.groupby(部门).agg({ 薪资:mean, 年龄:max })6.2 排序python运行df.sort_values(by薪资, ascendingFalse) df.sort_index()6.3 数据透视表pivot_tablepython运行pd.pivot_table(df, values薪资, index部门, columns学历, aggfuncmean)6.4 数据合并python运行# 横向合并 pd.concat([df1,df2], axis1) # 纵向合并 pd.concat([df1,df2], axis0) # 关联类似SQL join pd.merge(df1,df2, onid, howleft)6.5 时间序列处理python运行df[月份] df[日期].dt.month df[季度] df[日期].dt.quarter df.resample(M, on日期)[薪资].sum()七、数据可视化Matplotlib 极简版7.1 折线图python运行plt.figure(figsize(8,4)) df[薪资].plot(kindline, title薪资趋势) plt.savefig(line.png, bbox_inchestight) plt.close()7.2 柱状图python运行df.groupby(部门)[薪资].mean().plot(kindbar) plt.savefig(bar.png) plt.close()7.3 直方图python运行df[年龄].plot(kindhist, bins10) plt.savefig(hist.png) plt.close()八、完整实战案例电商销售数据分析8.1 需求读取销售数据 → 清洗 → 统计月度销售额 → 分析商品销量 → 输出结果与图表8.2 完整代码python运行import numpy as np import pandas as pd import matplotlib.pyplot as plt plt.switch_backend(AGG) # 1. 读取数据 df pd.read_csv(sales.csv) # 2. 数据清洗 df[date] pd.to_datetime(df[date]) df df.dropna(subset[amount,goods]) df df.drop_duplicates() # 3. 月度销售额 df[month] df[date].dt.to_period(M) month_sale df.groupby(month)[amount].sum() # 4. 商品销量TOP10 goods_top df.groupby(goods)[amount].sum().sort_values(ascendingFalse).head(10) # 5. 输出结果 print(月度销售额) print(month_sale) print(商品TOP10) print(goods_top) # 6. 绘图 month_sale.plot(kindline, title月度销售额, figsize(10,4)) plt.savefig(month_sale.png, bbox_inchestight) plt.close() goods_top.plot(kindbar, title商品销量TOP10, figsize(10,5)) plt.savefig(goods_top.png, bbox_inchestight) plt.close()九、常见问题与解决方案9.1 报错模块不存在解决重新安装pip install --upgrade numpy pandas9.2 读取 Excel 失败解决安装引擎pip install openpyxl xlrd9.3 中文乱码python运行plt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] False9.4 数据类型错误解决用pd.to_numeric/pd.to_datetime强制转换9.5 手机端无法显示图片解决用plt.savefig()保存到本地查看十、性能优化技巧尽量用向量化少用 for 循环数据量大时用 astype 缩小内存读取大文件用 chunks 分块分类数据用 astype (category)避免频繁复制用 inplaceTrue十一、学习路线与职业建议11.1 入门1-2 周NumPy 数组、运算、索引Pandas 读写、查看、筛选11.2 进阶1 个月清洗、分组、透视、合并时间序列、可视化11.3 实战2-3 个月电商 / 运营 / 金融真实数据集自动化报表、数据分析报告11.4 就业方向数据分析师运营分析师业务分析师数分工程师十二、本章小结12.1 核心要点NumPy多维数组、向量化、广播、数学计算PandasSeries/DataFrame、读写、清洗、分组、透视流程读取→清洗→分析→可视化→输出原则向量化优先、少循环、重复用12.2 手机学习建议每天 15 分钟分章节阅读代码逐行复制运行先模仿再改写用真实小数据练习十三、课后练习用 NumPy 生成 1000 个随机数计算均值、方差、最值构造一个学生成绩 DataFrame计算平均分、筛选不及格者读取一份 CSV完成缺失值 / 重复值处理并分组统计绘制柱状图 折线图并保存十四、参考资料NumPy 官方文档https://numpy.org/doc/Pandas 官方文档https://pandas.pydata.org/docs/Python for Data Analysis Wes McKinney 掘金、知乎、B 站免费实战教程