zoukankan      html  css  js  c++  java
  • 【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

  • 相关阅读:
    Java连载63-异常处理try...catch...、方法getMessageyu printStackTrace
    Python连载58-http协议简介
    Java连载62-使用throws关键字处理异常
    HTML连载57-相对定位和绝对定位
    Java连载61-异常的机制与分类
    Python连载57- 邮件头和主题、解析邮件
    Java连载60-类之间的六种关系
    [Java] 数据库编程JDBC
    [bug] MySQL-Front连接MySQL 8.0失败
    [bug]mysql: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone
  • 原文地址:https://www.cnblogs.com/OliverQin/p/8955428.html
Copyright © 2011-2022 走看看