【Python入門】DataFrame内の20〜30歳の人数をカウントする方法
はじめに
データ分析の現場では、「特定の年齢層に該当するレコードは何件あるのか」を集計したい場面がよくあります。本記事では、pandasのbetween()メソッドを使って、DataFrame内の20〜30歳の人数をカウントするPythonプログラムを解説します。
入力データ
以下のようなDataFrameを想定します。
Id Age 0 1 21 1 2 23 2 3 32 3 4 35 4 5 18
出力結果
20〜30歳の合計人数は 2 人です。
解決の手順
この課題は、以下のステップで解決できます。
DataFrameを定義する
Age列が20〜30の範囲にある行だけを抽出し、結果を新しいDataFrameに格納する
最後に、抽出結果の行数を取得して件数を求める
範囲の指定にはbetween()メソッドを使用します。このメソッドは、値が指定した下限・上限の間(デフォルトでは両端を含む)に収まっているかどうかを判定できる便利な機能です。具体的には次のように記述します。
df[df['Age'].between(20, 30)]
コード例
実際の実装例を見てみましょう。
import pandas as pd
data = {'Id':[1,2,3,4,5],'Age':[21,23,32,35,18]}
df = pd.DataFrame(data)
print(df)
print("20〜30歳の人数をカウント")
result = df[df['Age'].between(20,30)]
print(len(result))実行結果
Id Age 0 1 21 1 2 23 2 3 32 3 4 35 4 5 18 20〜30歳の人数をカウント 2
補足:between()メソッドの使い方のポイント
between(20, 30)はデフォルトで両端の値(20と30)を含めて判定します。もし両端を除外したい場合は、引数にinclusive='neither'を指定してください。
また、より柔軟な条件指定が必要なケースでは、比較演算子を組み合わせる書き方も有効です。
df[(df['Age'] >= 20) & (df['Age'] <= 30)]
どちらの方法でも同じ結果が得られますが、単純な範囲指定であればbetween()の方がコードが読みやすく、意図も伝わりやすいのがメリットです。用途に応じて使い分けるとよいでしょう。
-
Pythonで行列内の「完全に囲まれた島」の数を数える方法を解説
問題の概要0と1のみで構成された2次元のバイナリ行列を考えます。ここで「1」は陸地、「0」は水を表します。島とは、隣り合った1の集まりであり、その周囲がすべて水で囲まれている領域のことです。本記事では、行列の中から端(境界)に一切接しておらず、完全に水で囲まれた島の数を数えるプログラムをPythonで実装する方法を解説します。例として、次のような入力が与えられた場合を考えてみましょう。この場合の出力は 2 となります。島は全部で3つ存在しますが、そのうち2つだけが完全に水で囲まれているためです。解法のアプローチ:DFS(深さ優先探索)この問題は、DFS(深さ優先探索)を用いることで効率的に解く
-
セットを使って文字列内の母音の数をカウントするPythonプログラム
本記事では、Pythonを使って文字列内に含まれる母音の数をカウントする方法について解説します。セット(set)を活用した効率的な実装を中心に、初心者の方にもわかりやすく説明していきます。 問題の概要 問題文:任意の文字列が与えられたとき、その文字列に含まれる母音の数をセットを使って数えます。 基本的なアプローチとしては、文字列全体を先頭から順に走査し、各文字が母音であるかどうかを判定します。母音であればカウントを1ずつ増やしていき、最終的な合計を出力します。 実装例 def vowel_count(str_): count = 0 # 母音をセットとして定義 vowe