【Python 數據分析】pandas模塊


上一節,我們已經安裝了numpy,基於numpy,我們繼續來看下pandas

pandas用於做數據分析與數據挖掘

pandas安裝

使用命令

pip install pandas

 

 

出現上圖表示安裝成功。

 

pandas又兩大數據結構,數據分析相關的都圍繞着這兩種結構進行:

①Series

②DataFrame

Series用於存儲序列這樣的一維數據,DataFrame用於存儲多維數據

Series對象

主要有2個相關聯的數組組合在一起:①主元素數組 ②Index數組

index value
0 -12
1 5
2 7
3 2

 

1.聲明Series對象

image

從上圖可以看出,左側的是index,右側的是標簽對應的元素

若不指定標簽,默認的標簽是從0開始的的遞增數值標簽,最好使用有意義的便簽,用以區分和識別每個元素

image

分別查看組成Series的兩個數組,可以像下面一樣調用它的兩個屬性:index(索引)和values(元素)

image

2.選擇內部元素

image

或者直接使用index訪問

image

選擇多個元素時

image

3.元素賦值

既然知道如何選取單個元素,那么元素賦值就不言而喻了

image

使用index:

image

4.用NumPy數組或其他Series對象定義新的Series對象

4.1使用NumPy定義

image

4.2使用原有Series對象定義

image

然后,這樣做的時候千萬要小心,新的Series中的元素是引用的NumPy數組或原有Series對象中的,並不是其副本。簡而言之,如果改變原NumPy數組中的值,那么新的Series中的值也會發生改變。

image

5.篩選元素

獲取s對象中所有大於8的元素

image

6.Series對象運算和數學函數

數學中的加減乘除同樣適用Series

image

7.Series對象的組成元素

Series對象往往包含重復的元素,你很可能想知道里邊包含哪些元素,統計元素重復出現的次數或者判斷一個元素是否在Series中

image

接下來,還可以統計重復元素在在Series中出現的次數

image

isin()函數用來判斷所屬關系,也就是判斷給定的一列元素是否包含在數據結構之中,isin()函數返回布爾值

image

8.NaN

我們在做運算的時候,如果出現下面這種情況,對負數求對數會怎么樣呢?

image

NaN(not a Nmber,非數值)

當數據結構中若字段為空或者不符合數字的定義時,用這個特定的來表示

創建數據結構時,可以為缺失的項輸入np.NaN

image

isnull()和notnull()函數用來識別沒有對應元素的索引時非常好用

image

image

上面兩個函數返回兩個由布爾值組成的Series對象,其元素時True或者False取決於原Series對象是否為NaN.如果是NaN,isnull()函數值返回為True,反之。

9.Series用作字典

image

在上述例子中,索引數組用字典的鍵來填充,每個索引所對應的元素為用作索引的鍵在字典中對應的值。如遇缺失值,pandas就會為添加NaN

image

10.Series對象之間的運算

image

根據上圖我們可以看出,Series對象之間的運算

只對標簽相同的元素求和

DataFrame對象

DataFrame這種列表式數據結構跟工作表(最常見的是Excle工作表)極為相似,其設計初衷是將Series的使用場景由一維擴展到二維。

index first_name last_name sex
0 Tom Green Man
1 Json Smith Man
2 Alice Smith Woman

DataFrame有兩個索引組,第一個數組與行相關,第二個數組與列相關。

1.定義DataFrame對象

新建DataFrame對象的常用方法是傳遞一個dict對象給DataFrame()構造函數。

image

如果用來創建DataFrame對象的dict對象包含一些用不到的數據,你可以只選擇自己感興趣的東西。在DataFrame構造函數中,用column選項指定需要的列即可。

image

DataFrame對象跟Series一樣,如果Index數組沒有明確指定標簽,pandas也會為其添加一列從0開始的數值作為索引。如果要指定索引,那么只需要把標簽放在數組中,賦給index選項

image

既然有index,columns選項,那么就可以使用新方法定義DataFrame

例如:使用np.arange(16).reshape((4,4))生成一個4*4型,包含數字0~15的矩陣

image

2.選取元素

2.1獲取列名

如果想知道DataFrame對象所有列的名稱,在它上面調用columns屬性即可

image

2.2獲取索引

類似的,獲取索引列表,調用index屬性即可

image

2.3獲取元素

獲取存儲在數據結構中的元素

image

2.4獲取指定列

選擇一列

image

另一種是用列名稱作為DataFrame實例的屬性

image

2.5獲取行

至於DataFrame中的行,用ix屬性和行的索引值就能獲取

image

同時,也可以使用索引來選取行,第一個索引作為起始,第二個作為結束。

image

2.6獲取具體的元素

如果要獲取存儲在DataFrame中一個具體的元素,需要指定元素所在的列名稱與行名稱

image

3.賦值

3.1添加二級標簽

根據index與columns屬性即可對DataFrame進行賦值

使用name屬性為二級結構指定標簽

image

3.2添加新列

image

我們從上面可以看出,新增的一列全部都是America,那么我們加入需要將數組更新到這一列怎么做呢

image

3.2為DataFrame的各列賦一個Series對象也可以創建DataFrame,例如使用np.arange()函數生成一個遞增序列

image

4.元素的所屬關系

isin()函數在DataFrame中也是適用的

image

使用上述的返回結果作為條件,將得到一個新的DataFrame,其中只包含滿足條件的元素

image

5.刪除一列

使用del刪除

image

6.篩選

image

7.用嵌套字典生成DataFrame對象

image

當不存在對應元素時候,使用NaN填補

8.DataFrame轉置

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM