【Pandas】Seriesの要素数をカウントする方法

Pandas
この記事は約6分で読めます。

こんにちは、JS2IIUです。

データをSeriesに読み込んだ後、最初に行うのが要素数のカウントです。いくつかの異なるカウント方法を紹介します。Seriesを使うすべての方に向けての記事です。今回もよろしくお願いします。

.size全要素数
.shapeデータ形状(行, 列)
len()関数全要素数
.count()非欠損値の数

はじめに

Pandasは、Pythonでデータ処理を行う際に非常に便利なライブラリです。その基本構造であるSeriesは、インデックス付きの1次元データ構造で、リストや配列に似た動作を持ちます。データ処理の基本操作として、「要素数」を確認するのは重要です。特に欠損値を含むデータの場合、全ての要素数や有効な値の数を区別する必要があります。

この記事では、Seriesの要素数を取得するための4つの方法を解説します。また、「欠損値」とは何かについても詳しく触れます。具体的には以下の内容を扱います。

  • .size(全要素数)
  • .shape(データの形状を利用して要素数を取得)
  • len()関数(全要素数)
  • .count()(非欠損値の数)

欠損値(NaN)とは?

データ処理では、値が欠落している部分を「欠損値」と呼びます。欠損値は以下のような場面で発生します。

  1. データ収集時の不完全さ
    センサーの不具合や調査項目の回答漏れなどにより、値が記録されないことがあります。
  2. データ変換時の不一致
    型変換や結合操作の結果として、値が失われることがあります。
  3. 意図的な置き換え
    分析のために不適切な値を欠損値として扱うことがあります。

Pandasでは、NaN(Not a Number)が欠損値を表す標準的な記号として使われます。また、PythonのNoneもPandasでは欠損値として扱われる場合があります。

Series特有のカウント方法

Pandasでは、Seriesの要素数を取得するために以下の4つの方法が利用可能です。

1. .size

  • 概要: Series全体の要素数を返します。
  • 特長: 欠損値を含めた全ての要素数をカウントします。

2. .shape

  • 概要: Seriesの形状を表すタプルを返します。shape[0]で要素数を取得可能です。
  • 特長: .sizeと同様に、欠損値を含む全ての要素数を取得します。

3. len()

  • 概要: Series全体の要素数を返します。
  • 特長: 欠損値を含む全ての要素数をカウントします。

4. .count()

  • 概要: 非欠損値(NaNでない値)のみをカウントします。
  • 特長: 有効なデータ数を取得する際に便利です。

サンプルコード

以下のコードは、各メソッドや関数を使用してSeriesの要素数を取得する例です。

import pandas as pd
import numpy as np

# サンプルデータを作成
data = pd.Series([10, 20, 30, np.nan, 50, None, 70])

# .size を使用して全要素数を取得
total_size = data.size

# .shape を使用して全要素数を取得
total_shape = data.shape[0]

# len() を使用して全要素数を取得
total_len = len(data)

# .count() を使用して非欠損値の数を取得
non_nan_count = data.count()

# 結果を表示
print("Series 全体:")
print(data)

print("\n.size で取得した全要素数:", total_size)
print(".shape で取得した全要素数:", total_shape)
print("len() で取得した全要素数:", total_len)
print(".count() で取得した非欠損値の数:", non_nan_count)

コードの解説

サンプルデータの作成

  • pd.Seriesを使用して、整数値と欠損値(NaNNone)を含むデータを作成します。
  • 欠損値は、np.nanまたはNoneとして定義されます。

.sizeの使用

  • .sizeは欠損値を含む全ての要素数を返します。
  • このデータの場合、要素数は7になります。

.shapeの使用

  • .shapeはタプル形式でデータの形状を返します。
  • Seriesは1次元なので、shape[0]が要素数を示します。

len()の使用

  • len(data).sizeと同様に欠損値を含む全要素数を返します。

.count()の使用

  • .count()は欠損値を無視して、非欠損値(有効な値)の数を返します。
  • この場合、欠損値が2つあるため、結果は5になります。

実行結果

上記コードを実行すると、以下のような結果が得られます。

Series 全体:
0    10.0
1    20.0
2    30.0
3     NaN
4    50.0
5     NaN
6    70.0
dtype: float64

.size で取得した全要素数: 7
.shape で取得した全要素数: 7
len() で取得した全要素数: 7
.count() で取得した非欠損値の数: 5

まとめ

  • 全要素数を取得する方法
    .size, .shape[0], len()は、欠損値を含む全ての要素数を取得します。
  • 非欠損値の数を取得する方法
    .count()は欠損値を無視して、実際に有効なデータ数を取得します。
  • 欠損値を含むデータの扱い
    欠損値が含まれるデータでは、.size.count()の違いを意識することで、目的に応じた正確な情報を取得することが重要です。

参考リンク

少しだけPRです。

Pandasについて詳しく知りたいかた、もっと使いこなしたい方におすすめの本です。数年前に購入しましたが、今も手元に置いて時々見返しています。

「pandasクックブック Pythonによるデータ処理のレシピ」Theodore Petrou著、黒川利明訳。

最後まで読んでいただきありがとうございます。73

コメント

タイトルとURLをコピーしました