1. 程式人生 > >Python入門 —— Pandas Day4【轉載】

Python入門 —— Pandas Day4【轉載】

轉載於 https://mp.weixin.qq.com/s?__biz=MjM5MDEzNDAyNQ==&mid=402568021&idx=1&sn=66d5234a31f2de640baa71439f856a33&scene=21#wechat_redirect

Pandas被稱為“Python Data Analysis Li”,它:
是基於Numpy的一種工具庫;
提供了大量能使我們快速便捷處理資料的函式和方法;
最初被作為金融資料分析根據被開發出來;
集成了時間序列功能;
對缺失值的靈活處理能力;

Pandas有兩種主要的資料結構:Series和Dataframe,前者是一維的,後者是多維的(表格型)。

一、 Series

Series由一組資料和對應的索引組成,看個例子:
在這裡插入圖片描述
有點像第1天學的字典。
複習一下字典:
在這裡插入圖片描述
Series在操作上也像字典,對比一下a(字典)和b(Series):
在這裡插入圖片描述
實際上,字典也確實可以直接變身成為Series!比如下面的字典a,儲存了每個地區的平均工資,將其變為Series:
在這裡插入圖片描述

二、DataFrame

1. 資料結構

DataFrame是一個表格型的資料結構。

下面的這組資料,儲存了2015年中國人口前十的城市,以及它們擁有的人口。
在這裡插入圖片描述
那麼怎麼才能生成這樣一張表呢?最常用的方法,是用字典生成:
在這裡插入圖片描述
在這裡插入圖片描述

2. 基本操作

(1)改變索引名

剛剛的城市人口資料,我們有10個城市,索引是0~9,我們不想用這麼單調的數字來做索引,想用每個城市的簡稱來表示,和Series一樣,可以用index=來指定索引


(因為Python自帶的shell中,結果的顯示沒有ipython notebook美觀,所以下面的例子我用ipython notebook的結果來展示)
在這裡插入圖片描述

(2)增加一列

如何給DataFrame增加一列?還是以剛剛城市人口的資料pop_DF為例,我們來增加一列,給每個城市打上“China”的標記:
在這裡插入圖片描述
有時候增加的這一列不一定全,可能有缺失,比如再給每個城市增加一列歸屬省份,但是本人地理差,只知道廣州屬於廣東,蘇州屬於江蘇,那麼我可以這麼加:
在這裡插入圖片描述
總結:

  1. 可以用Series來按照索引的匹配來增加一列
  2. 缺失的地方會用NaN來表示。

(3)排序

作為統計師,排序是常見的,我想到的以後可能用到的至少有這幾種:

人為給定順序;
按照索引來自動排序:升序、降序;
按照某一變數來自動排序;

人為給定順序:
用reindex函式,可以人為的給定順序,想讓誰在前面誰就在前面。
比如,我們按照首字母來人為給定如下順序
在這裡插入圖片描述
這時我有一個問題了:要是reindex中出現了不存在的索引怎麼辦?
在這裡插入圖片描述
比如上例中pop_DF2的“Chu”,結果其所對應的全部變數都是缺失的。

按照索引自動排序:
可以用 .sort_index() 來讓資料按照索引自動排序。

在上例中,我們多了一個索引為“Chu”的空資料,並且在Bao的前面,我們再用sort_index()讓它按照字母順序自動重排一下。
在這裡插入圖片描述
這是預設的升序排列,也可以降序,只要指定ascending=False就可以:
pop_DF2.sort_index(ascending=False)

按照變數自動排序:
我們可以用 .sort_values( by = ‘’ ) 來指定某一個變數來排序:

我們回到pop_DF這個資料:
在這裡插入圖片描述

(4)刪除一列或一行

如何刪掉一行?
用 .drop() 就可以刪掉指定的索引行
比如我們想刪掉pop_DF中,人口大於2000(萬)的城市,也就是重慶和上海,對於的索引(也就是簡稱)為:Yu和Hu
在這裡插入圖片描述
如何刪掉一列?
.drop() ,指定一下要刪的列變數,並且加一句 axis=1
在這裡插入圖片描述

Pandas資料的DataFrame資料格式的魅力:
在這裡插入圖片描述
在這裡插入圖片描述

列表生成DataFrame:

在這裡插入圖片描述
在這裡插入圖片描述

字典生成DataFrame的問題

在這裡插入圖片描述

在這裡插入圖片描述