当前位置: 首页 > news >正文

NumPy 与 Pandas 的详细应用(含实例)

    在数据处理领域,NumPy 和 Pandas 是 Python 生态中不可或缺的两大核心库。NumPy 为数值计算提供高效的数组支持,是后续数据分析的基础;Pandas 则在 NumPy 之上构建了更灵活的数据结构,能轻松应对结构化数据的清洗、分析与可视化准备工作。本文将从基础功能到实战案例,带您全面掌握这两个库的详细应用,让数据处理效率翻倍。​
一、环境准备:5 分钟完成库安装与验证​
在开始学习前,需先完成 NumPy 和 Pandas 的安装,步骤简单且兼容性强,适用于 Windows、macOS 和 Linux 系统:​
安装库:打开电脑终端(Windows 用 “命令提示符”,macOS 用 “终端”),输入以下命令,通过 pip 工具安装最新版本的库:

pip install numpy pandas  # 同时安装NumPy和Pandas


若需指定版本(如适配旧项目),可输入pip install numpy==1.26.4 pandas==2.2.1(版本号可根据需求调整)。​
验证安装:安装完成后,在终端输入python(或python3)进入 Python 交互模式,输入以下代码:

import numpy as np
import pandas as pd
print("NumPy版本:", np.__version__)
print("Pandas版本:", pd.__version__)

若输出类似 “NumPy 版本:1.26.4,Pandas 版本:2.2.1” 的信息,说明安装成功。​
二、NumPy 详细应用:高效处理数值数组​
NumPy 的核心是ndarray(多维数组),它能以更紧凑的内存存储数据,并提供向量化运算能力,大幅提升数值计算效率。以下从数组创建、核心操作、数值计算三个维度,详解 NumPy 的实用功能。​
1. 数组创建:构建基础数据结构​
NumPy 提供多种创建数组的方法,可根据不同数据源(如列表、范围、随机数)灵活选择,满足各类场景需求:

import numpy as np# (1)从Python列表创建数组(最常用)
# 1维数组(对应数学中的向量)
arr1 = np.array([1, 2, 3, 4, 5])
print("1维数组:", arr1)  # 输出:[1 2 3 4 5]
print("数组形状:", arr1.shape)  # 输出:(5,)(5个元素,1维)# 2维数组(对应数学中的矩阵)
arr2 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print("2维数组:\n", arr2)
# 输出:
# [[1 2 3]
#  [4 5 6]
#  [7 8 9]]
print("数组形状:", arr2.shape)  # 输出:(3, 3)(3行3列)# (2)创建特殊用途数组
# 全0数组(常用于初始化)
zero_arr = np.zeros((2, 4), dtype=np.float32)  # 2行4列,浮点型
print("全0数组:\n", zero_arr)# 全1数组(常用于占位)
one_arr = np.ones((3, 2), dtype=np.int64)  # 3行2列,整型
print("全1数组:\n", one_arr)# 范围数组(类似Python的range,但返回数组)
range_arr = np.arange(10, 30, 5)  # 从10开始,到30结束(不包含),步长5
print("范围数组:", range_arr)  # 输出:[10 15 20 25]# 均匀分布数组(指定区间内生成固定数量的等间隔数)
linspace_arr = np.linspace(0, 1, 5)  # 0到1之间生成5个等间隔数
print("均匀分布数组:", linspace_arr)  # 输出:[0.  0.25 0.5  0.75 1. ]# 随机数组(常用于模拟数据)
np.random.seed(42)  # 设置随机种子,保证结果可复现
rand_arr = np.random.rand(2, 3)  # 2行3列,0-1之间的均匀随机数
randn_arr = np.random.randn(2, 3)  # 2行3列,符合标准正态分布的随机数(均值0,标准差1)
print("0-1随机数组:\n", rand_arr)
print("正态分布随机数组:\n", randn_arr)


2. 数组核心操作:索引、切片与重塑​
掌握数组的索引、切片和重塑,能快速提取目标数据、调整数据结构,是后续分析的基础:

import numpy as np# 基础数组(用于演示操作)
arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
print("原始数组:\n", arr)  # 3行4列数组# (1)索引:提取单个元素(注意:NumPy索引从0开始)
# 2维数组索引:[行索引, 列索引]
element1 = arr[1, 2]  # 第2行(索引1)第3列(索引2)的元素
print("单个元素(1,2):", element1)  # 输出:7# (2)切片:提取子数组(左闭右开区间)
# 提取第2-3行(索引1到2),第1-2列(索引0到1)
sub_arr1 = arr[1:3, 0:2]
print("子数组(1:3, 0:2):\n", sub_arr1)
# 输出:
# [[ 5  6]
#  [ 9 10]]# 提取所有行,第3列(索引2)
col3 = arr[:, 2]
print("第3列所有元素:", col3)  # 输出:[ 3  7 11]# 提取第2行(索引1)所有列
row2 = arr[1, :]
print("第2行所有元素:", row2)  # 输出:[5 6 7 8]# (3)重塑:改变数组形状(需保证元素总数不变)
# 将3行4列数组(共12个元素)重塑为2行6列
reshape1 = arr.reshape(2, 6)
print("重塑为2行6列:\n", reshape1)# 将数组展平为1维(常用于数据预处理)
flatten_arr = arr.flatten()
print("展平为1维数组:", flatten_arr)  # 输出:[ 1  2  3  4  5  6  7  8  9 10 11 12]# (4)条件索引:按条件筛选元素(高效替代循环)
# 筛选数组中大于5的元素
mask = arr > 5
filter_arr = arr[mask]
print("大于5的元素:", filter_arr)  # 输出:[ 6  7  8  9 10 11 12]# 筛选第2列(索引1)中大于3的行
row_mask = arr[:, 1] > 3
filter_rows = arr[row_mask]
print("第2列大于3的行:\n", filter_rows)
# 输出:
# [[ 5  6  7  8]
#  [ 9 10 11 12]]

3. 数值计算:向量化运算提升效率​
NumPy 的向量化运算无需循环,能直接对数组进行批量计算,效率远超 Python 原生列表。以下是常用的数值计算功能:

import numpy as np# 基础数组
arr1 = np.array([1, 2, 3, 4, 5])
arr2 = np.array([6, 7, 8, 9, 10])
mat1 = np.array([[1, 2], [3, 4]])
mat2 = np.array([[5, 6], [7, 8]])# (1)基础算术运算(元素级运算)
add = arr1 + arr2  # 对应元素相加
sub = arr2 - arr1  # 对应元素相减
mul = arr1 * 2     # 所有元素乘2(广播机制)
div = arr2 / arr1  # 对应元素相除
print("数组相加:", add)    # 输出:[ 7  9 11 13 15]
print("数组相减:", sub)    # 输出:[5 5 5 5 5]
print("数组乘2:", mul)     # 输出:[ 2  4  6  8 10]
print("数组相除:", div)    # 输出:[6.  3.5 2.666... 2.25 2. ]# (2)矩阵运算(线性代数相关)
# 矩阵乘法(需满足:前矩阵列数=后矩阵行数)
mat_mul = np.dot(mat1, mat2)  # 或 mat1 @ mat2
print("矩阵乘法:\n", mat_mul)
# 输出:
# [[1*5+2*7, 1*6+2*8]
#  [3*5+4*7, 3*6+4*8]] → [[19 22]
#                          [43 50]]# 矩阵转置(行变列,列变行)
mat_t = mat1.T
print("矩阵转置:\n", mat_t)
# 输出:
# [[1 3]
#  [2 4]]# (3)统计计算(描述性统计)
# 1维数组统计
arr_stats = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
mean = np.mean(arr_stats)    # 均值
median = np.median(arr_s
http://www.dtcms.com/a/423776.html

相关文章:

  • 2345浏览器网页版入口中文版合肥seo优化公司
  • 网站建设报价包括哪些学校网站建设电话
  • 音视频编解码全流程之用Extractor后Muxer生成MP4
  • 高德地图实现经纬度及获取编码、所属行政区、GIS
  • wordpress 扁平化新站seo快速排名 排名
  • 2025年在招投标及竞品信息采集机器人领域,主流RPA全面解析
  • 电子商务网站建设与管理期末考试网站开发方案案例
  • Node.js命令行工具开发
  • 《面向物理交互任务的触觉传感阵列仿真》2020AIM论文解读
  • 未来最紧缺的十大专业seo优化师
  • OCP证书考试难度怎么样?
  • Vue3 defineModel === 实现原理
  • 唐山营销型网站建设2023新闻头条最新消息今天
  • 计算机网络---传输层
  • 如何在阿里云上做网站制作软件的手机软件
  • 深入理解 Java 虚拟机:从原理到实践的全方位剖析
  • 网站谷歌seo做哪些凌点视频素材网
  • 手机app应用网站C语言做网站需要创建窗口吗
  • uniapp 安卓FTP上传下载操作原生插件
  • 国外知名平面设计网站黄骅打牌吧
  • C++ I/O流与文件操作速查
  • 网站制作哪家好又便宜做电商网站的流程
  • 网络边界突围:运营商QoS限速策略
  • 【笔记】在WPF中Decorator是什么以及何时优先考虑 Decorator 派生类
  • [算法练习]Day 4:定长滑动窗口
  • 外汇交易网站开发做网站前端后台
  • 小红书网站建设目的优化师简历
  • 集群的概述和分类和负载均衡集群
  • 专业的商城网站开发搜索引擎优化不包括
  • 哈尔滨市延寿建设局网站wordpress 主题添加