【Python】PandasのDataFrameで数値データの判定を簡単に行う方法と実践例

はじめに

データ分析では、データの質を確認するために、数値データの判定が必要となります。Pandasを用いれば、データフレームの列を簡単に判定できます。本記事では、Pandasを用いてデータフレームの列が数値データかどうかを判定する方法を解説します。

数値データの判定の重要性とPandasでの扱い方

数値データが適切でないと、データ分析の結果に大きな影響を与えます。たとえば、数値データが文字列である場合、その列を対象とした統計処理や可視化ができません。数値データの判定は、データ分析における大切な前処理の一つです。

Pandasは、データフレームの操作に優れたライブラリです。Pandasを用いれば、データフレームの列の型を確認し、数値データであるかどうかを判定できます。

データフレームの作成と数値データの準備

まずは、データフレームを作成し、数値データの準備を行います。

import pandas as pd
# データフレームの作成
df = pd.DataFrame({
    '数値データ1': [1, 2, 3, 4, 5],
    '数値データ2': [1.1, 2.2, 3.3, 4.4, 5.5],
    '文字列データ1': ['a', 'b', 'c', 'd', 'e'],
    '文字列データ2': ['apple', 'banana', 'cherry', 'durian', 'eggplant']
})

# データフレームの表示
print(df)

実行結果:

   数値データ1  数値データ2 文字列データ1   文字列データ2
0       1     1.1       a     apple
1       2     2.2       b    banana
2       3     3.3       c    cherry
3       4     4.4       d    durian
4       5     5.5       e  eggplant

データフレームには、数値データと文字列データが混在しています。

数値データの判定を行う方法:apply関数と自作関数の活用

次に、データフレームの列が数値データであるかどうかを判定する方法を解説します。Pandasには、apply関数を用いることで、データフレームの各要素に対して処理を行うことができます。数値データかどうかを判定する自作関数を作成し、apply関数で適用します。

# 数値データかどうかを判定する自作関数
def is_numeric(column):
    return all(isinstance(x, (int, float)) for x in column)

# apply関数で自作関数を適用
is_numeric_col = df.apply(is_numeric)

# 結果の表示
print(is_numeric_col)

実行結果:

数値データ1     True
数値データ2     True
文字列データ1    False
文字列データ2    False
dtype: bool

apply関数で自作関数を適用することで、各列の要素を一括して数値データかどうかを判定できました。

条件に応じたデータフレームの絞り込みと抽出

次に、数値データである列だけを抽出する方法を解説します。is_numeric_colを利用して、数値データである列を選択します。

# 数値データである列の抽出
numeric_columns = df.columns[is_numeric_col]

# 数値データである列の表示
print(numeric_columns)

# 数値データである列のみを抽出
numeric_df = df[numeric_columns]

# 数値データである列のみを表示
print(numeric_df)

実行結果:

Index(['数値データ1', '数値データ2'], dtype='object')
   数値データ1  数値データ2
0         1       1.1
1         2       2.2
2         3       3.3
3         4       4.4
4         5       5.5

is_numeric_colを用いて、数値データである列を選択し、抽出しました。

数値データ判定時の注意点とエラー対処法

最後に、数値データの判定時に注意すべき点とエラーの対処法について解説します。

  • 型変換による誤判定の防止
    数値データと文字列データは、Pandasでの型が異なります。したがって、列の型を変換した場合、数値データと認識されるようになります。例えば、df[‘数値データ1’] = df[‘数値データ1’].astype(str)として、数値データを文字列データに変換した場合、数値データであるはずの列が誤って文字列データと判定されます。型変換を行う場合は、注意が必要です。

まとめ

Pandasを用いることで、データフレームの列が数値データかどうかを簡単に判定できます。apply関数を活用し、自作関数を作成することで、数値データの判定を効率的に行うことができます。数値データの判定には注意が必要ですが、Pandasを使いこなすことで、データ分析の前処理がスムーズに行えるようになります。