1.删除
import numpy as np
import pandas as pd
data=pd.DataFrame(np.arange(16).reshape((4,4)),index=['red','blue','yellow','white'],columns=['ball','pen','pencil','paper'])
传入行索引可以删除行:
data.drop(['blue','yellow'])
删除列,指定列索引,而且选用axis=1:
data.drop(['pen','paper'],axis=1)
2.数据对齐和算术:
pandas可以将两个数据的索引对齐;在算术的时候,如果一个索引,两个数据结构都有,就把它们元素运算,否则结果显示为NaN。
data1=pd.DataFrame(np.arange(16).reshape((4,4)),index=['red','blue','yellow','white'],columns=['ball','pen','pencil','paper'])
data2=pd.DataFrame(np.arange(12).reshape((4,3)),index=['blue','green','white','yellow'],columns=['mug','pen','ball'])
print(data1+data2)
结果:
ball mug paper pen pencil
blue 6.0 NaN NaN 6.0 NaN
green NaN NaN NaN NaN NaN
red NaN NaN NaN NaN NaN
white 20.0 NaN NaN 20.0 NaN
yellow 19.0 NaN NaN 19.0 NaN
算术运算也可以用下面几个函数:
add() #data1.add(data2)
sub()
div()
mul()
DataFrame和Series数据结构间的运算:
ser=pd.Series(np.arange(4),index=['ball','pen','pencil','paper'])
print(data1-ser)
结果为:
ball pen pencil paper
red 0 0 0 0
blue 4 4 4 4
yellow 8 8 8 8
white 12 12 12 12
如上,DataFrame所有的元素都减去了Series里面与之相同的所有的元素。
3.操作元素的函数:
统计函数:sum(), mean(), max(), min(), describe().
其中describe()可以一次计算出多个统计量,包括四分位数。
print(data1.mean())
结果为:
ball 6.0
pen 7.0
pencil 8.0
paper 9.0
dtype: float64
----------
print(data1.describe())
结果为:
ball pen pencil paper
count 4.000000 4.000000 4.000000 4.000000
mean 6.000000 7.000000 8.000000 9.000000
std 5.163978 5.163978 5.163978 5.163978
min 0.000000 1.000000 2.000000 3.000000
25% 3.000000 4.000000 5.000000 6.000000
50% 6.000000 7.000000 8.000000 9.000000
75% 9.000000 10.000000 11.000000 12.000000
max 12.000000 13.000000 14.000000 15.000000
---------
apply() 自定义函数来计算行列函数:
def f(x):
return x.max()-x.min()
result=data1.apply(f)
print(result)
这个函数对一维数列组计算,返回一个结果为一个数值:
ball 12
pen 12
pencil 12
paper 12
dtype: int64
-----
也可以对行进行运算,添加axis=1就可以对行进行运算:
def f(x):
return x.max()-x.min()
result=data1.apply(f,axis=1)
print(result)
结果为:
red 3
blue 3
yellow 3
white 3
dtype: int64
------
通过自定义函数,apply()也可以得到DataFrame返回对象:
def f(x):
return pd.Series([x.min(),x.max()],index=['min','max'])
result=data1.apply(f)
print(result)
上面函数得到一列的最小值和最大值,结果为:
ball pen pencil paper
min 0 1 2 3
max 12 13 14 15