【Python】Pandasで値のカウント、欠損ではない数をカウントする方法を紹介

【Python】Pandasで値のカウント、欠損ではない数をカウントする方法を紹介

この記事ではPandasにおいて値をカウントする方法、欠損ではない値をカウントする方法を紹介します。

この記事の目標
・SeriesとDataFrameで値のカウントの理解
・欠損ではない値をカウントする方法を理解

 

DataFrameとSeries型の違いがわからない人はまず以下の記事で理解しましょう!!
DataFrameとSeriesの違いを紹介
その他Pythonの記事は以下にまとめています!!

Python記事まとめ

 

[スポンサーリンク]


値をカウントする方法

SeriesDataFrameで値をカウントするにはvalue_countsメソッドを使用します。
記載方法は以下の通りで基本的にはSeries型を指定して使用します。
とはいえもちろんDataFrameで一気にカウントする方法もあるので後程紹介!

引数 初期値 説明
sort True ソートするか否かを指定
ascending False 昇順で並び変えるか否かを指定
normalize False 相対的な出現頻度にするか否かを指定
bins None 指定すると一定範囲毎にカウントする。指定する数値は区切る数。
dropna True 欠損値をカウントするか否かを指定

色々引数があるんですけど、ただ値をカウントしたいという場合は何も指定しなくてOKです!
そうではなく、色々いじりたい人は引数も是非参考にしてください。

 

確認するにあたり以下のAが2個、Bが3個、Cが1個あるSeriesを使用します。

 

引数無し

まずはシンプルに引数無しで行います。
引数無しだと各値のカウント結果をソートして返してくれます。

カウント対象

カウント実行

正しく、Bが3個、Aが2個、Cが1個とカウントして返してくれました。

 

sortオプションの使用

sortオプションソートするか否かを指定するオプションです。
Trueでソート、Falseでソートしません。
(デフォルトはTrue)

デフォルトでTrueになっているので特に指定しなくてもソートしてくれます。
そのためソートしたい場合は特に意識する必要がありません。

逆にソートしないでほしいという時だけFalseを指定してあげましょう。

Falseを指定することでソートが解除されました。

 

ascendingオプションの使用

ascendingオプションはソートを昇順にするか降順にするか指定するオプションです。
Trueで昇順、Falseで降順になります。
(デフォルトはFalse)

デフォルトでは降順となっているので、昇順にしたいという時だけ指定しましょう。

Trueに指定することで昇順で結果が返ってきました。

 

normalizeオプションの使用

normalizeオプションは結果を出現頻度で返すオプションです。
Trueで出現頻度で返すようになります。(デフォルトはFalse)
カウント結果ではなく、出現頻度を返してほしいという時にTrueで指定しましょう。

指定しない場合の結果

出現頻度に変更した結果

確かに指定することで出現頻度に変化しました。

 

binsオプションの使用

binsオプションは指定範囲内の数をカウントして返すオプションです。
使用する時はbinsで区間をいくつ区切るのかを指定します。

確認のために以下の1~100までの連続した数値を持つSeries型を使用します。

 

では試しにbinsを5で実行してみましょう。
今回は1~100なので値の範囲が20ずつで区切られて、結果も20ずつになるはずです。

結果は予想通り20ずつになりました。
均等になるように5区間に分けられてそれぞれカウントしていることがわかります。

 

dropnaオプションの使用

dropnaオプション欠損値Nanをカウントするか否かを指定するオプションです。
Trueでカウントしない、Falseでカウントします。
(デフォルトはTrue)

では確認のために以下の欠損値Nanが存在するSeriesを使用します。

何も指定しない場合はdropnaオプションがTrueなので欠損値Nanのカウントがされません。

しかしdropnaオプションをFalseにすると以下のように欠損値Nanの数もカウントして返してくれるようになります。

[スポンサーリンク]


DataFrameでカウントする

これまでSeriesの場合のみを見ていきましたが、DataFrameで一気に実行したい場合を紹介します。
確認のために以下のDataFrameを使用します。

value_countsメソッドSeriesに適用できるのでDataFrameの各列毎に実行すればなんとかできますが、まぁめんどうです。

そこでapplyメソッドを使用します。
applyメソッドSeriesにのみ使用できるメソッドをDataFrameでも適用できるようにしたい時使用します。
まさに今回は適任なわけです。

指定方法は以下の通り

では実際に使用して確認してみましょう。

実行すると0列、1列、2列のそれぞれにおいてA、B、D、Eがいくつ出現したのかを出力してくれました。
0列目においてAは2個、Bが2個、DEは無し
1列目においてAは1個、Bが1個、Dが2個、Eは無し
2列目においてAは無し、Bが1個、Dが1個、Eが2個と正しい結果です。

 

カウントする値が存在しない場合は欠損値Nanとなりますが、
欠損値Nanを指定の値で穴埋めしたい場合はfillnaメソッドを使用します。

では試しに0で穴埋めしてみましょう。

さきほどは欠損値Nanだった所が0になりました。

 

欠損ではない値のカウント

次に欠損値以外の数値の数をカウントする場合の紹介です。
欠損値以外の値の数をカウントする時はcountメソッドを使用します。

指定方法は以下の通りシンプル

確認するにあたり欠損ではない値が4個存在するSeriesを使用します。

実際にカウントを実行します。

正しく4が返ってきました。

Pandasカテゴリの最新記事