pandas入门学习四

本文是学习《利用Python进行数据分析》的部分笔记,在这里感谢作者

pandas基本功能二:

1,:函数应用和映射

Numpy的ufuncs(元素级函数方法)也可以用于操作pandas对象

 

frame=DataFrame(np.random.randn(4,3),columns=list('bde'),index=['Utah','Ohio','Texas','Oregon'])

frame
Out[5]: 
               b         d         e
Utah    1.021003 -0.813102 -0.111531
Ohio   -0.450382 -0.532916  0.103158
Texas  -0.539250 -0.686338 -3.314287
Oregon -0.173919  0.566496 -0.869736

np.abs(frame)
Out[6]: 
               b         d         e
Utah    1.021003  0.813102  0.111531
Ohio    0.450382  0.532916  0.103158
Texas   0.539250  0.686338  3.314287
Oregon  0.173919  0.566496  0.869736

另一个常见的操作是:将函数应用到由各列或者各行所形成的一维数组上。DataFrame的apply方法即可实现此功能:

 

 

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

frame.apply(f)
Out[8]: 
b    1.560253
d    1.379598
e    3.417445
dtype: float64
frame.apply(f,axis=1)
Out[9]: 
Utah      1.834105
Ohio      0.636073
Texas     2.775037
Oregon    1.436232
dtype: float64

许多最为常见的数组统计功能都被实现为DataFrame的方法(如sum和mean),因此无需使用apply方法。

 

除标量值外,传递给apply的函数还可以返回由多个值组成的Series:

 

def f(x):
    return Series([x.min(),x.max()],index=['min','max'])


frame.apply(f)
Out[14]: 
            b         d         e
min -0.539250 -0.813102 -3.314287
max  1.021003  0.566496  0.103158

此外,元素级的Python函数也是可以用的,加入你想得到frame中各个浮点值的格式化字符串,使用applymap即可:

 

 

format=lambda x: '%.2f' % x
frame.applymap(format)
Out[17]: 
            b      d      e
Utah     1.02  -0.81  -0.11
Ohio    -0.45  -0.53   0.10
Texas   -0.54  -0.69  -3.31
Oregon  -0.17   0.57  -0.87

之所以叫做applymap,是因为Series有一个应用于元素级函数的map方法:

 

 

frame['e'].map(format)
Out[18]: 
Utah      -0.11
Ohio       0.10
Texas     -3.31
Oregon    -0.87
Name: e, dtype: object

2.排序和排名:

 

sort_index方法·用于对列名或者行名进行排序:有两个参数,一个是axis,另一个是ascending。默认等于true表示升序排列,等于false表示降序。

 

frame=DataFrame(np.arange(8).reshape((2,4)),index=['three','one'],columns=['d','a','b','c'])

frame
Out[20]: 
       d  a  b  c
three  0  1  2  3
one    4  5  6  7

frame.sort_index()
Out[21]: 
       d  a  b  c
one    4  5  6  7
three  0  1  2  3

frame.sort_index(axis=1)
Out[22]: 
       a  b  c  d
three  1  2  3  0
one    5  6  7  4

若要按值对Series进行排序,可以用其sort_values()方法:

 

obj=Series([4,7,-3,2])
obj.sort_values()
Out[25]: 
2   -3
3    2
0    4
1    7
dtype: int64

在DataFrame中,可以根据一个或者多个列中的值进行排序,将一个或者多个列的名字传递给by选项即可达到该目的:

 

 

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

三:带有重复值的索引:

 

便签唯一不是强制性的:索引的is_unique属性可以告诉你它的值是否是唯一的:

 

obj=Series(range(5),index=['a','a','b','b','c'])

obj.index.is_unique
Out[33]: False

 

 

 

 

 

 

 

 

 

 

 

 

 









 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值