dataframe drop_Pandas数据结构Series和DataFrame基础详解

v2-1cc751d3d2678d84b5a247929fae0630_1440w.jpg?source=172ae18b
作者:Zarten 知乎专栏:python数据分析与挖掘深入详解 知乎ID: Zarten 简介: 互联网一线工作者,尊重原创并欢迎评论留言指出不足之处,也希望多些关注和点赞是给作者最好的鼓励 !

概述

pandas作为数据分析强大的库,是基于numpy数组构建的,专门用来处理表格和混杂的数据。pandas中最主要的两个数据结构就是:Series和DataFrame。

接下来讲解Series和DataFrame的基础知识。

Series基础

Series结构是由一维numpy数据和与之相对应的索引组成。索引在左边,相对应的值在右边,若初始没有指定索引,则会自动创建从0开始的自然数索引。

创建Series对象

  • 不指定索引创建
import 

v2-f770d5c0656a238cfd2d69dc3abc58a5_b.jpg
  • 指定索引创建

有时候我们希望在初始时指定特定的索引,只需传入index参数即可

import 

v2-0fd6bce3344b77f598221215d922c717_b.jpg
  • 通过python字典创建

字典的键key即为Series对象的索引,值value即为Series对象的值

import 

v2-2a21b477812859858fc9dd32d55888f9_b.jpg

默认情况下,Series对象索引的顺序跟字典的顺序保持一致,但若想改变索引顺序,同样可以传入index参数。

从下面输出结果可以看到,索引顺序已经改变

import 

v2-e2018f3e1f840037c9a3644d80778a8c_b.jpg

若传入的index参数中,传入了字典中没有的键,会发生什么情况呢?

import 

v2-90534a4fddbdaf4a84caf7c125b29dd1_b.jpg

由上图,若传入没有的键,会显示NaN,表示是缺失值

获取Series对象数组及索引信息

使用Series对象的values和index方法即可

v2-5e6b88753b86731a75e0eebfaa9b5b3a_b.jpg

获取Series对象的一个或多个组值

可以通过索引的方式来获取。获取多个值时,传入的是一个列表

import 

v2-3796852c829fb432adb2cd0465131907_b.jpg

修改Series对象的索引和值

import 
  • 修改值

给相对应的索引赋值即可

v2-5fdd96acdc2d0df8976fa15d3d87dee9_b.jpg
  • 修改索引

给Series对象的index属性重新赋值即可

v2-64a14c0c9dd9c895af1723be28ef9075_b.jpg

Series对象的运算

可以进行numpy的运算,对numpy不熟悉的可以查阅前几篇文章。

import 

v2-c82382c3bfb1c05e25c80f3a0bb6b9a9_b.jpg

若数组为相应的数字,则进行数值计算

import 

v2-f34b75232f71d2efbdc759341eb1c693_b.jpg

Series对象的索引和值的name属性

指定索引的name属性,相当于索引的统称,同理值也是一样。这一name属性可以跟pandas的其他功能密切融合,以后会详细讲解。

zarten 

v2-46a4212d15e5f520a0b60a0056e47b4e_b.jpg

DataFrame基础

DataFrame是一个表格型的数据结构,由行和列组成,分别有行索引和列索引,且每列可以是不同类型的值。

下面可以最直观感受DataFrame的结构,从下面可以看到,行索引和列索引都是自动创建,且从0开始

最直观感受DataFrame数据结构

import 

v2-40f38cc74689603d830e840783daed22_b.jpg

创建DataFrame对象

创建的时候,可以通过参数index和columns分别指定行索引和列索引

1.传入一个numpy的多维数组对象

如上面那个例子

2.传入一个字典内部包含列表,字典内的列表是等长的

字典的key默认为列索引

import 

v2-9ecd9c5955c0cd3da0cbd184b5b4c775_b.jpg

3.传入一个嵌套字典

规则是:外层字典的key作为列,内层的key作为行

import 

v2-0fae42cfd6b0e294f60e6c856dd73594_b.jpg

4.导入创建

通过外部文件导入来创建,比如csv,excel,mysql,其他数据库等。导入操作将在后面文章详细介绍,这里不作介绍。

5.创建方法汇总,如下图所示

v2-23881783ab7476a9b73d571c9fbcd7c4_b.jpg

获取DataFrame对象的行或列

import 
  • 获取某列

获取某列可以类似字典直接获取,获取的结果为一个Series对象

v2-e6c4226ff50f6c0a0c7df2910885f55b_b.jpg
  • 获取多列

跟上面同样的方法,只是将多个列索引名称组成一个列表形式

v2-041fd7c249932bb62a8f6438edcd2764_b.jpg
  • 获取某行

通过DataFrame对象的loc属性进行获取

v2-74e55195afc32a058eda9bb5e24c5a97_b.jpg
  • 获取多行

同样使用loc属性,此时传入列表

v2-a5e6955a59216b6b74b1eaa89f5eb028_b.jpg

修改DataFrame对象的行或列

切记:对于多行或多列,要使用列表形式的,可以通过下面的一些例子注意下

  • 修改某列

跟获取某列相似,获取的同时赋值即可

v2-c86d9702b804676e50561f3a7683a861_b.jpg
  • 修改多列

同样使用列表方式,赋值时也使用列表可以同时修改多列

v2-a410921f33e82b9069a2383fa5a41ba3_b.jpg
  • 修改某行

同理,修改某行同样是使用loc属性

v2-59de93aa97b9786a427b3e61f1fe4cef_b.jpg
  • 修改多行

同样使用loc属性,赋值列表

v2-abc39d929618408b318e6afd31ee19dc_b.jpg
  • 若修改的行或列索引不存在的特殊情况

若在修改行或列的时候,指定的索引名称不存在,则会新增一行或一列。

通常新增行或列数据时可以使用此方法

v2-b1ed122f15dc0bd37f2898e223036d7e_b.jpg

PS:通过上面的例子,可以看到:其实所有的方法原理跟python的字典是类似的,所以只需记住python字典的用法,就很好理解了。

删除列或行

  • 删除列

删除使用del,跟python中的del类似

v2-75456d49efa3b89a6b7b0d85ddc8a260_b.jpg
  • 删除行

删除行就跟之前不太一样了,使用DataFrame对象的drop方法。

drop方法有个参数inplace,若设置为True,则删除原始数据的行;默认为False,返回的结果是删除行了的,但原始的数据还是原封不动,没有被删除。

inplace参数为False的情况(默认为False)

v2-270e3e84c8ba215e16296690f9f48f9a_b.jpg

inplace参数为True的情况

删除多行同样是使用列表形式

v2-cbd06685b8fd3fb2311dc35dc3561a41_b.jpg

对DataFrame对象转置

转置:将行变成列,列变成行,跟numpy中一样,使用.T操作即可

注意:转置后的结果是一个副本,不会对原对象进行转置

import 

v2-abede548913dcd4d6db68f89e2b209e8_b.jpg

DataFrame对象的索引和值的name属性

跟Series对象一样,也可指定行index和列columns的name属性名称

v2-46ad5557fa3ddf56eb9a48cd4f600d92_b.jpg
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值