這一次要和大家分享的是Pandas的基本功能徘意。我們將了解與Series或DataFrame中數(shù)據(jù)交互的基礎(chǔ)機制汁雷。
重建索引
reindex 是re-index 的合成净嘀,這樣我們就可以很好地理解reindex這個方法的功能了!沒錯侠讯,就是創(chuàng)建一個符合新索引的新對象挖藏。我們用例子來說明這個方法。
In[1]:import pandas as pd
In[2]:s1= pd.Series([1,3,5,7],['d','b','a','c'])
In[3]:s1
out[3]:d 1
b 3
a 5
c 7
dtype: int64
現(xiàn)在我們調(diào)用reindex方法:
In[4]:s2 = s1.reindex(['a','b','c','d'])
In[5}:s2
out[5]: a 5
b 3
c 7
d 1
dtype: int64
如果我們在重建索引的過程中厢漩,引入了之前并不存在的索引膜眠,則會引入缺失值:
In[6]:s3 = s1.reindex(['a','b','c','d','e'])
In[7]:s3
out[7]:a 5.0
b 3.0
c 7.0
d 1.0
e NaN
dtype: float64
在s3重建索引的過程中,我們引入了之前沒有的索引‘e’溜嗜,我們可以看到宵膨,s3中引入了缺失值NaN.
對于一些順序數(shù)據(jù),例如時間序列數(shù)據(jù)炸宵,我們在重新構(gòu)建順序的時候柄驻,可能會需要進行插值或填充,那么我們怎么處理這樣的問題呢焙压?如果我們直接指定新的索引鸿脓,然后對新的索引進行賦值,這樣不失為一種解決辦法涯曲。我們以s3為例野哭。
In[8]:s3['e'] = 9
In[9]:s3
out[9]:a 5.0
b 3.0
c 7.0
d 1.0
e 9.0
dtype: float64
但還有沒其他方法呢?我們可以用一個常量來填充缺失值幻件,這時可以使用fillna方法拨黔。
In[10]:s3.fillna(11)
In[11]:s3
out[11]:a 5.0
b 3.0
c 7.0
d 1.0
e 9.0
dtype: float64
請仔細觀察下面的結(jié)果哦安寺!
In[12]:s4 = s1.reindex(['a','b','c','d','e','f'])
In[13]:s4
out[13]:
a 5.0
b 3.0
c 7.0
d 1.0
e NaN
f NaN
dtype: float64
In[14]:s4.fillna(11)
In[15]:s4
out[15]:
a 5.0
b 3.0
c 7.0
d 1.0
e 11.0
f 11.0
dtype: float64
我們發(fā)現(xiàn)兩個缺失值都被填充成了我們所填充的常數(shù)魂奥,于是我們就歸納出fillna方法的作用——對所有缺失值進行填充昔期。但填充的結(jié)果取決于我們指定的數(shù)字敢会。
In[16]:s4.fillna(11.13)
In[17]:s4
out[17]:
a 5.00
b 3.00
c 7.00
d 1.00
e 11.13
f 11.13
dtype: float64
可以看到我們指定不同的數(shù)字,那么fillna按順序?qū)θ笔е颠M行填充园欣。
我們還可以用原有數(shù)據(jù)進行填充锭汛。
In[18]:s5 = s1.reindex(['a', 'e', 'b', 'f', 'c', 'd'])
In[19]:s5
out[19]:
a 5.0
e NaN
b 3.0
f NaN
c 7.0
d 1.0
dtype: float64
In[20]:s5.fillna(method='ffill')#向前填充
In[21]:s5.fillna(method = 'bfill')#向后填充
我們看到昵慌,e和f的缺失值都分別用它們前面的數(shù)字填充了秃臣!
我們看到涧衙,e和f的缺失值都分別用它們后面的數(shù)字填充了哪工!
關(guān)注公眾號“神經(jīng)網(wǎng)絡(luò)與深度學習”獲取更多精彩內(nèi)容!