看了简书中的一篇文章,想起自己理解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
网友评论