• 5 pandas模块,DataFrame类


     
     
     
     
     
    DataFrame
     
        DataFrame是一个【表格型】的数据结构,可以看作是【由Series组成的字典】(共用同一个索引)。DataFrame由一定顺序排列的多列数据组成。设计初衷是将Series的使用场景从一维扩展到多维。DataFrame既有行索引,也有列索引。
     
        · 行索引:index
        · 列索引:columns
        · 值:values(numpy的二维数组)
     
     
        1)DataFrame的创建
          最常用的方法是传递一个字典来创建。DataFrame以字典的键作为每一【列】的名称,以字典的值(一个数组)作为每一列。  此外,DataFrame会自动加上每一行的索引(和Series一样)。    
        同Series一样,若传入的列与字典的键不匹配,则相应的值为NaN。
     
        所有的列都共用同一组index 作为行索引。如果所传的字典和columns不匹配,就显示为NaN。
     
        DataFrame属性:values  columns  index  shape
     
    DataFrame() 参数说明
    Init signature: DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)
    Docstring:
    Two-dimensional size-mutable, potentially heterogeneous tabular data
     
        data:可以传递一个ndarray类型的二维数组
        index:一维
        columns:一维
     
    实际工作中,DataFrame类型数据的创建都是通过读取CSV格式文件中的内容进行创建的。用来处理文件数据的。
     
     
     
        2)DataFrame的索引
            
                (1)对列进行索引
     
                        - 通过类似字典的方式
     
                        - 通过属性的方式
                            df对象有如下4中属性:
                            Type: DataFrame
                            String form:
                            height age sex weight
                
                    对于DataFrame而言,列名,就相当于属性。
                    DataFrame 是统计数据时用的表格,某一个事物的属性,没一个属性就对应DataFrame中的列名。
     
                    如何检索DataFrame中的行数据呢?
                        #因为没一行是一条数据,不是DataFrame的属性,
                        #所以不能用属性的方式检索DataFrame的行
     
     
                
                可以将DataFrame的列获取为一个Series。返回的Series拥有原DataFrame相同的索引,且name属性也已经设置好了,就是相应的列名。
     
                (2)对行进行索引            
                        - 使用ix[]来进行索引 (已经过时了,可以考虑不用)
                        - 使用.loc[]加index来进行索引

                对于切片而言,没有列切片,因为列是属性。
                loc[]切片,左开右闭。
     
                        - 使用.iloc[]加整数来进行索引               
                    iloc[]进行切片,左闭右开。

                    
                    对行的检索返回一个Series,index为原来的columns。
     
                    如果多多行数据进行检索,返回的是DataFrame类型的数据。
     
                    DataFrame自身有bug,索引为汉字时,有时无法检索结果。
     
                (3)对元素进行索引 
     
                        - 使用列索引、再使用行索引
     

                        - 使用行索引(iloc[3,1])相当于两个参数;iloc[[3,3]]里的[3,3]看作一个参数。再使用列索引。

     
            检索行时,参数可以多个,但是列,无法完成这样的操作。
     
                        - 使用values属性(二维numpy数组 ndarray)
     
     
     
                    注意:直接使用中括号时:
                        · 索引表示的是列索引
                        · 切片表示的是行切片
     
     
    =====================
    练习:
    使用多种方法对ddd进行索引和切片

    =====================
     
        3)DataFrame的运算
                
                (1)DataFrame之间的运算
                  同Series一样:
                        · 在运算中自动对齐不同索引的数据
                        · 如果索引不对应,则补NaN
                    
                    创建DataFrame df1 不同学生的各科目成绩,月考一
     
                    创建DataFrame df2  不同学生的各科目成绩,月考一,有新生转入
     
     
     
    Python Operator Pandas Method(s)
    + add()
    - sub(),subtract()
    * mul(),multiply()
    / truediv(),div(),divide()
    // floordiv()
    % mod()
    ** pow()
    行索引不对应的情况
    行、列索引不对应的情况

                
     
                (2)Series与DataFrame之间的运算 
                    【重要】
                         · 使用Python操作符:以行为单位操作(参数必须是行),对所有行都有效。(类似于numpy中二维数组与一维数组的运算,但可能出现NaN)
        老李加不上去。
        老李:三营长,你他娘的意大利炮呢!!!
     
                         · 使用pandas操作函数:
                            axis = 0:以列为单位操作(参数必须是列),对所有列都有效。index
                            axis = 1:以行为单位操作(参数必须是行),对所有行都有效。columns
        
     
     
     
    =======================
    练习:
        1.假设ddd是其中考试成绩,ddd2是期末考试成绩,请自由创建ddd2,并将其与ddd相加,求其中期末平均成绩。
     

     
        2.假设张三其中考试数学被发现左闭,要记为0分,如何实现?
     
        3.李四因为举报张三作弊立功,其中考试所有科目加100分,如何实现?
     
        4.后来老师发现有一道题出错了,为了安抚学生情绪,给每位学生每个科目都加10分,如何实现?加在其末考试的成绩上。
     
    =======================
  • 相关阅读:
    spring ApplicationListener接口
    spring提供的几个常用可实现的接口
    dubbo源码解析(三) DubboInvoker
    Java生日计算年龄工具
    css实现右尖括号样式
    微信小程序支付开发之申请退款
    微信小程序picker组件
    java 获取用户ip
    spring boot 添加拦截器的简单实例(springBoot 2.x版本,添加拦截器,静态资源不可访问解决方法)
    JVM 组成以及各部分作用
  • 原文地址:https://www.cnblogs.com/avention/p/9075243.html
Copyright © 2020-2023  润新知