Pandas Where:Pandasのパワーを使ってNull値を管理する
Published on
データを扱うことは、私たちが行うことの中心にありますが、生のデータはしばしば乱雑で、不完全で、ヌル値が多く含まれており、処理が必要な場合があります。Proper handlingをしないと、Null値はデータ分析や機械学習のタスクを実行する際に問題を引き起こすことがあります。幸いなことに、PythonのPandasライブラリを使って、データのNull値を迅速かつ効果的に処理することができます。
この記事では、Pandas where()関数やPandasでのNull値処理のさまざまなテクニックについて説明します。PandasのDataFrameで欠損データを特定して処理する方法、Null値を扱うための戦略、欠損値を管理するためのベストプラクティスなどについてカバーします。
Pythonで簡単にデータビジュアライゼーションを作成したいですか?
PyGWalkerは、Jupyter Notebookベースの環境内でデータの分析と可視化のワークフローを迅速化するのに役立つオープンソースのPythonプロジェクトです。
[PyGWalker](https://github.com/Kanaries/pygwalker)は、Pandas (opens in a new tab) Dataframe(またはPolars Dataframe)をビジュアル UIに変換して、変数をドラッグアンドドロップしてグラフを簡単に作成できるようにします。次のコードを使用してください。
pip install pygwalker
import pygwalker as pyg
gwalker = pyg.walk(df)
今すぐオンラインノートブックでPyGWalkerを実行できます:
そして、GitHubで⭐️を忘れずに!
Pandas DataFrameで欠損データを特定して処理する
データを扱う際に、最も一般的なタスクの1つは、欠損データをチェックすることです。 Pandasは、isnull()、notnull()などの欠損値を特定するためのいくつかの方法を提供しており、これらはDataFrameの値のいずれかがNullかどうかを示すブール値を返します。これらの関数を使って、データに欠損値があるかどうかをすぐに見つけることができます。
たとえば、いくつかのNull値を含み、いくつかの列を持つDataFrameがあるとします。
import pandas as pd
import numpy as np
data = {'name': ['Alice', 'Bob', 'Charlie'],
'age': [25, np.nan, 30],
'gender': ['F', 'M', 'M'],
'income': [50000, 60000, np.nan]}
df = pd.DataFrame(data)
私たちのDataFrameで欠損値を確認するには、isnull()関数をDataFrame全体に適用することができます。
print(df.isnull())
これにより、Trueがnull値を表し、Falseが非null値を表す元のDataFrameと同じ形状のDataFrameが返されます。
DataFrameの各列の欠損値の数を数えるには、isnull()関数を適用した後にsum()メソッドを使用することができます。
print(df.isnull().sum())
これにより、インデックスが列名で値が各列の欠損値の数であるSeriesオブジェクトが返されます。
また、dropna()メソッドを使用して、null値を含む行または列を削除することもできます。このメソッドは、少なくとも1つのnull値を含む任意の行または列を削除します。
df.dropna()
代わりに、fillna()関数を使用して、null値を特定の値で置き換えることもできます。
df.fillna(0)
これらは、null値を識別および処理するためにPandasで使用可能なメソッドの一部の例です。包括的なリストについては、Pandasドキュメントを参照してください。
PandasでのNull値の処理
Null値は、データ分析または機械学習のタスクを実行する際に課題となる場合があります。ただし、Null値を効果的に処理するために使用できる多くの戦略があります。以下にいくつかの例を示します。
補間
欠損値を処理するための一般的なテクニックの1つは、補間です。補間は、近くの行に観測された値に基づいて、欠損値を推定する統計的なテクニックです。Pandasでは、interpolate()メソッドを使用して、DataFrameで補間を実行することができます。
df.interpolate()
欠損値の埋め込み
Null値を処理するための別の戦略は、欠損値を定数または残りのデータから計算された値で埋め込むことです。fillna()メソッドを使用して、null値を特定の値で埋めることができます。
df.fillna(0)
また、残りのデータの平均値、最頻値、または中央値でnull値を埋めることもできます。
df.fillna(df.mean())
欠損値の削除
欠損値を削除することは、Null値を処理するための一般的な戦略です。dropna()メソッドを使用して、1つ以上のnull値を含むすべての行を削除することができます。
df.dropna()
また、null値を含む列を削除することもできます。
df.dropna(axis=1)
インピュテーション
インピュテーションは、観測データに基づいて欠損値を推定する技術です。Pandasでは、scikit-learnパッケージを使用してインピュテーションを実行することができます。
from sklearn.impute import SimpleImputer
imp = SimpleImputer(missing_values=np.nan, strategy='mean')
df[['age', 'income']] = imp.fit_transform(df[['age', 'income']])
これらは、Pandasでnull値を扱うための多数の戦略のうち、わずかな例です。適切な戦略は、特定の問題と欠損データの性質によって異なります。
Pandasでの欠損値管理のベストプラクティス
欠損データを扱うことは課題ですが、いくつかのベストプラクティスがあります。以下は、Pandasでnull値を管理するためのいくつかのヒントです。
- どの解析を行う前にも必ず欠損データを確認します。
- 記述統計を使用してデータの分布と外れ値を理解します。
- 補間、インピュテーション、または欠損値の削除など、異なる欠損データを処理する戦略を考慮します。
- 異なる戦略の潜在的な影響と、それらが解析にどのように影響するかに注意してください。
- データ可視化ツールを使用して、データの性質と分布について洞察を得ます。
- 解析で欠損値とそれらがどのように処理されたかを文書化します。
これらのベストプラクティスに従うことで、データの欠損値をより良く管理し、効果的なデータ解析や機械学習タスクを実行できます。
結論
null値はデータを扱う際に課題となりますが、Pandasを使用することで、欠損データを識別し、処理するための強力なツールセットにアクセスできます。この記事では、Pandasのwhere()関数やその他のテクニックや戦略など、null値を扱う方法を探りました。これらの方法を適用し、ベストプラクティスに従うことで、データのnull値をより良く管理し、有効なデータ解析や機械学習タスクを実行できます。