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)

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

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

相关文章

BigDecimal的性能问题

BigDecimal 是 Java 中用于精确计算的数字类,它可以处理任意精度的小数运算。由于其精确性和灵活性,BigDecimal 在某些场景下可能会带来性能问题。 BigDecimal的性能问题 BigDecimal的性能问题主要源于以下几点: 内存占用:BigDec…

mysql+关掉密码过期

mysql关掉密码过期 要在MySQL中关闭密码过期功能,可以按照以下步骤进行操作: 登录到MySQL服务器。 使用管理员账户(如root)连接到数据库。 mysql -uroot -ppassword 运行以下命令来查看当前的密码过期设置: SHOW…

金蝶EAS pdfviewlocal.jsp接口存在任意文件读取漏洞 附POC软件

免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。 1. 金蝶EAS简介 微信公众号搜索:南风漏洞复现文库 该…

2023十大最具商业影响力量子公司 | 光子盒年度系列

量子技术以其广泛的应用范围和对多个领域的深远影响,是当之无愧的“通用底座”技术,其潜在的产业变革力正在展现,尽管当前量子技术与人工智能或虚拟现实等技术领域相比,量子对大多数人来说还有些“看不透”。 2023年,量…

【Mars3d】new mars3d.layer.GeoJsonLayer({不规则polygon加载label不在正中间的解决方案

问题: 1.new mars3d.layer.GeoJsonLayer({type: "polygon",在styleOptions里配置label的时候,发现这个 不规则polygon加载的时候,会出现label不在中心位置。 graphicLayer new mars3d.layer.GeoJsonLayer({ name: "全国省界…

JVM的FastThrow优化机制

前言: 前一阵子,在公司排查线上问题发现:出问题的方法报空指针异常,但是没有异常堆栈信息和Message。我一开始以为是代码中做了处理,但是经过翻阅代码发现不是。最后一番查找资料,这种现象是JVM的一种优化机…

Open3D 点云下采样抽稀(7)

Open3D 点云下采样抽稀(7) 一、算法介绍二、算法实现1.代码 一、算法介绍 点云抽稀在计算机图形学和计算机视觉中有着广泛的应用,其作用包括但不限于以下几点: 数据压缩: 点云抽稀可以有效地减少点云数据量&#xff0…

问答领域的基本了解

问答领域是人工智能领域中的一个重要研究方向,旨在让计算机能够理解人类提出的问题,并以自然语言形式回答这些问题。问答系统可以应用于各种场景,包括搜索引擎、虚拟助手、智能客服等。 一.目标 目标: 问答系统的主要目标是使计…

为何大厂急招鸿蒙开发工程师?别有洞天

正确看待鸿蒙不再兼容安卓版本,而大厂急招鸿蒙工程师这一举动已经是预料之中的。我们一步步来看鸿蒙是怎么发展过程的。为什么互联网大厂急招鸿蒙开发岗位? 鸿蒙的发展历程 华为历经4年,从2019年开始的鸿蒙问世2.0版本到2023年末4.0宣布“不…

r语言拟合曲线

r语言拟合曲线 #圆滑曲线 library(ggalt) library(ggplot2) df <- read.csv("lqs-1.csv",headerT) p2<-ggplot(datadf,aes(xx,yy))geom_point(size1) geom_smooth(span0.1)p2结果

CTFshow web入门web128-php特性31

开启环境: 一个新的姿势&#xff0c;当php扩展目录下有php_gettext.dll时&#xff1a; _()是一个函数。 _()gettext() 是gettext()的拓展函数&#xff0c;开启text扩展get_defined_vars — 返回由所有已定义变量所组成的数组。 call_user_func — 把第一个参数作为回调函数调…

【算法练习】leetcode算法题合集之二叉树篇

递归遍历基础篇 前序遍历&#xff0c;中序遍历&#xff0c;后序遍历是根据处理根节点的位置来命名的。 树的处理大多用到了递归&#xff0c;递归需要知道终止条件。 前序遍历&#xff08;中左右&#xff09; 144.二叉树的前序遍历 中左右&#xff0c;先处理根节点&#xff0c;…

Java面试高招:程序员如何在面试中脱颖而出

Java面试高招&#xff1a;程序员如何在面试中脱颖而出 《Java面试高招&#xff1a;程序员如何在面试中脱颖而出》摘要引言面试经历面试失败的反思 面试技巧侦探式的问题解决无敌铁金刚的坚定决心 参考资料 博主 默语带您 Go to New World. ✍ 个人主页—— 默语 的博客&#x1…

4.5 A TILED MATRIX MULTIPLICATION KERNEL

我们现在准备展示一个tiled矩阵乘法内核&#xff0c;该内核使用共享内存来减少对全局内存的流量。图中4.16显示的内核。实施图4.15.中所示的阶段。在图4.16中&#xff0c;第1行和第2行声明Mds和Nds为共享内存变量。回想一下&#xff0c;共享内存变量的范围是一个块。因此&#…

Redis原理篇(Dict的收缩扩容机制和渐进式rehash)

Dict&#xff08;即字典&#xff09; Redis是一种键值型数据库&#xff0c;其中键与值的映射关系就是Dict实现的。 Dict通过三部分组成&#xff1a;哈希表&#xff08;DictHashTable&#xff09;&#xff0c;哈希节点(DictEntry)&#xff0c;字典&#xff08;Dict&#xff09…

书生·浦语大模型全链路开源体系 学习笔记 第二课

基础作业&#xff1a; 使用 InternLM-Chat-7B 模型生成 300 字的小故事&#xff08;需截图&#xff09;。熟悉 hugging face 下载功能&#xff0c;使用 huggingface_hub python 包&#xff0c;下载 InternLM-20B 的 config.json 文件到本地&#xff08;需截图下载过程&#xf…

tiktok云手机有用吗?用哪个好?

很多做独立站的跨境卖家都会搭配一些社媒平台给自己引流带货&#xff0c;比如说目前很火的TikTok&#xff0c;这也是目前比较有效的一种引流方式。本文将介绍tiktok运营方法以及如何用tiktok云手机规避运营风险。 TikTok是个不错的风口&#xff0c;不过我们在国内想要运营好Tik…

数环通12月产品更新:新增数据表相关功能、优化编辑器,15+应用进行更新

为了满足用户不断增长的需求&#xff0c;我们持续努力提升产品的功能和性能&#xff0c;以更好地支持用户的工作。 数环通12月的最新产品更新已经正式发布&#xff0c;带来了一系列强大的功能&#xff0c;以提升您的工作效率和系统的可靠性。 更新快速预览 新增&优化功能&a…

软考-软件设计师 知识点整理(一篇就过了 建议收藏)

文章目录 一 计算机组成CPU寻址方式校验码奇偶校验码&#xff08;只能检一位错&#xff0c;并且不能纠错&#xff09;循环冗余校验码CRC&#xff08;只能检错&#xff0c;不能纠错&#xff09;海明码 计算机体系结构分类Flynn分类法&#xff08;理论存在&#xff1a;多指令单数…

Java LeetCode篇-二叉搜索树经典解法(实现:二叉搜索树的最近公共祖先、根据前序遍历建树等)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 判断合法 1.1 使用遍历方式实现验证二叉搜索树 1.2 使用递归方式实现验证二叉搜索树 2.0 求范围和 2.1 使用非递归实现二叉搜索树的范围和 2.2 使用递归方式实现…