首页
学习
活动
专区
圈层
工具
发布

python pandas 基础之二

1.删除

代码语言:javascript
复制
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'])

传入行索引可以删除行:

代码语言:javascript
复制
data.drop(['blue','yellow'])

删除列,指定列索引,而且选用axis=1:

代码语言:javascript
复制
data.drop(['pen','paper'],axis=1)

2.数据对齐和算术:

pandas可以将两个数据的索引对齐;在算术的时候,如果一个索引,两个数据结构都有,就把它们元素运算,否则结果显示为NaN。

代码语言:javascript
复制
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)

结果:

代码语言:javascript
复制
        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数据结构间的运算:

代码语言:javascript
复制
ser=pd.Series(np.arange(4),index=['ball','pen','pencil','paper'])

print(data1-ser)

结果为:

代码语言:javascript
复制
        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()可以一次计算出多个统计量,包括四分位数。

代码语言:javascript
复制
print(data1.mean())

结果为:

代码语言:javascript
复制
ball      6.0
pen       7.0
pencil    8.0
paper     9.0
dtype: float64

----------

代码语言:javascript
复制
print(data1.describe())

结果为:

代码语言:javascript
复制
            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() 自定义函数来计算行列函数:

代码语言:javascript
复制
def f(x):
    return x.max()-x.min()
result=data1.apply(f)

print(result)

这个函数对一维数列组计算,返回一个结果为一个数值:

代码语言:javascript
复制
ball      12
pen       12
pencil    12
paper     12
dtype: int64

-----

也可以对行进行运算,添加axis=1就可以对行进行运算

代码语言:javascript
复制
def f(x):
    return x.max()-x.min()
result=data1.apply(f,axis=1)

print(result)

结果为:

代码语言:javascript
复制
red       3
blue      3
yellow    3
white     3
dtype: int64

------

通过自定义函数,apply()也可以得到DataFrame返回对象

代码语言:javascript
复制
def f(x):
    return pd.Series([x.min(),x.max()],index=['min','max'])
result=data1.apply(f)

print(result)

上面函数得到一列的最小值和最大值,结果为:

代码语言:javascript
复制
     ball  pen  pencil  paper
min     0    1       2      3
max    12   13      14     15
下一篇
举报
领券