ホーム > python > pandas > pandas.DataFrame、pandas.Seriesのサイズ(行数、列数)取得

pandas.DataFrame、pandas.Seriesのサイズ(行数、列数)取得

pythonpandas

環境

今回動作の確認を行った際のバージョンは下記の通り
python:3.10.9
pandas:1.5.3
データセット:scikit-learnのirisを使用(scikit-learnは1.2.2)


pandas.DataFrameのサイズ取得

データセットの準備

まずはデータセットの準備を行います。

from sklearn.datasets import load_iris
if __name__ == '__main__':
df = load_iris(as_frame=True).frame
print(df.head())
# sepal length (cm) sepal width (cm) ... petal width (cm) target
# 0 5.1 3.5 ... 0.2 0
# 1 4.9 3.0 ... 0.2 0
# 2 4.7 3.2 ... 0.2 0
# 3 4.6 3.1 ... 0.2 0
# 4 5.0 3.6 ... 0.2 0
# [5 rows x 5 columns]


df.shapeによるサイズ取得

データフレームではpandas.DataFrame.shapeを使用することで行数と列数のタプル(行数, 列数)を取得することが出来ます。

from sklearn.datasets import load_iris
if __name__ == '__main__':
df = load_iris(as_frame=True).frame
# 行数と列数取得
print(df.shape)
# (150, 5)
size = df.shape
# 行数取得
row = size[0]
print(row)
# 150
# 列数取得
col = size[1]
print(col)
# 5

下記の様にアンパックで取得することも可能です。

from sklearn.datasets import load_iris
if __name__ == '__main__':
df = load_iris(as_frame=True).frame
# 行数と列数取得
row_2, col_2 = df.shape
print(row_2)
# 150
print(col_2)
# 5


len()によるサイズ取得

Pythonの組み込み関数len()を使用することでも行数、列数を取得することが可能です。

from sklearn.datasets import load_iris
if __name__ == '__main__':
df = load_iris(as_frame=True).frame
# 行数取得
row = len(df)
print(row)
# 150
# 列数取得
col = len(df.columns)
print(col)
# 5


df.info()によるサイズ取得

pandas.DataFrame.infoを使用することでもサイズやメモリ使用量などデータフレームの情報を取得することが出来ます。
ただし、df.shapeなどと違い結果は標準出力されるため、変数に値を格納して使用することはできません。 print()を使用しなくても標準出力されます。

from sklearn.datasets import load_iris
if __name__ == '__main__':
df = load_iris(as_frame=True).frame
# データフレームの情報取得
df.info()
# <class 'pandas.core.frame.DataFrame'>
# RangeIndex: 150 entries, 0 to 149
# Data columns (total 5 columns):
# # Column Non-Null Count Dtype
# --- ------ -------------- -----
# 0 sepal length (cm) 150 non-null float64
# 1 sepal width (cm) 150 non-null float64
# 2 petal length (cm) 150 non-null float64
# 3 petal width (cm) 150 non-null float64
# 4 target 150 non-null int32
# dtypes: float64(4), int32(1)
# memory usage: 5.4 KB


全要素数取得

pandas.DataFrame.sizeを使用することで全要素数(=行数×列数)を取得することが出来ます。 上記で取得した行数と列数をかけた値になっていることがわかります。

from sklearn.datasets import load_iris
if __name__ == '__main__':
df = load_iris(as_frame=True).frame
# 全要素数取得
ele = df.size
print(ele)
# 750


pandas.Seriesのサイズ取得

pandas.Seriesも基本的にはpandas.DataFrameと同様の方法でサイズを取得することが出来ます。
ただし、pandas.Seriesなので基本的に列数は1となるためpandas.DataFrame.shapeを使用した場合、要素数が1のタプルとなるので注意が必要です。
上記で使用したデータフレームから「sepal length (cm)」の列を抽出して使用します。

from sklearn.datasets import load_iris
if __name__ == '__main__':
df = load_iris(as_frame=True).frame
series = df['sepal length (cm)']
# 行数取得
print(series.shape)
# (150,)
size = series.shape
# 行数取得
row = size[0]
print(row)
# 150
# len()を使って行数取得
row = len(series)
print(row)
# 150
# sizeを使って全要素数取得
ele = series.size
print(ele)
# 150