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

流行的Python库numpy及Pandas简要介绍

numpy.ndarray 是NumPy库中的主要数据结构,它是一个多维数组,用于存储和操作数值数据。NumPy是Python中用于数值计算的强大库,numpy.ndarray 是它的核心数据类型,提供了高效的数值运算和广泛的数学函数。

以下是 numpy.ndarray 的一些重要特点和功能:

  1. 多维数组numpy.ndarray 可以是一维、二维或多维的数组,这使得它非常适合处理各种复杂的数据。

  2. 数据类型numpy.ndarray 可以包含不同数据类型的元素,如整数、浮点数、布尔值等。每个数组都有一个固定的数据类型,可通过 dtype 属性获得。

  3. 广播:NumPy支持广播,这意味着可以对不同形状的数组执行元素级操作,而不需要显式循环。

  4. 矢量化操作:NumPy提供了各种数学、逻辑和统计函数,这些函数能够高效地应用于 numpy.ndarray 中的元素,而无需编写循环。

  5. 切片和索引:可以使用切片和索引操作从 numpy.ndarray 中选择和操作数据的子集。

  6. 数学运算:NumPy支持各种数学运算,包括加法、减法、乘法、除法、矩阵运算等。

  7. 随机数生成:NumPy包括随机数生成函数,用于生成随机数或随机数组。

  8. 数据统计:NumPy提供了各种统计函数,用于计算平均值、方差、标准差、最大值、最小值等。

  9. 线性代数:NumPy包括线性代数函数,用于矩阵操作、求解线性方程组等。

  10. 文件IO:可以使用NumPy读取和写入数据到磁盘,支持多种文件格式。

下面是一个简单的示例,演示如何创建和操作 numpy.ndarray

import numpy as np# 创建一个一维数组
arr1 = np.array([1, 2, 3, 4, 5])# 创建一个二维数组
arr2 = np.array([[1, 2, 3], [4, 5, 6]])# 访问数组元素
print(arr1[0])        # 输出:1
print(arr2[1, 2])     # 输出:6# 数学运算
result = arr1 + 10
print(result)         # 输出:[11 12 13 14 15]# 切片
sub_array = arr1[1:4]
print(sub_array)      # 输出:[2 3 4]# 统计运算
mean_value = np.mean(arr1)
print(mean_value)     # 输出:3.0
import numpy as np# 创建一个全零数组
zeros_array = np.zeros((3, 4))# 创建一个全一数组
ones_array = np.ones((2, 2))# 创建一个等差数列
linspace_array = np.linspace(0, 1, 5)  # 生成 [0. 0.25 0.5 0.75 1. ]# 创建一个随机数组
random_array = np.random.rand(3, 3)  # 生成一个3x3的随机数组
import numpy as nparr = np.arange(12)  # 创建一个包含0到11的一维数组# 将一维数组重塑为二维数组
reshaped_arr = arr.reshape(3, 4)# 改变数组的形状,保持原数组不变
flattened_arr = arr.flatten()
import numpy as np# 生成服从正态分布的随机数
random_numbers = np.random.normal(loc=0, scale=1, size=(3, 3))# 随机打乱数组的顺序
arr = np.array([1, 2, 3, 4, 5])
np.random.shuffle(arr)
import numpy as nparr = np.array([1, 2, 3, 4, 5])# 使用条件表达式创建新数组
new_array = np.where(arr > 2, arr, 0)  # 大于2的元素保留,小于等于2的变为0
import numpy as np# 创建一个示例数组
data = np.array([[1, 2, 3], [4, 5, 6]])# 将数据写入文本文件(以逗号分隔)
np.savetxt('data.txt', data, delimiter=',')# 将数据写入二进制文件
np.save('data.npy', data)# 将数据写入压缩的二进制文件
np.savez('data.npz', arr=data, arr2=data*2)
import numpy as np# 从文本文件读取数据
loaded_data = np.loadtxt('data.txt', delimiter=',')# 从二进制文件读取数据
loaded_data_binary = np.load('data.npy')# 从压缩的二进制文件读取数据
loaded_data_compressed = np.load('data.npz')
data_array = loaded_data_compressed['arr']
data_array2 = loaded_data_compressed['arr2']

 

import numpy as nparr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])# 沿行方向堆叠两个数组
stacked_array = np.vstack((arr1, arr2))# 沿列方向拼接两个数组
concatenated_array = np.concatenate((arr1, arr2))

Pandas(Python Data Analysis Library)是一个流行的Python库,用于数据处理和分析。它提供了高性能、易用的数据结构和数据分析工具,使得在Python中进行数据清洗、转换、分析和可视化变得更加容易。以下是Pandas的一些主要特点和功能:

  1. 数据结构:Pandas引入了两种主要的数据结构,DataFrameSeries

    • DataFrame 是一个二维表格数据结构,类似于电子表格或SQL表,可以容纳多种数据类型的列。每列可以有不同的数据类型。
    • Series 是一个一维标记数组,类似于带有标签的NumPy数组。
  2. 数据读取:Pandas可以轻松读取各种数据源,包括CSV、Excel、SQL数据库、JSON、HTML、以及Web API等。

  3. 数据清洗和处理:Pandas提供了丰富的数据操作功能,包括缺失值处理、数据合并、重塑、过滤、排序、分组和聚合等。

  4. 数据分析:Pandas支持各种数据分析任务,包括统计描述、数据可视化、时间序列分析、数据透视表等。

  5. 快速索引:Pandas的 DataFrameSeries 可以通过标签或位置进行快速的数据检索和索引。

  6. 灵活的数据可视化:Pandas结合了Matplotlib和Seaborn等可视化库,使得数据可视化变得容易。

  7. 数据导出:可以将清洗和分析后的数据导出到各种文件格式,包括CSV、Excel、SQL数据库等。

  8. 时间序列数据:Pandas对于处理时间序列数据非常强大,可以进行日期和时间的解析、滚动窗口计算等。

  9. 高性能:Pandas被设计为高性能数据处理工具,可以处理大型数据集。

  10. 广泛的社区支持:由于其流行和广泛使用,Pandas拥有庞大的社区支持和文档资源。

以下是一个简单的示例,演示了如何使用Pandas创建和操作数据:

 

import pandas as pd# 创建一个DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'],'Age': [25, 30, 35],'City': ['New York', 'San Francisco', 'Los Angeles']}
df = pd.DataFrame(data)# 打印DataFrame的前几行
print(df.head())# 进行数据过滤
filtered_df = df[df['Age'] > 28]# 进行数据分组和聚合
grouped_df = df.groupby('City')['Age'].mean()# 保存DataFrame到CSV文件
df.to_csv('sample_data.csv', index=False)
import pandas as pd# 从CSV文件读取数据
df = pd.read_csv('data.csv')# 从Excel文件读取数据
df = pd.read_excel('data.xlsx')# 从SQL数据库读取数据
import sqlite3
conn = sqlite3.connect('database.db')
query = "SELECT * FROM table_name"
df = pd.read_sql_query(query, conn)
# 选择DataFrame中的一列
column = df['Column_Name']# 使用条件选择行
filtered_df = df[df['Age'] > 25]# 使用iloc按位置选择数据
selected_data = df.iloc[0:5, 1:3]
# 处理缺失值
df.dropna()  # 删除包含缺失值的行
df.fillna(value)  # 填充缺失值为指定值
# 数据排序
sorted_df = df.sort_values(by='Column_Name', ascending=False)# 数据分组和聚合
grouped = df.groupby('Category')
mean_age = grouped['Age'].mean()
# 将DataFrame保存为CSV文件
df.to_csv('output_data.csv', index=False)# 将DataFrame保存为Excel文件
df.to_excel('output_data.xlsx', index=False)

相关文章:

流行的Python库numpy及Pandas简要介绍

numpy.ndarray 是NumPy库中的主要数据结构,它是一个多维数组,用于存储和操作数值数据。NumPy是Python中用于数值计算的强大库,numpy.ndarray 是它的核心数据类型,提供了高效的数值运算和广泛的数学函数。 以下是 numpy.ndarray 的…...

【二、安装centOS】

下载 地址:https://mirrors.aliyun.com/centos/ 地址 1、https://mirrors.aliyun.com/centos/7.9.2009/ 2、https://mirrors.aliyun.com/centos/7.9.2009/isos/ 3、https://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/ 选哪一个 可以选择第一个&#xff0…...

【动手学深度学习-Pytorch版】序列到序列的学习(包含NLP常用的Mask技巧)

序言 这一节是对于“编码器-解码器”模型的实际应用,编码器和解码器架构可以使用长度可变的序列作为输入,并将其转换为固定形状的隐状态(编码器实现)。本小节将使用“fra-eng”数据集(这也是《动手学习深度学习-Pytor…...

AUTOSAR 面试知识回顾

如果答不上来,就讲当时做了什么 1. Ethernet基础: 硬件接口: ECU到PHY: data 是MII总线, 寄存器控制是SMI总线【MDCMDIO两根线, half duplex】PHY输出(100BASE-T1): MDI总线,2 wire 【T1: twisted 1 pair …...

华为NFC设置教程(门禁卡/公交卡/校园卡等)

今天把华为NFC设置教程分享给大家 出门带门禁卡、校园卡、银行卡、身份证……东西又多,携带又麻烦,还容易搞丢,有没有一种方法可以把它们都装下?有!只要一部手机,出门不带卡包,各种证件&#x…...

基于微信小程序的音乐播放器设计与实现(源码+lw+部署文档+讲解等)

前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 👇🏻…...

如何取消显示Notepad++每行显示的CRLF符号

新电脑中重新安装了Nodepad,打开记事本后发现出现了许多黑底的CR|LF标记,特别碍眼。 如何取消呢? 视图 -> 显示符号 -> 取消勾选 显示行尾符操作步骤 预期效果...

数据结构与算法之时间复杂度和空间复杂度(C语言版)

1. 时间复杂度 1.1 概念 简而言之,算法中的基本操作的执行次数,叫做算法的时间复杂度。也就是说,我这个程序执行了多少次,时间复杂度就是多少。 比如下面这段代码的执行次数: void Func1(int N) {int count 0;for…...

TLS/SSL(十) session缓存、ticket 票据、TLS 1.3的0-RTT

一 TLS优化手段 TLS 为了提升握手速度而提出优化手段,主要是减少TLS握手中RTT消耗的时间关于session cache和session ticket,nginx关于ssl握手的地方都有影子 [指令] https面经 ① session 缓存 resume: 重用,复用 案例: 第二次访问www.baidu.com 说明&#x…...

C++设计模式_06_Decorator 装饰模式

本篇将会介绍Decorator 装饰模式,它是属于一个新的类别,按照C设计模式_03_模板方法Template Method中介绍的划分为“单一职责”模式。 “单一职责”模式讲的是在软件组件的设计中,如果责任划分的不清晰,使用继承得到的结果往往是随…...

MySQL 8.0数据库主从搭建和问题处理

错误处理: 在从库通过start slave启动主从复制时出现报错 Last_IO_Error: error connecting to master slaveuser10.115.30.212:3306 - retry-time: 60 retries: 1 message: Authentication plugin caching_sha2_password reported error: Authentication require…...

公众号迁移多久可以完成?

公众号账号迁移的作用是什么?只能变更主体吗?长期以来,由于部分公众号在注册时,主体不准确的历史原因,或者公众号主体发生合并、分立或业务调整等现实状况,在公众号登记主体不能对应实际运营人的情况下&…...

Spring Cloud Stream Kafka(3.2.2版本)使用

问题 正在尝试只用Spring Cloud Stream Kafka。 步骤 配置 spring:cloud:function:definition: project2Building stream:kafka:binder:brokers: xxxx:9002configuration:enable.auto.commit: falsesession.timeout.ms: 30000max.poll.records: 30allow.auto.create.top…...

8位微控制器上的轻量级SM2加密算法实现:C语言详细指南与完整代码解析

引言 在当今的数字化世界中,安全性是每个系统的核心。无论是智能家居、医疗设备还是工业自动化,每个设备都需要确保数据的安全性和完整性。对于许多应用来说,使用高级的微控制器或处理器可能是不切实际的,因为它们可能会增加成本…...

neo4j下载安装配置步骤

目录 一、介绍 简介 Neo4j和JDK版本对应 二、下载 官网下载 直接获取 三、解压缩安装 四、配置环境变量 五、启动测试 一、介绍 简介 Neo4j是一款高性能的图数据库,专门用于存储和处理图形数据。它采用节点、关系和属性的图形结构,非常适用于…...

【机组】计算机系统组成课程笔记 第二章 计算机中的信息表示

2.1 无符号数和有符号数 2.1.1 无符号数 没有符号的数,其实就是非负数。在计算机中用字节码表示,目前最常用的是八位和十六位的。 2.1.2 有符号数 将正负符号数字化,0代表 ,1代表 - ,并把代表符号的数字放在有效数…...

指针笔试题详解

个人主页:点我进入主页 专栏分类:C语言初阶 C语言程序设计————KTV C语言小游戏 C语言进阶 C语言刷题 欢迎大家点赞,评论,收藏。 一起努力,一起奔赴大厂。 目录 1.前言 2.指针题写出下列程序的结…...

MySQL 日志管理、备份与恢复

目录 1 数据备份的重要性 2 MySQL 日志管理 ​3 备份类型 3.1 数据备份的分类 3.2 备份方式比较 3.3 合理值区间 3.4 常见的备份方法 4 MySQL 完全备份与恢复 4.1 MySQL 完全备份 5 mysqldump 备份与恢复 5.1 MySQL 完全恢复 6 MySQL 增量备份与恢复 6.1 MySQL 增量…...

vtk- 数据类型(一) 三角链实例代码

三角链实例代码 #include <iostream> #include <string> #include <regex> #include "tuex.h" #include "vtkCylinderSource.h" #include "vtkPolyDataMapper.h" #include "vtkActor.h" #include "vtkRendere…...

Git大全

目录 一、Git概述 1.1Git简介 1.2Git工作流程图 1.3查看Git的版本 1.4 Git 使用前配置 1.5为常用指令配置别名&#xff08;可选&#xff09; 1.5.1打开用户目录&#xff0c;创建 .bashrc 文件 1.5.2在 .bashrc 文件中输入如下内容&#xff1a; 1.5.3打开gitBash&#xff0c;执行…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

LLM基础1_语言模型如何处理文本

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken&#xff1a;OpenAI开发的专业"分词器" torch&#xff1a;Facebook开发的强力计算引擎&#xff0c;相当于超级计算器 理解词嵌入&#xff1a;给词语画"…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要&#xff1a; 近期&#xff0c;在使用较新版本的OpenSSH客户端连接老旧SSH服务器时&#xff0c;会遇到 "no matching key exchange method found"​, "n…...

OD 算法题 B卷【正整数到Excel编号之间的转换】

文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的&#xff1a;a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...

es6+和css3新增的特性有哪些

一&#xff1a;ECMAScript 新特性&#xff08;ES6&#xff09; ES6 (2015) - 革命性更新 1&#xff0c;记住的方法&#xff0c;从一个方法里面用到了哪些技术 1&#xff0c;let /const块级作用域声明2&#xff0c;**默认参数**&#xff1a;函数参数可以设置默认值。3&#x…...

Pydantic + Function Calling的结合

1、Pydantic Pydantic 是一个 Python 库&#xff0c;用于数据验证和设置管理&#xff0c;通过 Python 类型注解强制执行数据类型。它广泛用于 API 开发&#xff08;如 FastAPI&#xff09;、配置管理和数据解析&#xff0c;核心功能包括&#xff1a; 数据验证&#xff1a;通过…...