美文网首页我爱编程
关于pandas中axis属性的一点理解感受

关于pandas中axis属性的一点理解感受

作者: Adiwy | 来源:发表于2018-02-06 10:27 被阅读47次

    看了简书中的一篇文章,想起自己理解axis上有点偏差,现在统一拿出来总结一下,数据就使用我看的文章里的数据吧,首先初始化

    # -*- coding: utf-8 -*-
    from pandas import Series
    from numpy import nan as NA
    import pandas as pd
    import numpy as np
    #首先创建所需数据集的Series
    manager=Series([1,2,3,4,5])
    country=Series(['US','US','UK','UK','UK'])
    gender=Series(['M','F','F','M','F'])
    age=Series([32,45,25,39,99])
    q1=Series([5,3,3,3,2])
    q2=Series([4,5,5,3,2])
    q3=Series([5,2,5,4,1])
    q4=Series([5,5,5,NA,2])
    q5=Series([5,5,2,NA,1])
    #将Series拼成DataFrame
    leadership=pd.DataFrame({'manager':manager,'country':country,'gender':gender,'age':age,'q1':q1,'q2':q2,'q3':q3,'q4':q4,'q5':q5})
    #补充未添加的列
    date=Series(['2008/10/24','2008/10/28','2008/10/01','2008/10/12','2009/5/1'])
    leadership['date']=date
    

    现在我们将所有行的q1至q5列累加形成一个total列

    leadership['total']=np.sum(leadership.ix[:,'q1':'q5'],axis=1)
    

    其中axis=1是什么意思呢?首先用最通俗的说法表示axis就是数组中的括号,axis=0表示操作的是最外层的括号,axis=1表示从外到内数的第二个括号,二维数组最大为1,同理三维数组最大为2,axis代表数组中从外到内的括号序列。axis的数值代表要操作的括号对象的层级,对这个层级的数据执行操作。如下图所示:


    axis含义说明

    既然已经说明了含义,我就再举一个例子,也是文章里的,按照这种说法去理解文章中的这段代码,首先,不废话,先把文章中的代码贴出来

    leadership.dropna(axis=1,how='any')
    

    上面这段代码的含义是什么呢,我们按照上面说的,因为datafame相当于一个二维数组,所以相当于对第二层括号里的数据进行操作,对第二个括号中的所有数据执行dropna操作,how='any' 表示判断条件只要有一个满足就剔除,how='all'表示所有条件都满足才剔除,所以只要第二个括号中的数据有一列为na,则删除这一列,上面的代码返回的数据是

       age country gender  manager  q1  q2  q3        date  total
    0   32      US      M        1   5   4   5  2008/10/24   24.0
    1   45      US      F        2   3   5   2  2008/10/28   20.0
    2   25      UK      F        3   3   5   5  2008/10/01   20.0
    3   39      UK      M        4   3   3   4  2008/10/12   10.0
    4   99      UK      F        5   2   2   1    2009/5/1    8.0
    

    为NA的那两列被去掉了
    同样,我们把axis改成0,那么表示对第一个括号中的数据进行操作,对数据中的所有第一个括号中的数据执行dropna操作,只要有一个为na,则第一层括号内的这个数据序列就要被删除,所以返回的结果为

       age country gender  manager  q1  q2  q3   q4   q5        date  total
    0   32      US      M        1   5   4   5  5.0  5.0  2008/10/24   24.0
    1   45      US      F        2   3   5   2  5.0  5.0  2008/10/28   20.0
    2   25      UK      F        3   3   5   5  5.0  2.0  2008/10/01   20.0
    3   39      UK      M        4   3   3   4  NaN  NaN  2008/10/12   10.0
    4   99      UK      F        5   2   2   1  2.0  1.0    2009/5/1    8.0
    

    相关文章

      网友评论

        本文标题:关于pandas中axis属性的一点理解感受

        本文链接:https://www.haomeiwen.com/subject/ujnwzxtx.html