数据科学与分析入门|第八部分:Python生态与实战应用 (Ecosystem & Applications)
发布于 2025-09-11
分类: Python
系列文章: Python全方位教程
第 1 部分: Python语言概览|第一部分:Python入门与环境搭建 (Python Foundations)
第 2 部分: 搭建开发环境|第一部分:Python入门与环境搭建 (Python Foundations)
第 3 部分: Python基本语法与规范|第一部分:Python入门与环境搭建 (Python Foundations)
第 4 部分: 数据类型深入解析|第二部分:Python核心数据类型与运算符 (Core Data Types & Operators)
第 5 部分: 运算符大全|第二部分:Python核心数据类型与运算符 (Core Data Types & Operators)
第 6 部分: 条件与循环|第三部分:流程控制与数据结构操作 (Control Flow & Data Structures Manipulation)
第 7 部分: 数据结构高级操作|第三部分:流程控制与数据结构操作 (Control Flow & Data Structures Manipulation)
第 8 部分: 函数|第四部分:函数、模块与代码组织 (Functions, Modules & Code Organization)
第 9 部分: 模块与包|第四部分:函数、模块与代码组织 (Functions, Modules & Code Organization)
第 10 部分: 类与对象|第五部分:面向对象编程 (Object-Oriented Programming - OOP)
第 11 部分: OOP核心特性|第五部分:面向对象编程 (Object--Oriented Programming - OOP)
第 12 部分: 高级OOP主题|第五部分:面向对象编程 (Object-Oriented Programming - OOP)
第 13 部分: 迭代与生成|第六部分:高级Python编程 (Advanced Python)
第 15 部分: 内存管理与性能|第六部分:高级Python编程 (Advanced Python)
第 16 部分: 文件与目录操作|第七部分:Python标准库精选 (The Standard Library)
第 17 部分: 数据处理与序列化|第七部分:Python标准库精选 (The Standard Library)
第 18 部分: 网络与并发编程|第七部分:Python标准库精选 (The Standard Library)
第 20 部分: 系统交互|第七部分:Python标准库精选 (The Standard Library)
第 21 部分: 数据科学与分析入门|第八部分:Python生态与实战应用 (Ecosystem & Applications) (当前)
第 22 部分: Web开发入门|第八部分:Python生态与实战应用 (Ecosystem & Applications)
第 23 部分: GUI编程入门|第八部分:Python生态与实战应用 (Ecosystem & Applications)
第 24 部分: 图像处理入门|第八部分:Python生态与实战应用 (Ecosystem & Applications)
第 25 部分: 自动化脚本|第八部分:Python生态与实战应用 (Ecosystem & Applications)
第 26 部分: Python备忘单 (Cheatsheet)|第九部分:附录与资源 (Appendix & Resources)
第 27 部分: 常见面试题与解答|第九部分:附录与资源 (Appendix & Resources)
第 28 部分: 官方文档与其他学习资源链接|第九部分:附录与资源 (Appendix & Resources)
欢迎来到Python生态系统的“璀璨星空”!Python之所以能成为全球最受欢迎的编程语言之一,不仅仅因为它自身语法的优雅,更因为它拥有一个无比强大和繁荣的第三方库生态。无论你想做什么——数据分析、网站开发、机器学习、游戏制作——几乎都有现成的、高质量的库供你使用。
本章,我们将开启Python应用领域的探索之旅,首先聚焦于让Python“封神”的领域:数据科学与分析。在这个领域,有三个库是绕不开的“三巨头”,它们共同构成了Python数据科学的基石:
- NumPy (Numerical Python): 它是Python科学计算的“引擎”。提供了一个高性能的多维数组对象
ndarray
,以及对这些数组进行操作的大量数学函数。几乎所有其他数据科学库都构建于NumPy之上。 - Pandas: 它是数据处理与分析的“瑞士军刀”。提供了
DataFrame
这一强大的数据结构,让你能像操作Excel电子表格一样,轻松地对结构化数据进行读取、清洗、转换、分组和分析。 - Matplotlib & Seaborn: 它们是数据可视化的“画笔”。
Matplotlib
提供了强大的底层绘图功能,而Seaborn
则基于Matplotlib
提供了更美观、更高级的统计图形界面。
开始前的准备:
在开始之前,你需要先安装这些库。打开你的命令行/终端(建议在激活的虚拟环境中),运行:
pip install numpy pandas matplotlib seaborn
本章将带你快速领略这三大神器的核心功能,为你打开数据世界的大门。
21.1 NumPy: 高性能数值计算
NumPy的核心是 ndarray
(N-dimensional array),一个高效的多维数组。它与Python的列表 list
有什么不同?
- 性能: NumPy数组在底层由C语言实现,其上的数学运算速度极快,远超原生Python列表。
- 同构性: NumPy数组中的所有元素必须是相同类型的(如全是
int
或全是float
),这使得内存布局更紧凑,计算更高效。 - 广播 (Broadcasting): 允许对不同形状的数组进行算术运算。
import numpy as np
# --- 1. 创建 NumPy 数组 ---
# 从列表创建
my_list = [1, 2, 3, 4, 5]
np_array = np.array(my_list)
print(f"NumPy 数组: {np_array}")
print(f"数组类型: {type(np_array)}")
# 创建一个 2x3 的二维数组 (矩阵)
matrix = np.array([[1, 2, 3], [4, 5, 6]])
print("\n二维数组:\n", matrix)
print(f"数组形状: {matrix.shape}") # (2, 3) -> 2行3列
# --- 2. 强大的数学运算 (向量化操作) ---
# 假设我们想让列表中的每个元素都乘以2
# Python 列表的做法 (需要循环)
doubled_list = [x * 2 for x in my_list]
# NumPy 的做法 (无需循环,速度极快!)
doubled_array = np_array * 2
print(f"\nNumPy 数组乘以2: {doubled_array}")
# 数组间的运算
a = np.array([1, 2, 3])
b = np.array([10, 20, 30])
c = a + b
print(f"数组相加: {c}") # 输出: [11 22 33]
# --- 3. 索引与切片 ---
# 和列表类似,但功能更强大
arr = np.arange(10) # arange 类似于 range,但返回一个 NumPy 数组 -> [0 1 2 3 4 5 6 7 8 9]
print(f"\n原始数组: {arr}")
print(f"切片 [2:5]: {arr[2:5]}") # -> [2 3 4]
# 布尔索引:一个超级强大的特性!
# 找出所有大于5的元素
greater_than_5 = arr[arr > 5]
print(f"大于5的元素: {greater_than_5}") # -> [6 7 8 9]
21.2 Pandas: 数据处理与分析的王者
Pandas的核心是两种数据结构:
Series
: 一个带标签的一维数组,可以看作是“一列”数据。DataFrame
: 一个二维的、带标签的数据结构,就像一个Excel表格或SQL表。它有行索引和列索引。
import pandas as pd
# --- 1. 创建 DataFrame ---
# 从字典创建
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David'],
'Age': [25, 30, 35, 40],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston']
}
df = pd.DataFrame(data)
print("--- DataFrame ---")
print(df)
# --- 2. 读取和写入数据 ---
# Pandas 可以轻松读取各种格式的文件,如 CSV, Excel, JSON, SQL等
# df.to_csv('users.csv', index=False) # 写入CSV文件
# df_from_csv = pd.read_csv('users.csv') # 从CSV文件读取
# --- 3. 数据选择与筛选 ---
# 选择一列 (返回一个 Series)
ages = df['Age']
print("\n--- 年龄列 (Series) ---")
print(ages)
# 选择多列 (返回一个新的 DataFrame)
name_city = df[['Name', 'City']]
print("\n--- 姓名和城市列 ---")
print(name_city)
# 按行选择 (使用 .loc 按标签,.iloc 按位置)
print("\n--- 第一行数据 ---")
print(df.iloc[0])
# 条件筛选:找出年龄大于30的用户
older_users = df[df['Age'] > 30]
print("\n--- 年龄大于30的用户 ---")
print(older_users)
# --- 4. 常用操作 ---
# 查看数据基本信息
print("\n--- 数据信息 ---")
df.info()
# 查看数值列的描述性统计
print("\n--- 描述性统计 ---")
print(df.describe())
# 添加新列
df['Age_in_10_years'] = df['Age'] + 10
print("\n--- 添加新列后的DataFrame ---")
print(df)
21.3 Matplotlib & Seaborn: 数据可视化
数据分析的结果最终往往需要通过图形来直观地展示。
Matplotlib
是基础,功能强大,定制性高。Seaborn
建立在Matplotlib
之上,提供更美观的默认样式和更简洁的高级统计绘图函数。
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
# --- 1. 使用 Matplotlib 绘制简单的折线图 ---
x = np.linspace(0, 10, 100) # 生成0到10之间的100个点
y = np.sin(x)
plt.figure(figsize=(8, 4)) # 创建一个图形 (宽8, 高4英寸)
plt.plot(x, y, label='sin(x)')
plt.title('Simple Sine Wave')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.legend()
plt.grid(True)
# plt.show() # 在脚本中运行时,需要调用 show() 来显示图形
# --- 2. 使用 Seaborn 绘制更复杂的统计图 (基于 Pandas DataFrame) ---
# 使用 Seaborn 自带的 "tips" 数据集
tips_df = sns.load_dataset("tips")
print("\n--- 小费数据集 (前5行) ---")
print(tips_df.head())
# a) 散点图:探索总账单和消费之间的关系
plt.figure(figsize=(8, 6))
sns.scatterplot(data=tips_df, x='total_bill', y='tip', hue='day', size='size')
plt.title('Total Bill vs. Tip Amount')
# plt.show()
# b) 直方图:查看总账单的分布
plt.figure(figsize=(8, 4))
sns.histplot(tips_df['total_bill'], kde=True, bins=20) # kde=True 会添加一条核密度估计曲线
plt.title('Distribution of Total Bill')
# plt.show()
# c) 箱线图:查看不同天的消费分布情况
plt.figure(figsize=(8, 5))
sns.boxplot(data=tips_df, x='day', y='total_bill')
plt.title('Total Bill Distribution by Day')
plt.show() # 在最后统一显示所有图形
运行这段代码,你将看到一系列由 Matplotlib
和 Seaborn
生成的精美图表。
太不可思议了!你刚刚已经体验了Python数据科学生态系统的核心工作流:
- 使用 NumPy 进行高效的底层数值计算。
- 使用 Pandas 进行灵活的结构化数据整理和分析。
- 使用 Matplotlib/Seaborn 将分析结果进行直观的可视化呈现。
这仅仅是冰山一角,但这“三巨头”已经为你打开了通往数据分析、机器学习、深度学习等广阔领域的大门。
在下一章,我们将切换到一个完全不同的领域:Web开发。你将初步认识Python世界中最强大的全功能Web框架——Django,了解如何用Python来构建网站和Web应用。准备好,从数据分析师的角色,切换到Web工程师吧!