pandas(二)

pandas重索引

from pandas import DataFrame
from pandas import Series

obj = Series([1,2,3,4,5], index=['a','b','c','d','e'])
print obj
"""
输出结果为:
a    1
b    2
c    3
d    4
e    5
dtype: int64
"""

obj = obj.reindex(['b','a','c','d','e'])
print obj

"""
输出结果为:
b    2
a    1
c    3
d    4
e    5
dtype: int64
"""

如果重索引传入的索引号原在原索引中并不存在则引入空值

obj = obj.reindex(['a','b','c','d','e','f'])
print obj
"""
输出结果为:
a    1.0
b    2.0
c    3.0
d    4.0
e    5.0
f    NaN
dtype: float64
"""

我们可以控制这个引入的值是什么,默认是NaN,可以通过fill_value参数更改

obj = obj.reindex(['a','b','c','d','e','f','1'], fill_value=0)
print obj
"""
输出结果为:
a    1.0
b    2.0
c    3.0
d    4.0
e    5.0
f    NaN
1    0.0
dtype: float64
"""

函数应用和映射

frame = DataFrame(np.random.randn(4,3))
f = lambda x: x.max() - x.min()
print frame.apply(f)
"""
输出结果为:
0    1.134713
1    1.048039
2    2.054689
dtype: float64
"""

元素级的Python函数也是可以用的。

frame = DataFrame(np.random(4,3))
print frame
"""
输出结果为:
    0   1   2   3   4
0   0   1   2   3   4
1   5   6   7   8   9
2  10  11  12  13  14
"""
format = lambda x: x+x
print frame.applymap(format)
"""
输出结果为:
    0   1   2   3   4
0   0   2   4   6   8
1  10  12  14  16  18
2  20  22  24  26  28
"""

以上这些不只是可以使用lambda表达式,还可以使用def函数

排序和排名将会是我们比较常用的两种操作

obj = Series(range(4), index=['d', 'a', 'b', 'c'])
print obj.sort_index()
"""
a    1
b    2
c    3
d    0
dtype: int64
"""

面对DataFrame,则可以根据任意一个轴上的索引进行排序:

frame = DataFrame(np.arange(8).reshape(2,4), index=['three', 'one'],
                  columns = ['d','a','b','c'])
print frame.sort_index()
"""
输出结果为:
       d  a  b  c
one    4  5  6  7
three  0  1  2  3
"""
print frame.sort_index(axis=1)
"""
       a  b  c  d
three  1  2  3  0
one    5  6  7  4
"""

数据默认是按升序排序的,但也可以降序排序

print frame.sort_index(axis=1, ascending=False)
"""
输出结果为:
       d  c  b  a
three  0  3  2  1
one    4  7  6  5
"""

sort_values方法可以对Series进行按值排序

obj = Series([4,7,5,6,2])
print obj.sort_values()
"""
输出结果为:
4    2
0    4
2    5
3    6
1    7
dtype: int64
"""

在DataFrame中你可以指定一列使数据根据这一列进行排序

obj = DataFrame({'a':[1,2,5,4,3],'b':[2,5,4,6,1]})
print obj
print obj.sort_index(by='b')
'''
输出结果为:
   a  b
4  3  1
0  1  2
2  5  4
1  2  5
3  4  6
'''

你也可以通过sort_values这种方式根据多个列进行排序

obj = DataFrame({'a':[1,1,5,4,3],'b':[5,1,4,6,1]})
print obj.sort_values(by=['a','b'])
'''
输出结果为:
   a  b
1  1  1
0  1  5
4  3  1
3  4  6
2  5  4
'''

你可能感兴趣的:(pandas(二))