PythonでDataFrameの指定列に基づいてレコード数をカウントする方法
データ分析の現場では、特定の列(カテゴリ)ごとにレコード数を集計する処理がよく求められます。Pythonのpandasライブラリを使えば、groupby()メソッドを活用することで、このような集計を簡単に実現できます。
実現したいこと
例として、「Designation(役職・職種)」列を基準にレコードをグループ化し、それぞれの件数をカウントします。最終的な出力は以下のようになります。
Designation architect 1 programmer 2 scientist 2
解決のアプローチ
この問題を解決するためには、以下の手順で進めます。
DataFrameを定義する: サンプルデータからpandasのDataFrameを作成します。
groupbyメソッドを適用する: 「Designation」列に対して
groupby()を実行し、count()で各グループのレコード数を算出します。
df.groupby(['Designation']).count()
実装例
それでは、実際のコードを見てみましょう。以下のサンプルでは、従業員IDと職種を含むDataFrameを作成し、職種ごとのレコード数を集計しています。
import pandas as pd
data = { 'Id':[1,2,3,4,5],
'Designation':
['architect','scientist','programmer','scientist','programmer']}
df = pd.DataFrame(data)
print("DataFrame is\n",df)
print("groupby based on designation:")
print(df.groupby(['Designation']).count())
出力結果
上記のコードを実行すると、次のような結果が得られます。
Designation architect 1 programmer 2 scientist 2
まとめ
pandasのgroupby()とcount()を組み合わせることで、指定した列の値ごとにレコード数を簡単に集計できます。この手法は、カテゴリ別の出現回数を調べたい場合や、データの分布を把握したい場合に非常に便利です。なお、より柔軟な集計を行いたい場合は、value_counts()やagg()といったメソッドも併せて検討してみるとよいでしょう。
-
Pythonで数Nの桁数を数えるプログラムの書き方
ある数Nが与えられたとき、その数に含まれる桁の総数を求めることを考えましょう。例えば以下のようなケースです。入力例1:N = 891452出力:6解説: 与えられた数891452は6桁の数字で構成されているため、この場合は「6」を返します。入力例2:N = 0074515出力:5解説: 先頭の0を除いた有効な桁数が5桁であるため、出力は「5」となります。この問題を解くためのアプローチこの問題は、次の手順で解決できます。数値nを入力として受け取ります。関数countDigits(n)が入力nを受け取り、桁数をカウントして返します。数値の各桁に対してループ処理を行い、カウンター変数を1ずつ増加させ
-
Pythonで整数の2進表現に含まれる1のビット数を数える方法
ある整数 n が与えられたとき、その数を2進数で表した際に含まれる「1」のビット(セットビット)の個数を求めることを考えます。この問題は「ポピュレーションカウント」や「ハミング重み」と呼ばれることもあり、ビット演算の基礎を学ぶのに最適な題材です。問題の例例えば、入力が 12 の場合を考えてみましょう。12 を2進数で表すと 1100 となり、「1」のビットは2個含まれています。したがって、出力は 2 になります。解法のアプローチこの問題は、次の手順で解くことができます。カウンター変数 count を 0 で初期化するn が 0 になるまで以下を繰り返すn の最下位ビット(n AND 1)を c