《python数据分析》5.2.5~5.2.8

  5.2.5 算术和数据对齐

Series对象或者是DataFrame对象相加时,相同的索引标签项相加,没有的索引标签项合并到结果,值是NaN

df1 = pd.DataFrame({'A':[1,2]})

df2 = pd.DataFrame({'B':[3,4]})

df1
Out[5]: 
   A
0  1
1  2

df2
Out[6]: 
   B
0  3
1  4

df1 + df2
Out[7]: 
    A   B
0 NaN NaN
1 NaN NaN

df3 =pd.DataFrame({'A':[3,4],'C':[1,1]})

df3 + df1
Out[9]: 
   A   C
0  4 NaN
1  6 NaN

  做运算时可以传入填充值来填充NaN

比如df1.add(df2,fill_value=0)

 

5.2.5.2 DataFrame和Series间的操作

DataFrame对象的iloc取值,就是一个Series对象,当DataFrame和Series进行加减运算时,相当于DataFrame每一行和Series进行运算,这个就是广播机制

当然也可以指定在列上进行广播,DataFrame.sub(Series3,axis='index')

5.2.6 函数应用和映射

可以将函数应用到行或列上

f = lambda x: x.max() - x.min()

f
Out[13]: <function __main__.<lambda>(x)>

df1.apply(f)
Out[14]: 
A    1
dtype: int64

  当然apply可以传入 axis=‘columns’,每行进行调用

逐元素进行的函数是applymap

 

5.2.7排序和排名

调用sort_index函数进行排序,可以传递参数 axis=1是在列上进行排序,默认是0在行上进行排序

sort_values() 函数按元素进行排序

可以传入by='列名',对列进行排序

frame = pd.DataFrame({'b':[4,7,-3,2],'a':[0,1,0,1]})

frame.sort_values(by='b')
Out[17]: 
   b  a
2 -3  0
3  2  1
0  4  0
1  7  1

 可以传递多个列名

frame.sort_values(by=['a','b'])
Out[18]: 
   b  a
2 -3  0
0  4  0
3  2  1
1  7  1

  是先对 a列进行排序,如果a列中有相同的,则再按b进行排序

rank函数是对Series对象和DataFrame对象进行排名

默认没有传入参数时,有相同元素的话,是相同元素的排名相加除以个数,得出他们的排名

obj=pd.Series([7,-5,7,4,2,0,4])

obj.rank()
Out[20]: 
0    6.5
1    1.0
2    6.5
3    4.5
4    3.0
5    2.0
6    4.5
dtype: float64

  可以看到两个7的排名是6.5就是 (6+7)/2 的结果,4的排名也如此

 

posted on 2021-04-14 21:32    阅读(56)  评论(0编辑  收藏  举报

导航