【Python數據分析之pandas02】數據結構的基本功能--1

重新索引

    Series和DataFrame在創建時可以對其index屬性進行修改(DataFrame中index修改行屬性)。創建後需要對index修改需要用到reindex方法。

s1 = pd.Series([1,2,3],index=['c','a','b'])
s1.reindex(['a','b','c'])

'''
結果:
a    2
b    3
c    1
dtype: int64
'''

    如果某個索引值在原Series中不存在,就會引入缺失值NaN。一般情況下,對於有序序列,重新索引時會做插值處理。

s1 = pd.Series(['red','orange','yellow'],index=[0,2,4])
s1
'''
0       red
2    orange
4    yellow
dtype: object
'''

s1.reindex([0,1,2,3,4,5],method='ffill')
'''
0       red
1       red
2    orange
3    orange
4    yellow
5    yellow
dtype: object
'''

    其中向前填充的method是ffill,向後填充的method是bfill。

    對與DataFrame,若只傳入一個序列,則重新索引行,想要索引列需要用columns屬性。

#傳入一個數組
dict1 = {"neveda":{2001:2.4,2002:2.9},
         "ohio":{2001:1.7,2002:3.6}}
frame = pd.DataFrame(dict1)
frame.reindex([2002,2001])

    結果:


#修改columns屬性
dict1 = {"neveda":{2001:2.4,2002:2.9},
         "ohio":{2001:1.7,2002:3.6}}
frame = pd.DataFrame(dict1)
frame.reindex(index=[2002,2001],columns=['ohio','neveda'])

    結果:


    下面記錄其他一些常用的reindex屬性:

    1.fill_value:重新索引的過程中,缺失值的替代值。

    2.limit:向前填充或向後填充的最大填充量。

丟棄指定軸上的項

    採用drop方法:

s1 = pd.Series([1,2,3],index=['c','a','b'])
s1.reindex(['a','b','c'])
s1.drop('b')
'''
結果;
c    1
a    2
dtype: int64
'''

索引選取和過濾

    Series索引與Numpy數組沒什麼不同,只是Series索引不止是整數。而DataFrame的索引就是獲取整個行或列。

    Series索引需要注意的是,它的切片與數組不同,即兩側都是閉區間。

s1 = pd.Series([1,2,3],index=['c','a','b'])
s1['c':'b']
'''
c    1
a    2
b    3
dtype: int64

'''

    DataFrame索引可以通過切片或bool選取行:

data =pd.DataFrame(np.arange(16).reshape(4,4),
                index=['one','two','three','four'],
                columns=['first','second','third','forth'])
data[data['third']>5]

    結果:



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章