利用Python进行数据分析_Pandas_基础_2

python学习网 2018-02-10 16:36:02

基本功能

重新索引

Series的reindex方法

In [15]: obj = Series([3,2,5,7,6,9,0,1,4,8],index=['a','b','c','d','e','f','g',
    ...: 'h','i','j'])

In [16]: obj1 = obj.reindex(['a','b','c','d','e','f','g','h','i','j','k'])

In [17]: obj1
Out[17]:
a    3.0
b    2.0
c    5.0
d    7.0
e    6.0
f    9.0
g    0.0
h    1.0
i    4.0
j    8.0
k    NaN
dtype: float64

新索引值当前值缺失,则需要插值

前向值填充method=’ffill’,最后索引j对应的值来填充

In [19]: obj1 = obj.reindex(['a','b','c','d','e','f','g','h','i','j','k'],metho
    ...: d='ffill')

In [20]: obj1
Out[20]:
a    3
b    2
c    5
d    7
e    6
f    9
g    0
h    1
i    4
j    8
k    8
dtype: int64

前向值搬运method=’pad’,最后索引j对应的值来填充

In [23]: obj1 = obj.reindex(['a','b','c','d','e','f','g','h','i','j','k'],metho
    ...: d='pad')

In [24]: obj1
Out[24]:
a    3
b    2
c    5
d    7
e    6
f    9
g    0
h    1
i    4
j    8
k    8
dtype: int64

后向值填充method=’bfill’,最后索引j的后面的索引对应的值来填充,j的后一个位置为NaN的空行

In [62]: obj2 = obj.reindex(['a','b','c','d','e','f','g','k','h','i','j'],metho
     ...: d='bfill')

In [63]: obj2
Out[63]:
a    3.0
b    2.0
c    5.0
d    7.0
e    6.0
f    9.0
g    0.0
k    NaN
h    1.0
i    4.0
j    8.0
dtype: float64

后向值搬运method=’backfill’,最后索引j的后面的索引对应的值来填充,j的后一个位置为NaN的空行

In [64]: obj2 = obj.reindex(['a','b','c','d','e','f','g','k','h','i','j'],metho
    ...: d='backfill')

In [65]: obj2
Out[65]:
a    3.0
b    2.0
c    5.0
d    7.0
e    6.0
f    9.0
g    0.0
k    NaN
h    1.0
i    4.0
j    8.0
dtype: float64

DataFrame的reindex方法

修改(行)索引、列,或两个都修改。

引入一个序列,则重新索引行,如下:

In [86]: data = {'class':['语文','数学','英语'],'score':[120,130,140]}

In [87]: frame = DataFrame(data)

In [88]: frame
Out[88]:
  class  score
0    语文    120
1    数学    130
2    英语    140

In [89]: frame2 = frame.reindex([0,1,2,3])

In [90]: frame2
Out[90]:
  class  score
0    语文  120.0
1    数学  130.0
2    英语  140.0
3   NaN    NaN

行、列 都修改

In [94]: frame3 = frame.reindex(index=[11,22,33],columns = ['a','b','c','d'])

In [95]: frame3
Out[95]:
     a   b   c   d
11 NaN NaN NaN NaN
22 NaN NaN NaN NaN
33 NaN NaN NaN NaN

reindex的参数如下:

image

删除指定轴(索引)上的项

Series

In [112]: obj = Series([1,2,3,4],index=['a','b','c','d'])

In [113]: obj
Out[113]:
a    1
b    2
c    3
d    4
dtype: int64

In [114]: obj1 = obj.drop('c')

In [115]: obj1
Out[115]:
a    1
b    2
d    4
dtype: int64

DataFrame

删除单索引行

In [109]: frame
Out[109]:
  class  score
0    语文    120
1    数学    130
2    英语    140

In [110]: obj = frame.drop(0)

In [111]: obj
Out[111]:
  class  score
1    数学    130
2    英语    140

删除多索引行

In [119]: frame
Out[119]:
  class  score
0    语文    120
1    数学    130
2    英语    140

In [120]: frame.drop([1,2])
Out[120]:
  class  score
0    语文    120

删除多索引行(带axis)

In [130]: frame
Out[130]:
  class  score
0    语文    120
1    数学    130
2    英语    140

In [131]: frame.drop([1,2],axis=0)
Out[131]:
  class  score
0    语文    120

删除列(columns)(带axis)

In [135]: frame
Out[135]:
  class  score
0    语文    120
1    数学    130
2    英语    140

In [136]: frame.drop(['class'],axis=1)
Out[136]:
   score
0    120
1    130
2    140

其中,axis=0,表示行,axis=1,表示列

阅读(755) 评论(0)