深入理解NumPy与Pandas【numpy模块及Pandas模型使用】

news2025/3/16 13:22:33

二、numpy模块及Pandas模型使用

numpy模块

1.ndarray的创建

import numpy as np
a=np.array([1,2,3,4])
b=np.array([[1,2,3,4],[5,6,7,8]])
print(a) #[1 2 3 4]
print(b) #[[1 2 3 4][5 6 7 8]]

1.1使用array()函数创建

numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)

名称描述
object数组或嵌套的数列
dtype数组元素的数据类型,可选
copy对象是否需要复制,可选
order创建数组的样式,C为行方向,F为列方向,A为任意方向(默认)
subok默认返回一个与基类类型一致的数组
ndmin指定生成数组的最小维度

1.2使用arange()函数

根据 start 与 stop 指定的范围以及 step 设定的步长,生成一个 ndarray。

numpy.arange(start, stop, step, dtype)

1.3使用linespace()函数

用于创建一个一维数组,一个等差数列构成的

根据 start 与 stop 指定的范围以及 step 设定的步长,生成一个 ndarray。

和range类似

注意:np.linspace形成的数组一定包括范围的首位两个元素,则步长为(end - start) / (length - 1)。而np.arange是自己指定的步长(默认为1)也就意味着形成的数组不一定包括末尾数

np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

参数说明:

start: 开始值

stop: 结束值

num=50: 等差数列中默认有50个数

endpoint=True: 是否包含结束值

retstep=False: 是否返回等差值(步长)

dtype=None: 元素类型

1.4使用logspace()函数

用于创建一个一维数组,一个等比数列构成的,等间隔的一维数组

数据为对数函数log的值

参数说明:

start: 开始值

stop: 结束值

num=50: 数列中默认有50个数

endpoint=True: 是否包含结束值

base: log函数的底数,默认为10

dtype=None: 元素类型

1.5使用empty()函数创建

作用创建一个指定形状的未初始化的数组,由于未初始化,所以输出是随机值

numpy.empty(shape, dtype = none, order = 'C')

1.6使用zeros(),ones(),full(),eye()函数

三个函数类似于empty(),创建指定形状的数组,

不过zeros是以0来初始化,ones是以1来初始化,其中的1和0 默认为浮点数,

full函数()可以以自己指定的值来填充,所以会多一个参数fill_value原型,

np.eye(N, M=None, k=0, dtype=float):对角线为1其他的位置为0的二维数组,

其中N:行数,M:列数,k=0:向右偏移0个位置

numpy.zeros(shape, dtype = float, order = 'C’)
numpy.ones(shape, dtype = float, order = 'C’)
numpy.full(shape, fill_value,dtype = float, order = 'C’)
numpy.eye(N, M=None, k=0, dtype=float)

1.7生成随机数:使用random.random(),random.randint(),random.rand(),random.randn(),random.choice()函数

random([size]):生成size个[0.0,1.0)的随机数

randint(low,[high,size,dtype]):生成指定范围的任意维度的随机整数,数组元素的范围[low, high)区间

rand(d0,d1,…,dn):[0,1)之间随机数,具有均匀分布

randn(d0,d1,…,dn):返回具有标准正态分布(均值为0,方差为1)Choice(a,size=None,replace=True):从指定的一维数组中生成随机数

1.8使用asarray()函数

从已有的数组创建数组

a1=np.zeros([3,2])
a2=np.asarray(a1)
print(a1)
print(a2)
tup=(1,2,3,4)
a3=np.asarray(tup)
print(a3)
x=((1,2,3),(4,5,6),(7,8,9))
a=np.asarray(x)
print(a)
'''
[[0. 0.]
 [0. 0.]
 [0. 0.]]
[[0. 0.]
 [0. 0.]
 [0. 0.]]
[1 2 3 4]
[[1 2 3]
 [4 5 6]
 [7 8 9]]
'''

1.9使用frombuffer()函数

实现动态数组

numpy.frombuffer 接受 buffer 输入参数,以流的形式读入转化成 ndarray 对象。

Pandas模块

1.DataFrame对象创建

二维带行标签和列标签的数组

df = pd.DataFrame(data, index=index, columns=columns)

其中 index是行标签, columns是列标签,data可以是下面的数据

由一维 numpy数组,list, Series构成的字典

二维 numpy数组

一个 Series

另外的 DataFrame对象

属性名含义
len(x)表示对象值的长度。
size表示对象值的长度。
index表示列索引数。
columns表示行索引数。
dtypes表示列的数据类型。
shape表示有多少行列.
values表示对象值,即二维数组。
info表示对象的基本信息:索引情况、各列的名称、数据数量、数据类型等。
head(num)从头部开始显示几行,参数um表示显示的行数,默认为5行。
tail(num)从末尾开始显示几行,参数num表示显示的行数,默认为5行。

数据选取

DataFrame.loc[行索引名称或条件,列索引名称] 【基于索引名称】

DataFrame.iloc[行索引位置, 列索引位置] 【完全基于位置】(只接收int)

2.分组统计函数——groupby函数

DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, **kwargs)

功能: 根据给定的条件将数据拆分成组

        每个组否可以独立应用函数(sum,mean,min)

        将结果合并到一个数据结构中

3.面向列的聚合函数——agg函数

DataFrame.agg(func=None, axis=0, *args, **kwargs)

1.简单的列或行统计

默认对列统计(axis=0)

2.对每一个列数据应用同一个函数————func参数传入一个函数

3.对某列数据应用不同函数————func参数传入多个函数

元组(name,function):自定义name替换function名

4.对不同列数据应用不同函数————func参数传入字典{‘列名’:’函数名’}

4.transform() 函数:用于保持原始 DataFrame 结构的元素级转换

总是返回一个与原始 DataFrame 或 Series 相同形状的 DataFrame 或 Series。

即使只对一列或一行应用函数,transform() 也会返回一个完整的 DataFrame 或 Series。

DataFrame.transform(func=None, *args, **kwargs)

返回结果有两种:1.可以广播的标量值(np.mean)  2.可以是与分组大小相同结果的数组。

df=pd.DataFrame(np.arange(36).reshape(6,6),columns=list('abcdef'))
df['key']=pd.Series(list('aaabbb'),name='key')
print(df)
group1=df.groupby(['key']).agg('mean')
print(group1)
group2=df.groupby(['key']).transform('mean')
print(group2)
'''
   a  b  c  d  e  f  key
0  0  1  2  3  4  5    a
1  6  7  8  9 10 11    a
2 12 13 14 15 16 17    a
3 18 19 20 21 22 23    b
4 24 25 26 27 28 29    b
5 30 31 32 33 34 35    b
   a  b  c  d  e  f
key                
a  3  4  5  6  7  8
b 24 25 26 27 28 29
      a     b     c     d     e     f
0   6.0   7.0   8.0   9.0  10.0  11.0
1   6.0   7.0   8.0   9.0  10.0  11.0
2   6.0   7.0   8.0   9.0  10.0  11.0
3  24.0  25.0  26.0  27.0  28.0  29.0
4  24.0  25.0  26.0  27.0  28.0  29.0
5  24.0  25.0  26.0  27.0  28.0  29.0
'''

5.apply() 函数:最通用的函数

DataFrame.apply(func=None, axis=0,raw=False,result_type=None,*args, **kwds)

func:要应用的函数。它可以是一个 Python 函数,也可以是一个字符串(例如 'sum'、'mean' 等)。

axis:应用函数的轴。如果 axis=0(默认值),则函数将沿着列方向应用;如果 axis=1,则函数将沿着行方向应用。

raw:是否将底层数据传递给函数。如果 raw=True,则传递底层 NumPy 数组;否则传递 Series 对象。

result_type:结果类型。可以是 'expand'、'reduce' 或 'broadcast'。

args:要传递给函数的额外参数。 *kwds:要传递给函数的额外关键字参数。

data={
    'A':[1,2,3],
    'B':[4,5,6],
    'C':[7,8,9]
}
df=pd.DataFrame(data)
print(df)
result=df.apply(lambda x:x.mean())
result1=df.apply('mean')
print(result,result1,sep='\n')
result=df.apply(lambda x:x+1)
print(result)
'''
A    2.0
B    5.0
C    8.0
dtype: float64
A    2.0
B    5.0
C    8.0
dtype: float64
   A  B  C
0  2  5  8
1  3  6  9
2  4  7  10
'''

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1694959.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

域内攻击 ----->约束非约束委派攻击

在域中,除了我们常见的横向移动以外,还有很多攻击,像什么kerberoasting,委派攻击,NTLMrelay啊...... 还有很多(暂时只知道这些) 以前在一篇公众号看到的一个笑话也荟萃了网安的一些攻击手法&am…

设计模式在芯片验证中的应用——单例

一、单例模式 单例模式(Singleton)是一种创建型设计模式,能够保证一个类只有一个实例, 并提供一个访问该实例的全局节点。验证环境配置(configuration)类、超时(timeout)处理类等可以使用单例实现。比如说验证环境需要在特定场景中监测特定接口上的超时事…

【机器学习300问】97、机器学习中哪些是凸优化问题,哪些是非凸优化问题?

在机器学习的领域中,多数模型的参数估计问题实质上可以转化为优化问题。鉴于机器学习模型的多样性,不同的模型会对应着不同的损失函数,进而形成各具特色的优化问题。了解优化问题的形式和特点,对于提升我们求解模型参数的效率和准…

在 Visual Studio 2022 (VS2022) 中删除 Git 分支的步骤如下

git branch -r PS \MauiApp1> git push origin --delete “20240523备份” git push origin --delete “20240523备份”

推荐五个线上兼职,在家也能轻松日入百元,适合上班族和全职宝妈

在这个瞬息万变的时代,你是否也曾考虑过在繁忙的工作之外,寻找一份兼职副业来补贴家用,同时保持生活的多样性?别急,现在就让我为你揭秘五个可靠的日结线上兼职岗位,助你轻松迈向财务自由之路! 一…

地质考察AR远程交互展示系统辅助老师日常授课

广东这片充满活力的土地,孕育了一家引领ARVR科技潮流的杰出企业——深圳华锐视点,作为一家专注于VR/AR技术研究与业务开发的先锋公司。多年来,我们不断突破技术壁垒,将AR增强现实技术与各行各业的实际需求完美结合,助力…

基于分块贝叶斯非局部均值优化(OBNLM)的图像去噪算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 块定义与相似度计算 ​4.2 贝叶斯框架下的加权融合 4.3 加权最小均方误差估计 5.完整程序 1.程序功能描述 基于分块贝叶斯非局部均值优化(OBNLM)的图像去噪算法matlab仿真&#xff0c…

JAVA线程池的线程数量配置

一 JAVA线程池的线程数量配置 关于线程的配置,线程数量配置多少这个问题呢?往往不同的环境与不同的线程中的代码决定其配置的线程的数量。 二 常见的线程量配置 最常见的方式根据线程中处理的代码划分为CPU密集型或IO密集型: CPU密集型&…

react实现table可拖拽表头(给react-jss样式传递参数、滚动条样式)

目录 react实现table可拖拽表头安装依赖resizableTitle / index.tsxdrapTable.tsx使用DragTable 组件滚动条样式效果 react实现table可拖拽表头 安装依赖 yarn add react-resizable yarn add react-jssresizableTitle / index.tsx import { createUseStyles } from react-js…

【电子学会】2023年09月图形化一级 -- 保护环境

保护环境 1. 准备工作 (1)删除角色小猫,添加角色Wizard,Bear-walking; (2)添加背景Desert和Forest。 2. 功能实现 (1)调整魔法师和熊的大小为50; &…

Linux文本处理三剑客(详解)

一、文本三剑客是什么? 1. 对于接触过Linux操作系统的人来说,应该都听过说Linux中的文本三剑客吧,即awk、grep、sed,也是必须要掌握的Linux命令之一,三者都是用来处理文本的,但侧重点各不相同,a…

MySQL---通用语法及分类

目录 一、SQL通用语法 二、 SQL分类 1.DDL 1.1 DDL数据库操作 1.2 DDL表操作---查询 1.3 DDL表操作---创建​编辑 1.4 DDL表操作---数据类型 1.5 DDL表操作---修改 1.6 DDL表操作---删除 1.7 DDL总结 2. 图形化界面工具DataGrip 2.1 创建 2.2 使用 3. DML 3.1 DML介绍 3.2 DM…

基于开源ATmega8 无感BLDC程序移植到ATmega328PB

基于开源ATmega8 无感BLDC程序移植到ATmega328PB 🔖基于Atmel Studio 7.0开发环境。🥕开源原项目资源地址:https://svn.mikrokopter.de/websvn/listing.php?repnameBL-Ctrl&path%2F&📍原理图和PCB资源 BL-Ctrl v2.0 in E…

【FPGA】VGA显示文字、彩条、图片——基于DE2-115

文章目录 前言一、VGA概述1.1 简述1.2 管脚定义1.3 VGA显示原理1.4 VGA时序标准1.5 VGA 显示模式及相关参数 二、VGA显示自定义的汉字字符2.1 点阵汉字生成2.2 生成BMP文件2.3 生成txt文件2.4 实现效果 三、VGA显示条纹3.1 实现流程3.2 实现效果 四、VGA输出一幅彩色图像4.1 bm…

从旅游广告联想到《桃花源记》

近日收到《长江头条网》等知名网络自媒体相邀,促我写点儿旅游题材的文案。虽说笔者游历过许多名山大川的绝美风景区,但那是在70岁之前的事儿了。如今年逾78岁,纵使有少许自有资本能够支持出游,可体力难撑,岂不是花钱买罪受吗?而且,写没有亲身经历过的事挺难,即便发表出…

Plotly库利用滑块创建数据可视化

使用了Plotly库来创建一个数据可视化图表,并使用滑块来控制显示哪些数据 import plotly.graph_objects as go from plotly.subplots import make_subplots# 示例数据 x [1, 2, 3, 4, 5] y1 [1, 2, 3, 4, 5] y2 [5, 4, 3, 2, 1] y3 [2, 3, 1, 5, 4]# 创建子图 f…

基于jeecgboot-vue3的Flowable增加流程支持组件与element-plus组件导入支持

因为这个项目license问题无法开源,更多技术支持与服务请加入我的知识星球。 1、package.json文件需要增加相关流程组件,如下 "dependencies": {"element-plus/icons-vue": "^2.3.1","highlightjs/vue-plugin":…

JDBCTemplate介绍

Spring JDBC Spring框架对Spring的简单封装。提供一个JDBCTemplate对象简化JDBC开发 *步骤: 1、导入jar包 2、创建JDBCTemplate对象。依赖于数据源DataSource *JdbcTemplate templatenew JdbcTemplate(ds); 3、调用JdbcTemplate的方法来完成CRUD的操作 *update()&…

解决问题:Collecting package metadata (current_repodata.json)--faile

目录 解决步骤: 1、创建pip.ini文件:winR对话框中复制输入:%APPDATA%,然后回车。 2、conda添加清华源: 3、这些创建完,重启电脑就可以创建你的虚拟环境了 4、利用镜像源下载库: 5、查看to…

青鸟云报修系统:实现高效、便捷的维修申请处理

在日常生活和工作中,故障报修难免会遇到,售后报修服务则成为了解决问题的关键。纸质化售后报修维修申请单,作为报修流程中的重要一环,在一定程度上能够记录和追踪售后报修维修流程,但在实际操作过程中却存在着诸多弊端…