Numpy和Pandas知识点总结

1.python常见的开源库介绍

1.1numpy

一个运行速度非常快的数学库,主要用于数组计算

1.2pandas

一个强大的“分析结构化数据”的工具集,底层依赖numpy

用于数据挖掘和数据分析,同时也提供数据清洗功能

pandas主要有两种数据结构:Series和Dataframe

Series 类似于一维数组,主要用于表示某行或者某列

Dataframe是pandas中一种表格型的数据结构

1.3Matplotlib

一个功能强大的数据可视化开源工具

python中使用最多的图形绘图库

1.4Seaborn

一个python数据可视化开源库,建立在Matplotlib之上

1.5Sklearn

基于python语言的机器学习工具,主要用于数据挖掘和数据分析

1.6 Jupyter Notebook

是进行数据分析学习和开发的首选开发环境

2.Numpy

2.1概述

numpy是python数据分析必不可少的第三方库

2.2Ndarray

numpy的数组类被称为ndarray,通常被称作数组

ndarray的属性有:

ndarray.ndim  数组是几维的

ndarry.shape  数组有几行几列

ndarray.size   数组中的元素个数

ndarray.dtype  数组中的元素类型

ndarray.itemsize  数组中每个元素的字节大小

运行代码

2.3创建ndarray数组

方式1:a=np.array([1,2,3,4,5])

方式2: a=ones((2,3)) /a=zeros((2,3))  创建全是1的数组或者全是0的数组

方式3: a=np.arange(10,20,2,dtype=int)  创建起点为10,终点为20,步长为2,数据类型为int的数组

2.4创建ndarray随机数组

以下的范围都是包左不包右

arr1=np.random.rand(2,3)   生成一个二行三列的数组,每个元素都是从0到1的小数

arr2=np.random.randint(1,5,size=(2,3))  生成一个二行三列的数组,每个元素都是从1到5的整数

arr3=np.random.uniform(1,5,size=(2,3))  生成一个二行三列的数组,每个元素都是从1到5的小数

2.5matrix函数

matrix函数用于创建二维数组

arr1=np.mat('1 2;3 4')

arr2=np.matrix('1,2;3,4')

arr3=np.matrix([[1,2,3],[4,5,6]])

2.6创建等比数组

arr1=np.logspace(1,3,5)  #创建从10到1000的等比数列,元素个数为5个

arr2=np.logspace(1,2,5,base=3,endpoint=True)#创建从3到9的等比数列,元素个数为5个并且包含9

2.7创建等差数列

arr1=np.linspace(1,5,3,endpoint=False) #创建从1到5的等差数组,不包含5,元素个数为3

2.8Numpy的数据类型转化

dtype  指定数据的类型

astype 转化数据的类型

arr1=np.array([1.2,1.3,1.4],dtype=np.float32)

arr2=arr1.astype(np.int32)

2.9Numpy基本函数

np.ceil()  向上取整

np.floor()  向下取整

np.rint()  四舍五入

np.isnan() 判断元素是否为NAN

np.mutiply() 元素相乘

np.divide()  元素相除

np.abs()  求元素的绝对值

np.where(condition,x,y)  三元运算符,条件成立取x,不成立取y

2.10统计函数

np.mean() 求平均值

np.sum() 求和

np.max() 求最大值

np.min()求最小值

np.argmax()最大值的下标索引

np.argmin()最小值的下标索引

np.cumsum()累加和

np.cumprod()累乘积

2.11比较函数

arr1=np.array([-1,2,3])

print(arr.any(arr1>0)) #任意一个值大于0返回True

print(arr.all(arr1>0))#所有值大于0返回True

2.12去重函数

arr1=np.array([1,2,3],[2,3,4])

print(np.unique(arr1))

2.13排序函数

arr1=np.array([1,3,2,5])

arr2=np.sort(arr1) #对数组排序,返回新的数组

arr1.sort()#直接在原数据上修改

2.14Numpy的运算

arr1=np.array([[1,2,3],[4,5,6]])

arr2=np.array([[1,2,3],[4,5,6]])

print(arr1-arr2)

print(np.multiply(a,b))

#当两个矩阵行数和列数相反时

a.dot(b)

np.dot(a,b)

3.pandas

Dataframe和Series是pandas的两种最基本的数据结构

3.1创建Series对象

3.2创建Dataframe对象

3.3Series常见操作

创建一个10到101,步长为10的series对象

Series=pd.Series(list(range(10,101,10)))

series的常用属性有:

series.loc[:5]   根据索引获取前5条内容,包左包右

series.iloc[:5]  根据索引获取前5条内容,包左不包右

series.dtype   series中每个元素的类型

series.shape   series的维度

series.size      series的元素个数

series.values   series中的所有元素值

series的常用方法有:

s1.mean()    平均值

s1.sum()       求和

s1.max()       最大值

s1.min()        最小值

s1.std()         标准差

s1.count()    求个数

series还可以和布尔值数组结合一起使用

s1=pd.Series([1,2,3])

flag=[True,False,True]

s1[flag]  将True对应的元素留下,将False对应的元素删除

series的计算

series+数值,将series中的每个数值,依次和要加的数值进行计算

series*数值    将series中的每个数值,依次和要乘的数值进行计算

series1+series2   将两个series进行计算,会根据对应的索引进行匹配,未匹配的数据用NAN填充

3.4DataFrame常见操作

df.shape    查看df的行,列

df.size       df中的元素个数,即行*列的结果

df.nim      产看df对象的维度

df.index    查看所有的索引值

df.columns   查看所有的列名

len(df)  查看df对象的行数

df.max()  返回每列的最大值

df.min()   返回每列的最小值

df.mean()  计算数字列的平均值

df.info()  查看df对象的信息

df.count()  查看非空值个数

df.describe()  查看df对象的详细信息

df也支持通过布尔索引来获取元素

print(df.head(3)[[True,False,True]])   获取df对象前三条数据中的第一条和第三条

df对象的运算是通过对应索引来进行的,不匹配的使用nan填充

df1+df1

df1+df1[:3]  df1的前三条数据相加,后面的数据使用nan填充

3.5 修改series对象和DataFrame对象

df1.set_index('id',inplace=True)#为df设置索引列,inplace=True表示在原数据上修改

df=pd.read_csv("data",index_col='id')#读取数据的时候,直接设置索引列

df1.reset_index()  #重置索引列

df1.rename(index={ 1:'A' },colmuns={ 'name': ' 姓名 '})  #使用rename函数修改df的索引和列名

df[ 'new_col']=value   #新增一列

df.drop('列名',axis=1/columns)   #删除列名

df.insert(loc=列号,column='列名',value='设置的值' )  #向指定位置插入一列

df=pd.read_csv('文件路径') #导入数据

df1.head(3).to_csv('文件路径') #导出数据

3.6 DataFrame查看部分数据

df['列名']   #获取某列数据

df[['列名1','列名2','列名3']] #获取多列数据

df.head(n=3)  #获取前三行数据

df.tail(n=3) #获取后三行数据

df.loc[1]  #根据行索引,获取指定行的数据

df.loc[[1,3,5]] #根据行索引,获取指定多行的数据

df.iloc[1]  #获取行号为1的数据

df.iloc[1,3,5] #获取行号为1,3,5的数据

df.loc[[101,103],['name','age']] #获取指定行指定列的数据

df.iloc[[2,3],[1,2]] #获取指定行,指定列的数据

df.loc[:,['列名1','列名2']]  #获取所有行的指定列的数据

df.iloc[:,[1,-1]] #获取所有行的第二列和最后一列数据

df.iloc[:,list(range(0,2))] #通过range生成列的编号,然后获取所有行对应的列

df.loc[:]   包左包右

df.iloc[:]   包左不包右

3.7分组和聚合计算

df.groupby('gender')['name'].count()    #统计男女总人数

df.groupby('gender')['age'].mean()   #统计男女平均年龄

df.groupby(['address','gender'])['age'].count() #统计各地区男女总人数

3.8DataFrame常用的排序方法

#获取最大的n个   df.nlargest(n,'列名')

#获取最小的n个   df.nlargest(n,'列名')

#按照某列数据进行排列    df.sort_values('age',ascending=False)

#按照列一升序,列一的值一致,按照列二降序排列    df.sort_values(['列1','列2'],ascending=['True','False'])

#去重后排序   df.drop_duplicates('age')

3.9 concat函数

stus=pd.concat([df1,df2])#根据行进行拼接

stus=pd.concat([df1,df2],ignore_index=True) #根据行进行拼接,并且重置索引

stus=df1.append(df2) #如果只是两个df拼接,使用append即可

res_cols=pd.concat([df1,df2],axis=1)  #对两个df对象进行列拼接

3.10 merge函数

df.merge(kf,how='left',on='kongfu_id')  #左表的全集+交集

df.merge(kf,how='right',on='kongfu_id') #右表的全集+交集

df.merge(kf,how='inner',on='kongfu_id')#左表和右表的交集

df.merge(kf,how='outer',on='kongfu_id')#左表的全集+右表的全集

4.缺失值处理

4.1 缺失值

Numpy中缺失值有几种表示形式:NaN,NAN,nan,它们都一样

NaN不等于0也不等于空串

4.2删除缺失值

df.dropna(how='any',axis=0,inplace=True) #只要某一行有缺失值,就删除该行

df.dropna(how='any')#只要某一列有缺失值,就删除该列

4.3填充缺失值

df.fillna(0,inplace=True)

df.fillna(method='ffill',inplace=True)#使用空值的上一个值填充

df.fillna(method='bfill',inplace=True)#使用空值的下一个值填充

5.apply函数

5.1 apply函数操作series对象

s1=pd.Series([1,2,3])

def  my_func(x):

      return   x*3

s2=s1.apply(my_func)

如果函数有多个参数,在调用时需要传参

def  my_func(x,e):

       return   x*e

s2=s1.apply(my_func,e=5)

5.2 apply函数操作DataFrame对象

df=pd.DataFrame({ 'col1':[1,2,3],'col2':[4,5,6] })

def  my_func_col(col):    #传入的是列

         x=col[1]

         y=col[2]

         z=col[3]

return  x+y+z

df.apply(my_func_col,axis=0)

def  my_func_row(row): #传入的是行

         x=row[1]

         y=row[2]

return  x+y

df.apply(my_func_row,axis=1)

函数向量化    @np.vectorize  def  func1():    xxxxxx

lambda 函数    当函数体比较简单,只有一句话的时候,可以使用lambda函数

df.apply(lambda x  : x*3 )

6.数据分组

分组聚合

df1.groupby('gender')['age'].mean()

分组转化

@np.vectorize

def  myfunc(x):    #定义转化函数

    if x>30:

      return  '年龄超过30岁了'

   return  '年龄没有超过30岁'

df['new_col']=df.groupby('age').age.transform(myfunc)

分组过滤

df.groupby('id').fillter(lambda x :  x.age>20)

7.透视表

#统计各个地区男女总数

df.groupby([address,gender],as_index=False).id.count()

#使用透视表也可以得到相同的结果

df.pivolt(index='address',columns='gender',values='id',aggfunc='count',margins=True)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

VMware--安装CentOS系统

在虚拟机安装CentOS系统 1 下载CentOS镜像 方式一:可以到官网下载,下载速度较慢。 https://vault.centos.org/7.6.1810/isos/x86_64/ (最后的 / 不要漏掉) 方式二:可以到国内的镜像网站下载。 阿里开源镜像站&…

『年度总结』逐梦编程之始:我的2023学习回顾与展望

目录 前言 我与Python 我与C语言 第一篇正式博客: 第二篇正式博客(扫雷): 指针学习笔记: C语言学习笔记: 我与数据结构: yuan 这篇博客,我将回顾2023年编程之旅的起点,同时展…

Unity | NGO网络框架

目录 一、相关属性及变量 1.ServerRpc属性 2.ClientRpc属性 3.NetworkVariable变量 二、相关组件 1.NetworkManager 2.Unity Transport 3.Network Object 4.NetworkBehaviour: 5.NetworkTransform Syncing(Synchronizing) Thresholds Interpolation 三…

原生微信小程序AR(扫描指定图片显示glb模型)

效果 ar案例视频 准备:需要准备要扫描的图片地址和扫描成功后显示的模型 1.在components创建组件 index.js文件代码 Component({properties: {title: {type: String,value: ,},intro: {type: String,value: ,},hint: {type: String,value: ,},code: {type: String…

引导过程和服务

宏内核(monolithic kernel):又称单内核和强内核,Unix,Linux把所有系统服务都放到内核里,所有功能集成于同一个程序,分层实现不同功能,系统庞大复杂,Linux其实在单内核内核实现了模块化&#xff…

汽车电子学习总结

国内的主要有比亚迪、联合汽车电子(联电)、麦格米特、上海电驱动;国外的主要有欧美系的博世、麦格纳、大陆、博格华纳;日系的电装、电产等公司。

【Android Studio】在单独的窗口中启动模拟器

参考:https://developer.android.com/studio/run/emulator-launch-separate-window?hlzh-cn 默认情况下,Android 模拟器会在 Android Studio 中运行。这样,您就可以高效地使用屏幕空间,使用热键在模拟器和编辑器窗口之间快速导航…

华为交换机基于mac地址划分VLAN

SW1配置 vlan 10mac-vlan mac-address 5489-98c3-5611 #pc1 mac地址 mac-vlan mac-address 5489-98c3-5622 #pc2 mac地址 interface GigabitEthernet0/0/1undo port hybrid vlan 1 #禁用交换机默认的vlan 1,避免产生干扰port hybrid untagged vlan 10mac-vlan enab…

【Java】RuoYi-Vue-Plus 多数据源整合TDengine时序数据库——服务端自动建库建表

目录 环境准备整合TDengine 数据源1. 添加驱动依赖2. 添加数据源配置3. 添加Mapper4. 添加建表sql脚本5. Controller 测试效果 环境准备 RuoYi-Vue-Plus v5.1.2JDK17Maven 3.6.3Redis 5.XMySQL 5.7TDengine 2.6.0.34 客户端 整合TDengine 数据源 1. 添加驱动依赖 注意&…

【AWS系列】巧用 G5g 畅游Android流媒体游戏

序言 Amazon EC2 G5g 实例由 AWS Graviton2 处理器提供支持,并配备 NVIDIA T4G Tensor Core GPU,可为 Android 游戏流媒体等图形工作负载提供 Amazon EC2 中最佳的性价比。它们是第一个具有 GPU 加速功能的基于 Arm 的实例。 借助 G5g 实例,游…

亚信安慧AntDB数据库:企业核心业务系统数据库升级改造的可靠之选

在近期召开的“2023年国有企业应用场景发布会”上,亚信安慧公司的核心数据库产品AntDB闪耀登场,技术总监北陌先生针对企业核心业务系统数据库升级改造的关键议题发表了深度分享。他从研发、工程实施和运维管理三个维度细致剖析了当前企业在进行数据库升级…

OpenCASCADE MFC例子

OpenCASCADE MFC例子 说明 一直对OpenCASCADE一直都比较感兴趣,这个例子是我参考这位大神C幼儿园中班小朋友的专栏做出来的OpenCASCADE_C幼儿园中班小朋友的博客-CSDN博客 不过我用的是vcpkg的方式安装OpenCASCADE,这个需要注意一下,可能需…

智慧机房建设浪潮:2024年动环监控系统厂家排名出炉

近几年来,伴随着信息化技术的快速发展,老旧的传统机房在设备性能、网络安全、数据统计等各方面都已经不再能完全满足使用需求,国内多个机房兴起了轰轰烈烈的智慧机房建设浪潮。不同于传统机房只能依赖人工24小时值守,智慧机房凭借…

数据库之存储引擎

1. 存储引擎的概念 存储引擎是MYSQL数据库的组件,负责执行时间的数据I/O操作(数据的存储和提取),工作在文件系统之上,数据库的数据会先传到存储引擎,再按照存储引擎的存储格式保存到文件系统。 &#xff…

Spring学习 Spring IOC

创建工程: 2.1.程序的耦合 耦合:耦合指的就是对象之间的依赖关系。对象之间的耦合越高,维护成本越高。 案例:没有引入IOC容器时系统的Web层、业务层、持久层存在耦合 /*** 持久层实现类*/ public class UserDaoImpl implements U…

判断完全数-第11届蓝桥杯省赛Python真题精选

[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第27讲。 判断完全数&#…

如何理解Nacos的CP和AP架构模型?

Nacos是阿里巴巴开源的注册中心和配置中心,它既可以替应用服务管理服务相关的元数据,也可以管理服务相关的配置信息。 Nacos既支持单机部署,也支持集群部署,为了保证数据的一致性,在集群模式下,Nacos既支持…

CAD加密软件哪个好?CAD图纸加密软件哪个好(图纸加密软件哪个最好用)

图纸防泄密软件现在市场上是很多的,但是普遍采用的图纸防泄密软件技术是采用透明加密的技术,当企业采用透明加密技术对的图纸文件进行安全防护时,也是最安全的最稳定的技术。 现在常用的使用透明加密技术,对企业图纸防泄密的方法…

人工智能_机器学习092_使用三维瑞士卷数据_利用分层聚类算法进行瑞士卷数据三维聚类---人工智能工作笔记0132

然后我们使用分层聚类算法来对我们导入的瑞士卷数据进行聚类 agg =AgglomerativeClustering(n_clusters = 6,linkage = ward) 可以看到这里我们使用的,聚类距离计算用的是,ward这种,最小化簇内方差的形式,l进行聚类对吧 可以看到这个linkage参数有好几个选择对吧,是之前我们讲过…

复现PointNet(分割网络):Windows + PyTorch+代码

一、平台 Windows 10 GPU RTX 3090 CUDA 11.1 cudnn 8.9.6 Python 3.9 Torch 1.9.1cu111 所用的原始代码:https://github.com/fxia22/pointnet.pytorch​​​​​​​ 二、数据 shapenetcore_partanno_segmentation_benchmark_v0 三、代码 分享给有需要的…