Python 数据分析完整教程
本教程将分为以下几个部分:

- 为什么选择 Python 进行数据分析?
- 学习前的准备
- 核心三剑客详解
- 数据清洗与预处理
- 数据探索与可视化
- 实战项目
- 进阶学习路径
- 学习资源推荐
为什么选择 Python 进行数据分析?
Python 已经成为数据科学领域最流行的语言,主要原因如下:
- 语法简洁易读:Python 的语法接近自然语言,学习曲线平缓,让数据分析师可以更专注于业务逻辑而非复杂的编程。
- 强大的生态系统:拥有一个专门为数据科学打造的“三剑客”库生态系统,以及无数其他强大的第三方库。
- 开源与免费:所有工具都是免费的,并且拥有活跃的社区,遇到问题很容易找到解决方案。
- 多功能性:Python 不仅能做数据分析,还能用于机器学习、深度学习、网站开发、自动化脚本等,是名副其实的“瑞士军刀”。
学习前的准备
在开始之前,你需要确保你的电脑上已经安装了必要的软件。
1 安装 Python
- 官网下载:访问 Python 官网,下载并安装最新稳定版的 Python。
- 重要提示:在安装时,请务必勾选 "Add Python to PATH" 选项,这样你就可以在命令行中直接使用
python命令。
2 安装核心库
我们将使用 Python 的包管理工具 pip 来安装数据分析的核心库,打开你的终端或命令行工具,输入以下命令:
# 核心数据处理库 pip install numpy pip install pandas # 核心数据可视化库 pip install matplotlib pip install seaborn # 高性能计算库 (可选,但强烈推荐) pip install scikit-learn
3 选择一个代码编辑器/IDE
一个好的工具能让你的学习事半功倍。

- Jupyter Notebook / JupyterLab:强烈推荐初学者使用! 它以“笔记本”的形式组织代码、文本和图表,非常适合数据分析的探索性工作,你可以逐块运行代码并立即看到结果。
- 安装命令:
pip install jupyterlab - 启动命令:
jupyter lab
- 安装命令:
- VS Code (Visual Studio Code):功能强大的免费代码编辑器,通过安装 Python 插件,可以获得类似 IDE 的体验,支持调试、代码补全等。
- PyCharm:专业的 Python IDE,社区版是免费的,功能非常全面。
核心三剑客详解
数据分析的基石是三个库:NumPy, Pandas, 和 Matplotlib/Seaborn。
1 NumPy (Numerical Python)
NumPy 是 Python 科学计算的基础包,它提供了一个强大的 N 维数组对象,以及用于操作这些数组的函数。
- 核心概念:
ndarray(N-dimensional array),即多维数组。 - 为什么重要:Pandas 就是在 NumPy 的数组之上构建的,NumPy 的底层是 C 语言实现的,运算速度非常快。
基本操作示例:
import numpy as np # 创建一个一维数组 arr1 = np.array([1, 2, 3, 4, 5]) print(arr1) print(arr1[0]) # 访问第一个元素 # 创建一个二维数组 (矩阵) arr2 = np.array([[1, 2, 3], [4, 5, 6]]) print(arr2) print(arr2.shape) # 查看数组形状 (2行, 3列) # 数组运算 (元素级) print(arr1 * 2) # [2 4 6 8 10] print(arr1 + 10) # [11 12 13 14 15] print(np.sqrt(arr1)) # [1. 1.41421356 1.73205081 2. 2.23606798]
2 Pandas (Python Data Analysis Library)
Pandas 是数据分析的 核心工具,它提供了两种主要的数据结构:Series (一维) 和 DataFrame (二维)。
Series:一个带标签的一维数组,类似于 Excel 中的一列。DataFrame:一个二维的表格型数据结构,是数据分析中最常用的对象,非常类似于 Excel 或 SQL 中的表。
基本操作示例:
import pandas as pd
import numpy as np
# 创建一个 Series
s = pd.Series([10, 20, 30, 40, 50], index=['a', 'b', 'c', 'd', 'e'])
print(s)
print(s['a']) # 通过标签访问
# 创建一个 DataFrame
data = {
'姓名': ['张三', '李四', '王五', '赵六'],
'年龄': [25, 30, 28, 35],
'城市': ['北京', '上海', '广州', '深圳']
}
df = pd.DataFrame(data)
# 查看数据
print(df.head()) # 查看前5行
print(df.info()) # 查看数据概览
print(df.describe()) # 查看数值列的统计信息
# 数据选择
print(df['姓名']) # 选择一列
print(df[['姓名', '城市']]) # 选择多列
print(df.loc[0]) # 按行标签选择第一行
print(df.iloc[0]) # 按行位置选择第一行
# 数据筛选
print(df[df['年龄'] > 30]) # 筛选年龄大于30的人
# 数据排序
print(df.sort_values(by='年龄', ascending=False))
# 数据分组与聚合
# 按城市分组,计算平均年龄
city_avg_age = df.groupby('城市')['年龄'].mean()
print(city_avg_age)
3 Matplotlib & Seaborn
数据可视化是理解数据、发现模式的关键。
- Matplotlib:Python 最基础、最底层的绘图库,功能强大但语法相对繁琐。
- Seaborn:基于 Matplotlib 构建,提供了更高级的接口和更美观的默认样式,专门用于统计可视化。
基本操作示例:
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
# 使用上面创建的 df 数据
df = pd.DataFrame({
'姓名': ['张三', '李四', '王五', '赵六'],
'年龄': [25, 30, 28, 35],
'城市': ['北京', '上海', '广州', '深圳']
})
# --- Matplotlib 示例 ---
plt.figure(figsize=(8, 5)) # 创建一个画布
plt.bar(df['姓名'], df['年龄']) # 绘制柱状图'员工年龄分布')
plt.xlabel('姓名')
plt.ylabel('年龄')
plt.show()
# --- Seaborn 示例 ---
# Seaborn 可以直接使用 DataFrame,非常方便
plt.figure(figsize=(8, 5))
sns.barplot(x='姓名', y='年龄', data=df) # 绘制更美观的柱状图'员工年龄分布 (Seaborn)')
plt.show()
# 更复杂的可视化:散点图
# 假设我们有一个更大的数据集
tips = sns.load_dataset("tips") # Seaborn 自带的数据集
sns.scatterplot(x="total_bill", y="tip", hue="day", data=tips) # hue按day着色'总账单与小费的关系')
plt.show()
数据清洗与预处理
真实世界的数据往往是“脏”的,这一步是数据分析中耗时最长但至关重要的一步。
常见任务:
-
处理缺失值:
# 检查缺失值 print(df.isnull().sum()) # 删除含有缺失值的行 df_cleaned = df.dropna() # 用均值填充缺失值 df['年龄'].fillna(df['年龄'].mean(), inplace=True)
-
处理重复值:
# 删除重复行 df.drop_duplicates(inplace=True)
-
数据类型转换:
# 将字符串类型的日期转换为日期对象 df['日期'] = pd.to_datetime(df['日期'])
-
数据标准化/归一化:将不同尺度的数据缩放到同一范围,常用于机器学习。
数据探索与可视化
在清洗完数据后,我们需要深入探索数据,理解其内在规律。
- 描述性统计:使用
df.describe()查看均值、中位数、标准差等。 - 数据分布:使用直方图 (
sns.histplot)、箱线图 (sns.boxplot) 查看数据分布。 - 关系分析:使用散点图 (
sns.scatterplot)、相关性热力图 (sns.heatmap) 查看变量之间的关系。
示例:探索泰坦尼克号数据集
# 加载泰坦尼克号数据集
titanic = sns.load_dataset('titanic')
# 1. 生存率
print(titanic['survived'].value_counts(normalize=True))
# 2. 不同舱位的乘客生存率
sns.barplot(x='class', y='survived', data=titanic)'不同舱位的生存率')
plt.show()
# 3. 年龄与生存的关系
sns.histplot(x='age', hue='survived', data=titanic, element='step', kde=True)'年龄与生存的关系')
plt.show()
# 4. 性别与生存的关系
sns.countplot(x='sex', hue='survived', data=titanic)'性别与生存的关系')
plt.show()
实战项目
理论学习后,最好的方式就是动手实践。
分析电商销售数据
- 数据:假设你有一个 CSV 文件,包含
订单ID,产品名称,类别,销售日期,销售额,数量等字段。 - 目标:
- 计算总销售额、平均订单额。
- 找出销量最高的前10个产品。
- 分析不同产品类别的销售表现。
- 分析销售额随时间的变化趋势(时间序列分析)。
- 步骤:
- 使用
pd.read_csv()读取数据。 - 使用
df.info(),df.isnull()进行数据概览和缺失值检查。 - 进行数据清洗和转换(如将日期列转为
datetime类型)。 - 使用
groupby(),sum(),sort_values()等函数进行聚合分析。 - 使用
matplotlib和seaborn将分析结果可视化。
- 使用
分析公开数据集
- 数据来源:
- Kaggle:https://www.kaggle.com/datasets (有大量高质量的数据集和别人的分析代码可以参考)
- 政府开放数据平台
- UCI 机器学习仓库
- 目标:选择一个你感兴趣的数据集(如电影评分、空气质量、房价等),提出几个你想回答的问题,然后用学到的工具去分析并回答它们。
进阶学习路径
当你掌握了基础后,可以朝以下方向发展:
- 机器学习:学习
scikit-learn库,进行预测、分类、聚类等任务。 - 深度学习:学习
TensorFlow或PyTorch,处理图像、文本、语音等复杂数据。 - 大数据处理:学习
PySpark,处理无法单机内存容纳的超大规模数据集。 - 自动化报告:学习
Jupyter的nbconvert功能或Sphinx,将分析过程自动化并生成报告。
学习资源推荐
- 免费在线课程:
- Coursera - "Python for Everybody" (密歇根大学):非常适合零基础入门。
- Coursera - "Applied Data Science with Python" (密歇根大学):专门针对数据分析,分三个模块,非常系统。
- DataCamp / freeCodeCamp:提供大量交互式的数据科学课程。
- 书籍:
- 《利用Python进行数据分析》:Pandas 官方作者写的“圣经”,必读。
- 《Python数据科学手册》全面,讲解清晰,配有大量示例代码。
- 网站/社区:
- Stack Overflow:遇到编程问题的首选。
- Towards Data Science (Medium):有大量高质量的数据分析文章和教程。
- Kaggle:不仅下载数据集,还可以学习别人的 Notebook,是提升技能的绝佳平台。
也是最重要的建议:
多动手,多思考,多总结。 数据分析是一个实践性极强的技能,不要只看不练,从一个小的数据集开始,尝试回答你自己的问题,享受从数据中发现知识的乐趣!祝你学习顺利!
