Python数据分析与可视化入门:NumPy、Pandas与Matplotlib详解与练习
NumPy是Python中进行科学计算的核心库,提供了高性能多维数组对象ndarray,以及丰富的数学函数。Pandas是基于NumPy构建的强大数据分析库,核心数据结构是Series和DataFrame。
·
Python数据分析与可视化入门:NumPy、Pandas与Matplotlib详解与练习
作为数据科学和分析的核心库,NumPy、Pandas与Matplotlib是Python生态中不可或缺的三大工具。本文将系统介绍这三个库的基础知识及实用技巧,并附带丰富练习,帮助你快速上手数据处理与可视化。
一、NumPy基础介绍
NumPy是Python中进行科学计算的核心库,提供了高性能多维数组对象ndarray,以及丰富的数学函数。
1.1 NumPy数组的创建
import numpy as np
# 创建一维数组
arr1 = np.array([1, 2, 3, 4, 5])
# 创建二维数组
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
# 创建全零数组
zeros = np.zeros((3, 4))
# 创建全一数组
ones = np.ones((2, 5))
# 创建等差数组
range_arr = np.arange(0, 10, 2)
# 创建线性空间数组
linspace_arr = np.linspace(0, 1, 5)
1.2 数组操作示例
# 数组维度与形状
print(arr2.shape) # (2, 3)
# 转置
print(arr2.T)
# 数组切片与索引
print(arr1[1:4])
# 基本运算(向量化)
print(arr1 * 2)
print(arr1 + arr1)
二、Pandas基础介绍与练习
Pandas是基于NumPy构建的强大数据分析库,核心数据结构是Series和DataFrame。
2.1 Pandas数据结构
import pandas as pd
# 创建Series
s = pd.Series([10, 20, 30, 40])
# 创建DataFrame
df = pd.DataFrame({
"姓名": ["张三", "李四", "王五", "赵六"],
"年龄": [25, 30, 22, 35],
"成绩": [88, 92, 79, 95]
})
2.2 常用函数练习
练习1:排序、去重、分组
# 排序
df_sorted = df.sort_values(by="年龄", ascending=True)
# 去重(示例:假设有重复数据)
df_dup = pd.DataFrame({
"姓名": ["张三", "李四", "张三", "赵六"],
"年龄": [25, 30, 25, 35],
"成绩": [88, 92, 88, 95]
})
df_unique = df_dup.drop_duplicates()
# 分组求均值
grouped = df.groupby("年龄")["成绩"].mean()
练习2:空值检测与处理
df_nan = pd.DataFrame({
"姓名": ["张三", "李四", None, "赵六"],
"年龄": [25, None, 22, 35],
"成绩": [88, 92, 79, None]
})
# 检测空值
print(df_nan.isnull())
# 填充空值
df_filled = df_nan.fillna({"姓名": "未知", "年龄": df_nan["年龄"].mean(), "成绩": 0})
# 删除含空值的行
df_dropped = df_nan.dropna()
练习3:Excel文件读写
# 写入Excel
df.to_excel("student_scores.xlsx", index=False)
# 读取Excel
df_excel = pd.read_excel("student_scores.xlsx")
print(df_excel)
三、Matplotlib基础与实战
Matplotlib是Python最常用的绘图库,灵活支持各种图表绘制。
3.1 Matplotlib安装与导入
pip install matplotlib
import matplotlib.pyplot as plt
3.2 常见图表绘制
曲线图
x = [1, 2, 3, 4, 5]
y = [10, 15, 13, 18, 16]
plt.plot(x, y, color='blue', linewidth=2, linestyle='--', marker='o', label="成绩")
plt.title("曲线图示例")
plt.xlabel("序号")
plt.ylabel("数值")
plt.legend()
plt.grid(True)
plt.show()
柱状图
labels = ['A', 'B', 'C', 'D']
values = [23, 17, 35, 29]
plt.bar(labels, values, color='orange')
plt.title("柱状图示例")
plt.show()
饼图
sizes = [30, 25, 25, 20]
labels = ['苹果', '香蕉', '橘子', '梨']
plt.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=90)
plt.title("饼图示例")
plt.show()
散点图
import numpy as np
x = np.random.rand(50)
y = np.random.rand(50)
plt.scatter(x, y, c='green', marker='x')
plt.title("散点图示例")
plt.show()
3.3 多子图绘制
fig, axs = plt.subplots(2, 2, figsize=(10, 8))
# 曲线图
axs[0, 0].plot(x, y)
axs[0, 0].set_title('曲线图')
# 柱状图
axs[0, 1].bar(labels, values)
axs[0, 1].set_title('柱状图')
# 饼图
axs[1, 0].pie(sizes, labels=labels, autopct='%1.1f%%')
axs[1, 0].set_title('饼图')
# 散点图
axs[1, 1].scatter(x, y)
axs[1, 1].set_title('散点图')
plt.tight_layout()
plt.show()
3.4 绘制参数详解
- 颜色:
color='red'或'r' - 线宽:
linewidth=2 - 线型:
linestyle='--',常用有'-','--',':'等 - 标记形状:
marker='o',常用有'o','x','^' - 网格:
plt.grid(True) - 图例:
plt.legend()
3.5 图片读取及矩阵初识
import cv2
# 读取图片(默认BGR)
img = cv2.imread('example.jpg')
# 转置图片
img_transposed = cv2.transpose(img)
# 分离通道
b, g, r = cv2.split(img)
# 显示单通道图片
cv2.imshow("Red Channel", r)
cv2.waitKey(0)
cv2.destroyAllWindows()
# 说明:图片本质上是一个多维数组矩阵
print(img.shape) # (高, 宽, 通道数)
练习
- 使用Pandas对以下数据进行排序、去重和分组操作:
data = {
'姓名': ['张三', '李四', '王五', '李四', '张三'],
'科目': ['语文', '数学', '英语', '数学', '英语'],
'成绩': [85, 90, 78, 90, 85]
}
df = pd.DataFrame(data)
- 对下列DataFrame完成空值检测,填充空值(平均值填充),以及删除空值行:
data = {
'姓名': ['张三', '李四', None, '王五'],
'年龄': [20, None, 22, 23],
'成绩': [88, 92, None, 75]
}
df = pd.DataFrame(data)
-
读取并写入Excel文件,验证数据完整性。
-
使用Matplotlib绘制曲线图、柱状图和饼图,尝试修改颜色、线条样式、添加图例和网格。
-
加载一张图片,分别显示其RGB三个通道,观察图片矩阵的结构。
本文覆盖了数据分析和可视化的入门核心知识,配合实战练习,帮助你打下坚实基础。祝你学习顺利!
作者:资深Python工程师
更多推荐



所有评论(0)