
同じ名前で出ていますけど…
新しい環境に入った時、例えば同郷・同大学だったりすると、身近に感じることがある。でも慣れてくるとあれっ?と。
私にとってCOUNT関数がそうかもしれない。
ExcelにおいてCOUNT関数はわかりやすい関数だった。
COUNT / COUNTA / COUNTIFの役割を理解すれば問題はなかった。
COUNT関数は数値が入力されているセルを数える。
COUNTA関数は空白ではないすべてのセルを数える。
COUNTIF関数は指定した範囲内で特定条件に一致するセルの数を数える。
この3つで足りた。
しかしPandasでははてな?と戸惑うことがある。
str.count('a')を見たとき、これはCOUNTIFではないかと。
一度「数える」ということを整理する必要がある。
AI君に質問してみた。
【AI君の回答】
***************************************************************************************
✅ExcelのCOUNT、COUNTA、Pandasのdf.count()の比較
まず、Excelでのカウントの基本と、pandasのdf.count()がそれらにどのように関連しているかを理解しましょう。
Excel COUNT: この関数は、範囲内の数値を含むセルの数をカウントします。空のセル、テキスト、論理値は無視されます。
Excel COUNTA: この関数は、範囲内の空ではないセルの数をカウントします。数値、テキスト、論理値、エラー値をカウントします。真に空のセルのみを無視します。
pandasでは、DataFrame.count()メソッドはExcelのCOUNTAと似ています。デフォルトでは、各列(またはaxis=1を指定した場合は行)の非NaN(欠損値ではない)の値をカウントします。
✅ExcelのCOUNTIFとPandasの条件付きカウントの比較
Excel COUNTIF: この関数は、単一の条件を満たす範囲内のセルの数をカウントします。例えば、COUNTIF(A:A, ">5")は、A列で5より大きいセルの数をカウントします。
pandasには直接的なCOUNTIF関数はありませんが、ブールインデックスとsum()メソッドを使用することで同じ機能を実現できます。SeriesまたはDataFrameに条件を適用すると、ブールSeries/DataFrameが返されます(条件を満たす行はTrue、そうでない行はFalse)。数値演算ではTrueが1として、Falseが0として扱われるため、このブールSeriesを合計すると、Trueの値の数(つまり、条件を満たす行の数)が得られます。
例 1: 'ColA'が3より大きい行をカウント
count_colA = (df['ColA'] > 3).sum()
例 2: 'ColB'が'apple'である行をカウント
count_colB = (df['ColB'] == 'apple').sum()
✅`Series.str.count()` の使用例
`count('a')` のような形式で利用されるのは、pandasの`str`アクセサを介した文字列メソッドです。これは、特定の文字列列(Series)内の各要素について、指定された部分文字列が何回出現するかを数えます。
例: count_char_a = df['ColB'].str.count('a')
***************************************************************************************

理解できたようでもう一息と思い、私なりの図にしてみた。

🔍さらに、私はこう覚えることにした。
マンションは何階建て? → len(df)
マンションの総戸数は? → df.size
住んでいる部屋の数は?→ count()
世代別の人数は? → value_counts()
60代以上は? → (df["年齢"] >= 60).sum()
ここまできてやっと理解できました。