【Python 数据分析】pandas模块

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

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

pandas安装

使用命令

pip install pandas

 

 

出现上图表示安装成功。

 

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

①Series

②DataFrame

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

Series对象

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

index value
0 -12
1 5
2 7
3 2

 

1.声明Series对象

image

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

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

image

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

image

2.选择内部元素

image

或者直接使用index访问

image

选择多个元素时

image

3.元素赋值

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

image

使用index:

image

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

4.1使用NumPy定义

image

4.2使用原有Series对象定义

image

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

image

5.筛选元素

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

image

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

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

image

7.Series对象的组成元素

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

image

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

image

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

image

8.NaN

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

image

NaN(not a Nmber,非数值)

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

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

image

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

image

image

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

9.Series用作字典

image

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

image

10.Series对象之间的运算

image

根据上图我们可以看出,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()构造函数。

image

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

image

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

image

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

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

image

2.选取元素

2.1获取列名

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

image

2.2获取索引

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

image

2.3获取元素

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

image

2.4获取指定列

选择一列

image

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

image

2.5获取行

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

image

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

image

2.6获取具体的元素

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

image

3.赋值

3.1添加二级标签

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

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

image

3.2添加新列

image

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

image

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

image

4.元素的所属关系

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

image

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

image

5.删除一列

使用del删除

image

6.筛选

image

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

image

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

8.DataFrame转置

image

posted @ 2018-04-26 22:39  OLIVER_QIN  阅读(1061)  评论(2编辑  收藏  举报