您好,登錄后才能下訂單哦!
小編給大家分享一下pandas新版本如何實現數據表多列頻率統計,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
pandas 以前的版本(1.1以前)中,就已經存在單列的頻率統計。
我們以泰坦尼克號罹難乘客數據為例子:
希望快速查看各個性別的記錄數:
上面顯示的是絕對數值,可以顯示占比嗎?
通過參數 normalize 可以轉換成占比
但是,以上都是針對單列的統計,很多時候我們希望對多列組合的頻率統計。
現在,pandas 1.1 版本中已為 DataFrame 追加了同名方法 value_counts,下面來看看怎么使用。
查看性別與是否生還的統計數:
第一參數為 subset ,傳入需要統計的列名的 list 即可
同樣地,通過參數可以微調輸出結果:
可以看出來男性生還率非常低
可能對于一些初學者來說會疑惑,難道舊版本得到這個結果很麻煩嗎?
其實以前的版本做到一樣的效果也是非常容易:
沒有按頻率倒序輸出?
簡單在后面"接上"排序操作,結果就一樣了:
其實還有另一種解決思路,有興趣看源碼吧
統計比例也沒有多大的事情:
那肯定用新版本的方法呀,新方法一句就做了你這么多句的事情!
但是!!!
下面,我們就來看看"自己做主"的優勢
之前在講解單列的頻率統計(Series.value_counts)時,其實遺漏了一個挺有用的參數,對于數值型的列才能使用。
希望查看年齡段的頻率(分3段吧):
bins 參數指定分3段
通常我們希望按分段排序:
參數 sort 控制是否按頻率倒序,設置為 False,則按索引排序
你是不是覺得新版本的 DataFrame.value_counts 也有這個參數呢?
很遺憾,并沒有這個參數,應該考慮到組合列的值是不能分段的。
不過對于自定義函數,當然想干啥就干啥:
由于本身 DataFrame.groupby 就可以支持混合類型的 key。因此在 key 設置時,可以是列名(一個字符串),也可以是列值,也可以是他們的混合
看完了這篇文章,相信你對“pandas新版本如何實現數據表多列頻率統計”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。