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

二、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    ba  b  c  d  e  f
key                
a  3  4  5  6  7  8
b 24 25 26 27 28 29a     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: float64A  B  C
0  2  5  8
1  3  6  9
2  4  7  10
'''

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

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

相关文章

vue2和vue3区别

Vue 3是Vue.js框架的下一代主要版本,它在2020年9月正式发布。Vue 3带来了一系列的新特性和改进,包括性能提升、更小的打包尺寸、更好的TypeScript支持、新的组合式API等。以下是Vue 2和Vue 3之间的一些主要区别: 1. 性能提升: …

计算机存储单位

目录 是什么 存储单位的划分 存储单位转换关系表 相关疑问 存储单位转换除了位之外的存储单位转换规则是什么 为什么在编码中最小的操作单位不是位 是什么 用来度量数据存储容量的单位。 存储单位的划分 存储单位有 位(bit,也称为比特&#xff…

光伏项目怎么做预算?

随着可再生能源行业的蓬勃发展,光伏行业也得到了扩张。许多想要加入光伏项目投资的人,都在为怎样为项目做预算而苦恼,今天我就来跟大家分析下可以怎么做。 一、了解市场需求,确定预算目标 在制定光伏项目预算方案之前&#xff0c…

《SpringBoot》系列文章目录

SpringBoot是由Pivotal团队提供的全新框架,旨在简化新Spring应用的初始搭建以及开发过程。以下是一些关于SpringBoot的详细介绍: 设计目的:SpringBoot通过特定的方式来进行配置,使得开发人员不再需要定义样板化的配置&#xff0c…

「贪心算法」将数组和减半的最少操作次数

力扣原题链接,点击跳转。 给你一个数组,每次可以把其中一个数减半,可以对同一个数多次减半。至少操作多少次,才能让数组的和整体减少至少一半呢? 我们每次都选择当前数组中最大的那个数减半,就能减少最多…

链路初始化和训练

一、总览 链路初始化和训练,由物理层进行控制,是一个基于硬件的过程。初始化设备的链路和端口,使得设备能够收发报文,在链路上正常通信。 在reset后由硬件自动启动完整的训练过程,并由LTSSM管理。 1 位锁定 训练开始…

【Vue】diff 算法

diff的时机 当组件创建时,以及依赖的属性或数据变化时,会运行一个函数,该函数会做两件事: 运行_render生成一棵新的虚拟dom树(vnode tree),返回根节点运行_update,传入虚拟dom树的根节点,对新旧…

typedef定义结构体包含函数指针的巨坑

起因 尝试在c中模仿c的类,把成员函数放置到结构体中。显然只能放置一个结构体指针。 于是准备这么做。 错误示范 typedef struct {int id;void(*show)(Person p); }Person;void showPerson(Person p){ //.... }void init(Person * p){p->show showPerson; …

犀牛8 for Mac/Win:重塑三维建模的新标杆

在数字创意的浪潮中,犀牛8(Rhinoceros 8)作为一款卓越的三维建模软件,以其强大的功能和出色的性能,在Mac和Windows平台上都赢得了广大设计师和工程师的青睐。 犀牛8不仅继承了前代产品的优秀基因,更在细节…

基于python+Django+opencv的疲劳检测系统设计与实现

博主介绍: 大家好,本人精通Java、Python、C#、C、C编程语言,同时也熟练掌握微信小程序、Php和Android等技术,能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验,能够为学生提供各类…

Nginx的集群负载均衡(nginx构建tomcat集群案例)

一 .Nginx的集群负载均衡 1.nginx 集群负载均衡示意图 2.四层负载均衡和7层负载均衡 LVS 四层负载均衡(常用); Haproxy四层负载均衡;Nginx 四层负载均衡; Haproxy七层负载均衡;Nginx 七层负载均衡(常用); 3.nginx构建tomcat集群 步骤1:安装tomcat 步骤2:nginx配置tom…

夸夸生肖属鼠的女性朋友

属鼠人一生的命运受到许多因素的影响,包括性格、家庭、教育、环境等。属鼠人性格外向、求知欲强、善解人意、善于结交各种各样的朋友,有丰富的人脉,容易得到他人的帮助和支持。 属鼠的人聪明、机智,他们善于观察,富有…

MySQL(七) 表的内连和外连

表的连接分为内连和外连 9.1 内连接 内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,我们前面学习的查询都是内连接,也是在开发过程中使用的最多的连接查询。 语法: select 字段 from 表1 inner join 表2 on 连接条件 and …

【代码随想录】面试常考类型之动态规划基础题目

前言 更详细的在大佬的代码随想录 (programmercarl.com) 本系列仅是简洁版笔记,为了之后方便观看 做题步骤 含义公式初始化顺序检查 确定dp数组以及下标的含义递推公式dp数组如何初始化遍历顺序打印dp数组(看哪里有问题) 斐波那契数 …

MFC:CFileFind类使用方法介绍

这是一个介绍MFC中CFileFind类的小程序。编写这个程序使用的编辑软件是VS2022&#xff0c;基于C空项目。在C空项目下要调用MFC类需要&#xff1a;首先&#xff0c;头文件要包含<afx.h>&#xff0c;这个头文件包含了绝大部分使用MFC所需头文件&#xff1b;其次&#xff0c…

在线改图片怎么做更简单?快速修改图片尺寸的方法

现在一般拍摄出的图片尺寸都会比较大&#xff0c;想要上传大网上的一些平台展示时&#xff0c;经常会受到平台的限制&#xff0c;无法将图片正常上传到平台&#xff0c;那么如何将图片尺寸快速调整呢&#xff1f;比较简单的一种方式&#xff0c;可以通过在线改图片的工具来实现…

一个开源的个人主页模板,可以通过 Github Actions 来进行自动构建。

無名の主页 简单的小主页&#xff0c;原来的看够了&#xff0c;重新弄了一个 主页的 Logo 字体已经过压缩&#xff0c;若用本站 Logo 以外的字母会变回默认字体&#xff0c;这里是 完整字体&#xff0c;若无法下载&#xff0c;可将字体目录下的 Pacifico-Regular-all.ttf 进行替…

Linux程序开发(十一):进程与进程间通信设计之趣味猫咪抓老鼠游戏

Tips&#xff1a;"分享是快乐的源泉&#x1f4a7;&#xff0c;在我的博客里&#xff0c;不仅有知识的海洋&#x1f30a;&#xff0c;还有满满的正能量加持&#x1f4aa;&#xff0c;快来和我一起分享这份快乐吧&#x1f60a;&#xff01; 喜欢我的博客的话&#xff0c;记得…

他用AI,抄袭了我的AI作品

《大话西游》里面有一句经典台词&#xff1a;每个人都有一个妈&#xff0c;但是“你妈就一定是你妈吗&#xff1f;” 用AI创作的艺术作品&#xff0c;也走进类似的困境&#xff1a;如何证明你用AI生成的作品&#xff0c;就是你的作品&#xff1f; 近日&#xff0c;腾讯科技独…

Google手机连接wifi后提示“无法连接互联网“解决方法

1.原因分析 谷歌手机联网前会先访问谷歌的服务器:http://clients3.google.com/generate_204来探测网络是否连通&#xff0c;由于国内网络防火墙的原因访问不了&#xff0c;所以就提示"无网络连接"。 2.解决方法 可以通过adb命令修改验证网络是否连通的服务器地址&…