Pandas 的 value_counts 方法

簡介

value_counts() 是 Pandas series 中很有用的方法。

它可以取得 series 中每個唯一值的出現頻率,而且還可後讓頻率以百分比的方式展示。

這篇文章說明了 value_counts() 函式的使用方式。


底下使用 gapminder 資料集來示範。

個資料集是由 Gapminder 基金會由世界中許多重要的組織 (如聯合國) 中所收集到的資料。

底下可以看到這個資料包含了世界許多國外歷年來的人口數,以及人均 GDP。




載入資料的程式碼如下所示:

使用 value_counts() 統計每個大陸中資料出現的頻率。

底下的資料顯示 Africa 的資料量最多 (624筆), Asia 次之 (396) 筆…依此類推。

Gapminder 中的資料是每個大陸 (continent) 下,再依國家 (country) 來臚列資料。

所以由統計資料也可知道 Africa 的國家最多,Asia 中次之…依此類推。

程式碼如下,其中 gapdf.continent 代表我們要在 gapdf 這個 dataframe 的 continent 欄位上做 value_counts() 的動作:


結果如下:

除了數值的資料外,也可以呈現百分比的資料,只要將 normalize 屬性設為 True 即可。

其結果如下


秀出來的資料預設是經過排序,且是由大到小排 (descending order).

如果要由「小到大排」,那就把 ascending 設為 True 即可。

其結果如下:

結論

在這篇文章中,我們介紹了 value_counts() 函式的用法。

value_counts() 可以讓我們取得 dataframe 中某個欄位中數值資料的統計結果。

在 Pandas 中,另一個可以達到同樣功能的方法為 groupby。

不過 groupby 的功能又更為強大,而且全面。

Groupby 不只能做到統計資料出現的「個數」,還可以計算資料的平均值,四分位數…等。

有興趣的網友可以參考這篇教學文件的說明


留言

這個網誌中的熱門文章

由 Pandas 的 DataFrame 中取得資料

[程式設計] C++ 的字串切割

[C++]在 cin 後呼叫 getline 所遇到的問題