本篇將介紹當我們處理完數據後,可以對數據進行的一些計算操作。
本篇文章使用的數據為泰坦尼克的數據集,具體的數據集已經上傳至代碼倉庫,有需要的同學可以自行取用。
在正文內容開始前,小編先把數據中的表名的中英文對照列出來:
PassengerId:乘客IDSurvived:是否倖存Pclass:乘客等級(1/2/3等艙位)Name:姓名Sex:性別Age:年齡SibSp:堂兄弟/妹個數Parch:父母與小孩個數Ticket:船票信息Fare:票價Cabin:客艙Embarked:登船港口預處理
首先,我們拿到數據的第一步是先檢查一下數據質量,通過方法 info() 看下有數據質量:
上面這些數據到底說了個啥?
看過我前面文章的同學應該知道,info() 這個方法經常用作查看數據空值,很不辛,這裡有些屬性的數據不全,如:
Age(年齡)屬性只有714名乘客有記錄Cabin(客艙)更是只有204名乘客是已知的這裡我們進一步使用 describe() 看下這批數據的統計分析數據:
能看出來啥呢?
如果把目光聚焦在 mean 這一行上,可以看到大概 0.383838 的人最後獲救了,在 2 / 3 等倉的人要比 1 等倉的多得多(這不是廢話),平均年齡大概是 29.699118 (這個值計算的時候會忽略掉空值)等等。
算數運算
寫到這裡小編發現個問題,用這份數據演示算數運算屬實有點不大合適,滿臉尷尬。
小編這麼懶的人都寫到這了,肯定是不會換數據集了,各位看官就這麼湊合著看吧,先聲明一下,以下演示均無實際意義。
這一小節的標題是算數運算,那無非是加減乘除嘛,首先來看下兩列相加的示例,這裡是把堂兄弟姐妹和父母小孩加在一起,結果稍微有點意義,這個乘客的所有親屬:
兩列相減,這裡我們使用這個乘客的所有親屬再加上他本身減去存活人數,示例如下:
乘除同理,小編這裡就不演示,各位同學可以自己動手試試。
比較
這裡我們選用存活數和親屬數量做比較,幾個簡單的示例:
同理,這裡除了可以使用 > 還可以使用 >=、 != 、 < 和 <= 等運算符。
統計分析
前面我們使用 describe() 這個方法自動的獲取過當前數據集的一些統計數據,那麼我們如何手動的來獲取它呢?
統計非空值
首先是 count() 統計非空值:
求和
接下來是求和, sum 這個函數想必各位都在 Excel 中用過,那麼在 Pandas 中是如何使用的,請看下面的示例:
可以看到,在進行按列求和的時候, Pandas 把非數值類型的列直接將所有的欄位拼合在了一起,其實無太大意義。
求算數平均值
接下來是求算數平均值,這個函數是 mean() ,算數平均值有一個特點是極易受到極大極小值的影響,就比如我和小馬哥的資產平均超過了 100 億,這個其實和我基本上沒有半毛錢關係。
mean() 實際是上對每一列進行了求平均值的運算,實際上可以通過 axis 參數按行獲取平均值,不過在當前的數據集毫無意義,小編這裡就不演示了。
求最大最小值
接下來是求最大最小值,在 Excel 其實可以直接通過排序來直觀的看到某一列的最大最小值,那麼,一起看一下在 Pandas 是如何獲取這兩個值:
可以看到,在 Pandas 中獲取最大最小值是使用了兩個函數, max() 和 min() ,通過字面意思大家也懂,這裡同樣要提一下是默認是按照列來獲取最大最小值,如果有需要,也可以通過參數 axis 來按照行來獲取。
中位數
相比較前面提到過的算數平均數,中位數是一個非常不錯的反應一組數據的一般情況的一個數據,不易受到極大值和極小值的影響。
在 Pandas 中,獲取中位數是使用 median() 函數:
同樣, median() 函數也可以通過 axis 參數來按照行進行獲取。
眾數
眾數就是出現次數最多的那個數,這裡我們使用到的函數是 mode() :
方差標準差
方差和標準差其實都是用來表示數據的離散程度,標準差是方差的平方根。
在 Pandas 中,計算方差是使用 var() 函數,而計算標準差是使用 std() 函數:
各位閒著沒事兒的同學可以核實一下把標準差平方一下看看是不是方差。
反正小編怕翻車,是專門核實了一下,確實沒有問題,如果哪位同學核實出來有問題,可能是小編這臺電腦有問題。
求分位數
分位數是一種比中位數更加詳細的根據位置的指標,在統計學中,最常用的是四分位數:
第一四分位數(Q1),又稱「較小四分位數」,等於該樣本中所有數值由小到大排列後第 25% 的數字;第二四分位數(Q2),又稱「中位數」,等於該樣本中所有數值由小到大排列後第 50% 的數字;第三四分位數(Q3),又稱「較大四分位數」,等於該樣本中所有數值由小到大排列後第 75% 的數字。在 Pandas 中,獲取分位數是使用 quantile() 函數,但是在使用的過程中,一定要標識清楚去的分位數值:
這裡的驗證可以對比我們前面取出來的中位數,看下是否一致就好,如果不一致,可能需要換電腦了。
相關性
相關性運算是指兩個事務之間的關聯程度,這裡我們可以使用 corr() 函數來進行相關性運算。
使用方式:DataFrame.corr(method='pearson', min_periods=1)
參數說明:
method:可選值為 {'pearson', 'kendall', 'spearman'}
pearson:Pearson相關係數來衡量兩個數據集合是否在一條線上面,即針對線性數據的相關係數計算,針對非線性數據便會有誤差。kendall:用於反映分類變量相關性的指標,即針對無序序列的相關係數,非正太分布的數據spearman:非線性的,非正太分析的數據的相關係數我們一般比較常用的是皮爾遜相關係數:
本篇內容是真的有點長,各位慢慢看吧,小編就先溜了~~~