Pandas 概述
Pandas 包含的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)處理工具的設(shè)計(jì)使得在Python中進(jìn)行數(shù)據(jù)清洗和分析非衬阆遥快捷惊豺,Pandas經(jīng)常和其他數(shù)值工具一起使用比如Numpy和Scipy,以及數(shù)據(jù)可視化工具matplotlib一起使用禽作。
盡管Pandas采用了很多Numpy的代碼風(fēng)格尸昧,但最大的不同在于Pandas 是用來(lái)處理表格型或異質(zhì)型數(shù)據(jù)的嗎,而Numpy則相反旷偿,它更適合用來(lái)處理同質(zhì)型的數(shù)值類數(shù)據(jù)烹俗。
在下面的介紹中我們會(huì)用下面的方式去引入Pandas:
In [1]: import pandas as pd
Pandas 數(shù)據(jù)結(jié)構(gòu)介紹
要使用Pandas爆侣,你首先就得熟悉它的兩個(gè)主要數(shù)據(jù)結(jié)構(gòu):Series和DataFrame。雖然它們并不能解決所有問(wèn)題幢妄,但它們?yōu)榇蠖鄶?shù)應(yīng)用提供了一種可靠的兔仰、易于使用的基礎(chǔ)。
Series
Series是一種類似于一維數(shù)組的對(duì)象蕉鸳,它由一組數(shù)據(jù)(各種NumPy數(shù)據(jù)類型)以及一組與之相關(guān)的數(shù)據(jù)標(biāo)簽(即索引)組成乎赴。僅由一組數(shù)據(jù)即可產(chǎn)生最簡(jiǎn)單的Series:
In [2]: s1 = pd.Series([9,8,7,6])
out [2]: 0 9
1 8
2 7
3 6
dtype: int64
Series的字符串表現(xiàn)形式為:索引在左邊,值在右邊潮尝。我們沒(méi)有為數(shù)據(jù)指定索引榕吼,于是會(huì)自動(dòng)創(chuàng)建一個(gè)0到N-1(N為數(shù)據(jù)的長(zhǎng)度)的整數(shù)型索引。你可以通過(guò)Series的values和index屬性獲取其數(shù)組表示形式和索引對(duì)象:
In[3]: s1.values
out[3]: array([9,8,7,6],dtype=int64)
In[4]: s1.index
out[4]: RangeIndex(start=0, stop=4, step=1)
我們也可以創(chuàng)建一個(gè)索引序列勉失,用標(biāo)簽標(biāo)識(shí)每個(gè)數(shù)據(jù)點(diǎn):
In[5]: s2 = pd.Series([9,8,7,6],index = ['d','c','b','a'])
In[6]: s2
out[6]: d 9
c 8
b 7
a 6
dtype: int64
接下來(lái)我們就可以用數(shù)據(jù)標(biāo)簽進(jìn)行索引
In[7]: s2['a']
out[7]: 6
我們從另一個(gè)角度考慮Series可以把它看做是一個(gè)長(zhǎng)度固定且有序的字典羹蚣。
如果我們已經(jīng)有一個(gè)字典,我們可以用字典生成一個(gè)Series:
In[8]: d = {'apple':2,'orange':5,'pear':6}
In[9]: s3 = pd.Series(d)
In[10]: s3
out[10]: apple 2
orange 5
pear 6
dtype: int64
Pandas中使用isnull 和notnull 來(lái)檢查缺失數(shù)據(jù)乱凿。
我們知道在字典中的元素是無(wú)序的顽素,那在將字典序列轉(zhuǎn)化為Series時(shí)是否也是無(wú)序的?Series提供了一種可以指定順序的方法徒蟆。
In[11]: stada = ['apple','banana','orange']
In[12]: s4 = pd.Series(d,index = stada)
In[13]: s4
out[13]:apple 2.0
banana NaN
orange 5.0
dtype: float64
在上面的測(cè)試過(guò)程中胁出,我們的字典里并沒(méi)有‘banana’這個(gè)鍵,也就沒(méi)有相應(yīng)的值后专,于是在轉(zhuǎn)化的過(guò)程中必然就不存在這樣的值划鸽,于是Pandas就用NaN來(lái)標(biāo)識(shí)缺失的值。下面我們就用isnull和notnull來(lái)檢查戚哎。
In[14]: pd.isnull(s4)
out[14]: apple False
banana True
orange False
dtype: bool
In[15]: pd.notnull(s4)
out[15]:apple True
banana False
orange True
dtype: bool
Series 對(duì)象自身和其索引都有name屬性:
In[16]: s3.name = 'price'
In[17]: s3.index.name = 'fruits'
In[18]: s3
out[18]:fruits
apple 2
orange 5
pear 6
Name: price, dtype: int64
Series的索引還可以通過(guò)按位置賦值的方式進(jìn)行改變裸诽。
更多精彩內(nèi)容,關(guān)注公眾號(hào)“神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)”查看型凳!