Python数据分析实战:NumPy、Pandas、Matplotlib从入门到精通
在数据分析领域,Python凭借其强大的生态系统已成为事实上的标准工具。对于零基础的初学者来说,掌握NumPy、Pandas和Matplotlib这三个核心库是从数据预处理到可视化呈现的必经之路。本文将通过完整的实战案例,带你系统学习如何利用这些工具完成从数据加载、清洗、分析到可视化的全流程。
1. 环境准备与工具安装
开始数据分析前,需要配置合适的开发环境。推荐使用Anaconda发行版,它集成了数据分析所需的常用库。
1.1 Python环境配置
首先检查Python版本,建议使用Python 3.8或更高版本:
BASH
python --version
# Python 3.8.10
如果尚未安装必要的库,使用pip进行安装:
BASH
pip install numpy pandas matplotlib seaborn jupyter
1.2 Jupyter Notebook基础配置
Jupyter Notebook是交互式数据分析的理想环境。启动后创建新笔记本,并设置常用导入语句:
PYTHON
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 设置中文字体和图形样式
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
sns.set_style("whitegrid") # 设置seaborn绘图风格
2. NumPy数组操作与数值计算
NumPy是Python科学计算的基础库,提供了高效的N维数组对象和数学函数。
2.1 创建和操作NumPy数组
与Python列表相比,NumPy数组在数值计算方面具有显著性能优势:
PYTHON
# 创建数组的多种方式
arr1 = np.array([1, 2, 3, 4, 5]) # 从列表创建
arr2 = np.zeros((3, 3)) # 3x3零矩阵
arr3 = np.ones((2, 4)) # 2x4全1矩阵
arr4 = np.arange(0, 10, 2) # 类似range函数
arr5 = np.linspace(0, 1, 5) # 等差数组
print("数组形状:", arr2.shape)
print("数组维度:", arr2.ndim)
print("数据类型:", arr2.dtype)
2.2 数组运算和广播机制
NumPy支持元素级运算和广播功能,使代码更简洁:
PYTHON
# 基本算术运算
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print("加法:", a + b)
print("乘法:", a * b)
print("点积:", np.dot(a, b))
# 广播示例:标量与数组运算
print("标量广播:", a + 10)
# 不同形状数组的广播
matrix = np.array([[1, 2, 3], [4, 5, 6]])
vector = np.array([10, 20, 30])
print("矩阵与向量广播:\n", matrix + vector)
2.3 实际案例:农产品产量预测
假设我们需要根据气候数据预测苹果产量,建立线性模型:
PYTHON
# 定义权重系数(基于历史数据得出)
weights = np.array([0.3, 0.2, 0.5]) # 温度、降雨量、湿度的权重
# 多个地区的气候数据(温度、降雨量、湿度)
climate_data = np.array([
[73, 67, 43], # 地区1
[91, 88, 64], # 地区2
[87, 134, 58], # 地区3
[102, 43, 37] # 地区4
])
# 矩阵乘法计算预测产量
predicted_yield = climate_data @ weights
print("各地区预测产量:", predicted_yield)
# 输出结果
for i, yield_val in enumerate(predicted_yield):
print(f"地区{i+1}预计产量: {yield_val:.1f} 吨/公顷")
3. Pandas数据处理与分析
Pandas提供了DataFrame这一强大的数据结构,专门用于表格数据处理。
3.1 数据读取与探索
首先学习如何从各种来源加载数据:
PYTHON
# 从CSV文件读取数据
covid_df = pd.read_csv('italy-covid-daywise.csv')
# 数据基本信息
print("数据形状:", co
最低 0.47元/天 开通会员,解锁全文
成为会员后, 你将解锁