python pandas模块_【Python 数据分析】pandas模块

上一节,我们已经安装了numpy,基于numpy,我们继续来看下pandas

pandas用于做数据分析与数据挖掘

pandas安装

使用命令

pip install pandas

832918-20180426223835774-99602613.png

出现上图表示安装成功。

pandas又两大数据结构,数据分析相关的都围绕着这两种结构进行:

①Series

②DataFrame

Series用于存储序列这样的一维数据,DataFrame用于存储多维数据

Series对象

主要有2个相关联的数组组合在一起:①主元素数组 ②Index数组

index

value

0

-12

1

5

2

7

3

2

1.声明Series对象

832918-20171210233403849-1454803311.png

从上图可以看出,左侧的是index,右侧的是标签对应的元素

若不指定标签,默认的标签是从0开始的的递增数值标签,最好使用有意义的便签,用以区分和识别每个元素

832918-20171210233404646-1657964220.png

分别查看组成Series的两个数组,可以像下面一样调用它的两个属性:index(索引)和values(元素)

832918-20171210233405490-1233794863.png

2.选择内部元素

832918-20171210233406411-1964917367.png

或者直接使用index访问

832918-20171210233407036-793848727.png

选择多个元素时

832918-20171210233407677-44386526.png

3.元素赋值

既然知道如何选取单个元素,那么元素赋值就不言而喻了

832918-20171210233408333-2056327141.png

使用index:

832918-20171210233409083-606475745.png

4.用NumPy数组或其他Series对象定义新的Series对象

4.1使用NumPy定义

832918-20171210233409818-2023640155.png

4.2使用原有Series对象定义

832918-20171210233410505-79860294.png

然后,这样做的时候千万要小心,新的Series中的元素是引用的NumPy数组或原有Series对象中的,并不是其副本。简而言之,如果改变原NumPy数组中的值,那么新的Series中的值也会发生改变。

832918-20171210233411146-1213816802.png

5.筛选元素

获取s对象中所有大于8的元素

832918-20171210233411771-1519590247.png

6.Series对象运算和数学函数

数学中的加减乘除同样适用Series

832918-20171210233412443-494381222.png

7.Series对象的组成元素

Series对象往往包含重复的元素,你很可能想知道里边包含哪些元素,统计元素重复出现的次数或者判断一个元素是否在Series中

832918-20171210233413240-1062367818.png

接下来,还可以统计重复元素在在Series中出现的次数

832918-20171210233413911-441487379.png

isin()函数用来判断所属关系,也就是判断给定的一列元素是否包含在数据结构之中,isin()函数返回布尔值

832918-20171210233414693-1425427535.png

8.NaN

我们在做运算的时候,如果出现下面这种情况,对负数求对数会怎么样呢?

832918-20171210233415536-2048366280.png

NaN(not a Nmber,非数值)

当数据结构中若字段为空或者不符合数字的定义时,用这个特定的来表示

创建数据结构时,可以为缺失的项输入np.NaN

832918-20171210233416240-416069798.png

isnull()和notnull()函数用来识别没有对应元素的索引时非常好用

832918-20171210233416990-641672274.png

832918-20171210233417677-1140838451.png

上面两个函数返回两个由布尔值组成的Series对象,其元素时True或者False取决于原Series对象是否为NaN.如果是NaN,isnull()函数值返回为True,反之。

9.Series用作字典

832918-20171210233418427-1571371883.png

在上述例子中,索引数组用字典的键来填充,每个索引所对应的元素为用作索引的键在字典中对应的值。如遇缺失值,pandas就会为添加NaN

832918-20171210233419130-510168891.png

10.Series对象之间的运算

832918-20171210233419896-1490810037.png

根据上图我们可以看出,Series对象之间的运算

只对标签相同的元素求和

DataFrame对象

DataFrame这种列表式数据结构跟工作表(最常见的是Excle工作表)极为相似,其设计初衷是将Series的使用场景由一维扩展到二维。

index

first_name

last_name

sex

0

Tom

Green

Man

1

Json

Smith

Man

2

Alice

Smith

Woman

DataFrame有两个索引组,第一个数组与行相关,第二个数组与列相关。

1.定义DataFrame对象

新建DataFrame对象的常用方法是传递一个dict对象给DataFrame()构造函数。

832918-20171210233420708-1610156999.png

如果用来创建DataFrame对象的dict对象包含一些用不到的数据,你可以只选择自己感兴趣的东西。在DataFrame构造函数中,用column选项指定需要的列即可。

832918-20171210233421599-961842865.png

DataFrame对象跟Series一样,如果Index数组没有明确指定标签,pandas也会为其添加一列从0开始的数值作为索引。如果要指定索引,那么只需要把标签放在数组中,赋给index选项

832918-20171210233422427-1328552947.png

既然有index,columns选项,那么就可以使用新方法定义DataFrame

例如:使用np.arange(16).reshape((4,4))生成一个4*4型,包含数字0~15的矩阵

832918-20171210233423333-1758258654.png

2.选取元素

2.1获取列名

如果想知道DataFrame对象所有列的名称,在它上面调用columns属性即可

832918-20171210233424177-607142319.png

2.2获取索引

类似的,获取索引列表,调用index属性即可

832918-20171210233425005-1024829310.png

2.3获取元素

获取存储在数据结构中的元素

832918-20171210233425849-1935066591.png

2.4获取指定列

选择一列

832918-20171210233426615-1761639611.png

另一种是用列名称作为DataFrame实例的属性

832918-20171210233427333-840895285.png

2.5获取行

至于DataFrame中的行,用ix属性和行的索引值就能获取

832918-20171210233428068-1718446616.png

同时,也可以使用索引来选取行,第一个索引作为起始,第二个作为结束。

832918-20171210233428771-1328422908.png

2.6获取具体的元素

如果要获取存储在DataFrame中一个具体的元素,需要指定元素所在的列名称与行名称

832918-20171210233429427-1540345914.png

3.赋值

3.1添加二级标签

根据index与columns属性即可对DataFrame进行赋值

使用name属性为二级结构指定标签

832918-20171210233430177-1000841558.png

3.2添加新列

832918-20171210233430927-589643224.png

我们从上面可以看出,新增的一列全部都是America,那么我们加入需要将数组更新到这一列怎么做呢

832918-20171210233431740-589439134.png

3.2为DataFrame的各列赋一个Series对象也可以创建DataFrame,例如使用np.arange()函数生成一个递增序列

832918-20171210233432615-68385777.png

4.元素的所属关系

isin()函数在DataFrame中也是适用的

832918-20171210233433349-774554096.png

使用上述的返回结果作为条件,将得到一个新的DataFrame,其中只包含满足条件的元素

832918-20171210233434224-282388484.png

5.删除一列

使用del删除

832918-20171210233435271-1268328456.png

6.筛选

832918-20171210233436021-689621605.png

7.用嵌套字典生成DataFrame对象

832918-20171210233436786-1774731948.png

当不存在对应元素时候,使用NaN填补

8.DataFrame转置

832918-20171210233437474-1663150602.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值