PythonのPandasライブラリにおいて、DataFrameの行数を取得する方法はいくつかありますが、目的や使い方に応じて最適な方法を選ぶのがポイントです。
ここでは、代表的な方法を具体例とともに詳しく解説し、それぞれのメリットや使い分けについても触れます。
目次
方法①:len(df)
を使う【最もシンプル】
import pandas as pd
df = pd.DataFrame({
'名前': ['田中', '佐藤', '鈴木'],
'年齢': [25, 30, 22]
})
行数 = len(df)
print(行数) # 出力: 3
解説
- Python組み込み関数
len()
は、DataFrameに対して使うと「行数」を返します。 - 最もシンプルで高速な方法。
- インデックスが連番でなくても正しくカウントされます。
方法②:df.shape[0]
を使う【行数と列数の取得が目的なら】
import pandas as pd
df = pd.DataFrame({
'名前': ['田中', '佐藤', '鈴木'],
'年齢': [25, 30, 22]
})
行数 = df.shape[0]
列数 = df.shape[1]
print(f"行数: {行数}, 列数: {列数}") # 出力: 行数: 3, 列数: 2
解説
df.shape
は(行数, 列数)
のタプルを返します。df.shape[0]
で行数、df.shape[1]
で列数を取得可能。- 行数と列数を同時に知りたいときに便利です。
方法③:df.count()
を使う【欠損値を考慮した行数カウント】
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, None],
'B': [None, 2, 3]
})
# 各列の非NaN数
print(df.count())
# 出力:
# A 2
# B 2
# 非NaNのセル数が最大の列の値(行数の目安)
print(df.count().max()) # 出力: 2
解説
df.count()
は「非NaNのセルの数」を列ごとに返します。- 「完全な行の数」を数えたい場合、条件を指定してフィルタする必要があります。
方法④:len(df.index)
を使う【明示的にインデックスを参照】
import pandas as pd
df = pd.DataFrame({
'名前': ['田中', '佐藤', '鈴木'],
'年齢': [25, 30, 22]
})
行数 = len(df.index)
print(行数) # 出力: 3
解説
df.index
は行ラベル(インデックス)を表すオブジェクト。len(df)
と結果は同じですが、より明示的な書き方。- 明示的に行を対象としていることをコードで示したい場合に有効です。
補足:空のDataFrameの行数を取得した場合
import pandas as pd
df_empty = pd.DataFrame()
print(len(df_empty)) # → 0
print(df_empty.shape[0]) # → 0
print(len(df_empty.index)) # → 0
- いずれも「0」を返すため、DataFrameが空かどうかの判定にも利用できます。
条件付きで行数を数える方法
特定条件を満たす行だけ数えたい場合は、以下のようにフィルタと組み合わせます。
import pandas as pd
df = pd.DataFrame({
'名前': ['田中', '佐藤', '鈴木'],
'年齢': [25, 30, 22]
})
# 30歳以上の行だけを抽出
条件付き行数 = len(df[df['年齢'] >= 30])
print(条件付き行数) # 出力: 1
パフォーマンスについて
len(df)
やdf.shape[0]
はどちらもO(1)の定数時間で取得できるため、大規模なデータでも問題なく使えます。df.count()
は全体のスキャンが必要なので、ややコストがかかります。
まとめ表
方法 | 説明 | おすすめ用途 |
---|---|---|
len(df) | 行数をシンプルに取得 | 最も一般的 |
df.shape[0] | 行数(+列数も取得可能) | 行数・列数の把握 |
len(df.index) | インデックスの長さ | 明示的に書きたい時 |
df.count() | 非NaNセル数(列ごと) | 欠損値の確認 |
len(df[条件]) | 条件を満たす行数 | 条件付き抽出 |
おわりに
len(df)
や df.shape[0]
は覚えておくと、実務でもデバッグでも非常に便利です。
特にPandasのデータ処理パイプラインでは、途中の行数確認が分析の信頼性を左右することもあります。
以上、PythonのPandasのDataframeの行数を取得する方法についてでした。
最後までお読みいただき、ありがとうございました。