2020-04-28

從零開始學Python【4】--pandas(序列部分)


上一期我們介紹了數據分析中常用的numpy模塊,從數組的創建、元素的獲取、數學+統計函數、隨機數的生成、到外部文件的讀取。這期我們再來介紹另一個重磅的數據分析常用模塊--pandas。該模塊更像是R語言中的向量、數據框的處理,接下來我們就一一介紹里面的小知識點。

序列

序列(Series)可以理解成是R語言中的向量,Python中的列表、元組的高級版本。為什么說是高級版本呢?因為序列與上期介紹的一維數組類似,具有更好的廣播效應,既可以與一個標量進行運算,又可以進行元素級函數的計算。如下例子所示:

列表與常數10相加,報錯,顯示無法將列表與整形值連接,“+”運算在列表中是連接操作。

將上面的列表轉換成一個序列后,就可以正常的完成運算,這就是序列的廣播能力。同樣,列表也不能用于元素級的數學函數,對比如下:

除了上面介紹序列功能,再來說說其他序列常用的場景,如序列的索引、成員關系、排重、排序、計數、抽樣、統計運算等。

序列的索引:

由于序列是列表的擴張版,故序列也有一套類似于列表的索引方法,具體如下:

>need-to-insert-img

倒數的方式取元素,序列就顯得不是很方便了,我們推薦使用非常棒的iat方法,該方法不管應用于序列還是數據框都非常優秀,主要體現在簡介而高速。然而,實際工作中很少通過位置索引(下標)的方法獲取到序列中的某些元素,例如1000個元素構造的序列,查出屬于某個范圍值總不能一個個去數吧?序列提供了另一種索引的方法--布爾索引。具體用法如下:

我們知道,在R語言中一個向量的元素是否包含于另一個向量,可以使用%in%函數進行判斷,同理,Python中也有類似的方法。對于一個一維數組,in1d函數實現該功能;對于一個序列,isin方法可實現該功能。

numpy模塊中的in1d函數也可以用于序列的成員關系的比較。

如果手中有一離散變量的序列,想查看該序列都有哪些水平,以及各個水平的頻次,該如何操作?

沒錯,只要借助于unique函數(與R語言一樣的函數)實現序列的排重,獲得不同的水平值;通過使用value_counts函數(對應于R語言的table函數)對各個水平進行計數,并按頻次降序呈現。

有的時候需要對某個序列進行升序或降序排序,雖然這樣的場景并不多,但排序在數據框中的應用還是非常常用的,先來看看如何對序列進行排序:

s.sample(n=None, frac=None, replace=False, weights=None, random_state=None,axis=None)

n:指定抽取的樣本量;

frac:指定抽取的樣本比例;

replace:是否有放回抽樣,默認無放回;

weights:指定樣本抽中的概率,默認等概論抽樣;

random_state:指定抽樣的隨機種子;

抽樣也是數據分析中常用的方法,通過從總體中抽取出一定量的樣本來推斷總體水平;或者通過抽樣將數據拆分成兩部分,一部分建模,一部分測試。pandas模塊提供了sample函數(與R語言的sample函數一致)幫我們完成抽樣的任務。

由于總體就是男、女性別兩個值,故需要抽出10個樣本,必須有放回的抽,而且男女被抽中的概率還不一致,女被抽中的概率是0.8。

統計運算

pandas模塊提供了比numpy模塊更豐富的統計運算函數,而且還提供了類似于R語言中的summary匯總函數,即describe函數

其中count是序列中非缺失元素的個數。哦,對了,如何判斷一個序列元素是否為缺失呢?可以使用isnull函數,等同于R語言中的is.na函數。

除此,我們再來羅列一些常用的統計函數:

s.min() # 最小值

s.quantile(q=[0,0.25,0.5,0.75,1]) # 分位數函數

s.median() # 中位數

s.mode() # 眾數

s.mean() # 平均值

s.mad() # 平均絕對誤差

s.max # 最大值

s.sum() # 和

s.std() # 標準差s.kurtosis() # 峰度

s.cumsum() # 和的累計,返回序列

s.cumprod() # 乘積的累積,返回序列

s.product() # 序列元素乘積

s.diff() # 序列差異(微分),返回序列

s.abs() # 絕對值,返回序列

s.pct_change() # 百分比變化 ,返回序列s.corr(s2) # 相關系數

s.ptp() # 極差 R中的range函數

今天我們的內容就介紹到這邊,歡迎大家拍磚。下期我們來聊聊pandas模塊的數據框

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,119評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,382評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,038評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,853評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,616評論 6 408
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,112評論 1 323
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,192評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,355評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,869評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,727評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,928評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,467評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,165評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,570評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,813評論 1 282
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,585評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,892評論 2 372

推薦閱讀更多精彩內容