PythonのPandasのshapeメソッドについて

Python,イメージ

AI実装検定のご案内

PythonのPandasにおける shape 属性(「メソッド」ではなく正確には「属性」)について、詳しく解説します。

目次

基本的な概要

  • shape は、DataFrameSeries行数と列数をタプル(tuple)で返す属性 です。
  • 形式: DataFrame.shape # (行数, 列数) Series.shape # (要素数, )

例えば:

import pandas as pd

# サンプルのDataFrameを作成
df = pd.DataFrame({
    "name": ["Alice", "Bob", "Charlie"],
    "age": [25, 30, 35],
    "city": ["Tokyo", "Osaka", "Nagoya"]
})

print(df.shape)  # (3, 3)

ここでは 3行3列 なので (3, 3) が返ります。

DataFrameとSeriesの違い

  • DataFrameの場合
    shape(行数, 列数) の2要素タプルを返す。 df.shape # 例: (3, 3)
  • Seriesの場合
    shape(要素数,) の1要素タプルを返す。 s = pd.Series([10, 20, 30, 40]) print(s.shape) # (4,)

利用シーン

データのサイズ確認

データ分析の最初に「どのくらいの規模か」をざっくり把握できる。

import pandas as pd

df = pd.DataFrame({
    "A": range(5),
    "B": range(5, 10)
})

rows, cols = df.shape
print(f"行数: {rows}, 列数: {cols}")  # 行数: 5, 列数: 2

データ処理の途中でのチェック

クリーニングや加工の過程で、行数・列数が想定通り変化しているかを検証できる。

import pandas as pd
import numpy as np

df = pd.DataFrame({
    "A": [1, 2, np.nan, 4, 5],
    "B": [10, 20, 30, np.nan, 50]
})

print("前処理前:", df.shape)  # (5, 2)

# 欠損値を含む行を削除
df = df.dropna()

print("前処理後:", df.shape)  # (3, 2)

データフレームの条件分岐

例えば、大きすぎるデータは処理を分割する、といった条件分岐に活用。

import pandas as pd

# 大きめのDataFrameを仮に作成
df = pd.DataFrame({"col": range(2000000)})

if df.shape[0] > 1000000:
    print("データが大きいので分割処理を行います。")
else:
    print("処理を一括で行います。")

他の類似メソッドとの違い

  • len(df)
    → 行数のみを返す。 len(df) # 行数だけ
  • df.info()
    → 行数・列数だけでなく、各列のデータ型や欠損値数も表示。 df.info()
  • df.size
    → 総要素数(行数 × 列数)を返す。 df.size
  • df.ndim
    → 次元数を返す。DataFrameなら「2」、Seriesなら「1」。

注意点

  • shapeは「メソッド」ではなく「属性」
    df.shape() ではなく df.shape と書く必要がある。
  • 戻り値はタプル
    df.shape[0] で行数、df.shape[1] で列数を取得できる。
  • 大規模データでも高速
    df.shape はメタデータから取得するので、実際にデータを走査しない。数百万行あっても即時に返る。

まとめ

  • shapeはDataFrameやSeriesのサイズ(行数・列数)をタプルで返す属性
  • DataFrame → (行数, 列数)Series → (要素数,)
  • データ規模の把握、前処理後のチェック、条件分岐などでよく使う
  • len(df)df.sizedf.info()などの関連機能と使い分けるのがポイント

以上、PythonのPandasのshapeメソッドについてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次