Python数据分析三剑客:NumPy、Pandas与Matplotlib安装指南与实战入门
1. 引言
- Python数据分析生态:NumPy、Pandas、Matplotlib是数据科学领域的核心工具链。
- 适用场景:数值计算、数据处理、可视化分析(如金融分析、机器学习、科研绘图)。
- 本文目标:快速掌握三大库的安装方法、核心功能及基础实战应用。
2. 环境安装与配置
安装方法(推荐使用pip
):
# 安装最新版本
pip install numpy pandas matplotlib
# 验证安装
python -c "import numpy, pandas, matplotlib; print('安装成功!')"
注意:若安装缓慢,可使用国内镜像源(如-i https://pypi.tuna.tsinghua.edu.cn/simple
)。
3. NumPy:高性能数值计算
核心功能:多维数组操作、数学函数、线性代数运算。
基础使用:
import numpy as np
# 创建数组
arr = np.array([1, 2, 3, 4]) # 一维数组
matrix = np.array([[1, 2], [3, 4]]) # 二维数组
# 常用操作
print(arr.shape) # 数组形状 → (4,)
print(matrix.sum(axis=0)) # 按列求和 → [4 6]
print(np.arange(0, 10, 2)) # 类似range → [0 2 4 6 8]
# 数学运算
arr_sin = np.sin(arr) # 对每个元素求正弦
result = np.dot(matrix, matrix) # 矩阵乘法 → [[7 10], [15 22]]
应用场景:
- 图像像素处理(多维数组操作)。
- 科学计算(如傅里叶变换、随机数生成)。
4. Pandas:数据处理与分析
核心功能:表格数据(DataFrame)处理、数据清洗、统计分析。
基础使用:
import pandas as pd
# 创建DataFrame
data = {"Name": ["Alice", "Bob"], "Age": [25, 30]}
df = pd.DataFrame(data)
# 数据读取与保存
df = pd.read_csv("data.csv") # 读取CSV文件
df.to_excel("output.xlsx") # 保存为Excel
# 数据处理
print(df.head(2)) # 查看前两行
print(df["Age"].mean()) # 计算平均年龄 → 27.5
df_filtered = df[df["Age"] > 25] # 过滤年龄>25的记录
# 数据清洗
df.dropna() # 删除缺失值
df.fillna(0) # 填充缺失值为0
应用场景:
- 数据清洗(处理缺失值、重复值)。
- 时间序列分析(如股票数据滚动计算)。
5. Matplotlib:数据可视化
核心功能:绘制折线图、柱状图、散点图等,支持高度自定义样式。
基础使用:
import matplotlib.pyplot as plt
# 折线图
x = [1, 2, 3, 4]
y = [10, 20, 15, 30]
plt.plot(x, y, label="Sales", color="blue", marker="o")
plt.xlabel("Month") # X轴标签
plt.ylabel("Revenue") # Y轴标签
plt.title("Monthly Sales Report") # 图表标题
plt.legend() # 显示图例
plt.show()
# 柱状图
categories = ["A", "B", "C"]
values = [23, 45, 56]
plt.bar(categories, values)
plt.show()
# 多子图绘制
fig, axes = plt.subplots(2, 1) # 2行1列的子图
axes[0].plot(x, y)
axes[1].scatter(x, y) # 散点图
plt.tight_layout() # 自动调整布局
plt.show()
应用场景:
- 生成实验数据图表(如论文插图)。
- 实时数据监控仪表盘开发。
6. 实战案例:销售数据分析与可视化
目标:读取销售数据,统计各产品销量,绘制趋势图。
代码实现:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# 1. 读取数据
df = pd.read_csv("sales_data.csv")
# 2. 数据清洗
df.dropna(inplace=True) # 删除缺失值
df["Date"] = pd.to_datetime(df["Date"]) # 转换日期格式
# 3. 按产品统计月销量
monthly_sales = df.groupby([pd.Grouper(key="Date", freq="M"), "Product"])["Quantity"].sum().reset_index()
# 4. 绘制趋势图
products = monthly_sales["Product"].unique()
plt.figure(figsize=(10, 6))
for product in products:
data = monthly_sales[monthly_sales["Product"] == product]
plt.plot(data["Date"], data["Quantity"], label=product, marker="o")
plt.title("Monthly Sales Trends by Product")
plt.xlabel("Date")
plt.ylabel("Sales Quantity")
plt.legend()
plt.grid(True)
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()
输出效果:
- 图表展示不同产品随时间变化的销量趋势,支持决策分析。
7. 总结与扩展学习
- NumPy:数值计算基石,高效处理大规模数据。
- Pandas:数据清洗与分析利器,支持复杂查询。
- Matplotlib:可视化核心,可结合Seaborn美化图表。
- 进阶方向:
- 机器学习(Scikit-learn)。
- 交互式可视化(Plotly、Pyecharts)。
- 大数据处理(PySpark)。
8. 常见问题QA
-
Q: 安装时报错“Permission denied”如何解决?
A: 使用管理员权限运行命令(sudo pip install
)或添加--user
参数。 -
Q: Pandas读取Excel文件时提示缺失驱动?
A: 安装openpyxl
库:pip install openpyxl
。 -
Q: Matplotlib图表在Jupyter中不显示?
A: 添加魔术命令%matplotlib inline
(Jupyter Notebook环境)。