Python
 Computer >> コンピューター >  >> プログラミング >> Python

【Python Pandas】pdpipeでパイプラインを作成し、DataFrameから行を削除する方法

Pandas DataFrameから特定の行を削除したい場合、pdpipeライブラリが提供するValDrop()メソッドを使うと、パイプライン処理として簡潔に実装できます。この記事では、すでに作成済みのDataFrameから行を削除する手順を、サンプルコードと実行結果とともにわかりやすく解説します。

必要なライブラリのインポート

まず、pdpipeとpandasをそれぞれ別名(エイリアス)をつけてインポートします。

import pdpipe as pdp
import pandas as pd

DataFrameの作成

次に、サンプル用のDataFrameを作成します。ここでは「Car(車種)」と「Units(台数)」の2つの列を持つデータを用意しました。

dataFrame = pd.DataFrame(
    {
        "Car": ['BMW', 'Lexus', 'Audi', 'Mustang', 'Bentley', 'Jaguar'],
        "Units": [100, 150, 110, 80, 110, 90]
    }
)

ValDrop()メソッドで行を削除する

ValDrop()メソッドは、第1引数に削除したい値のリスト、第2引数に対象となる列名を指定します。以下のコードでは、「Car」列の値が「Jaguar」である行を削除しています。

dataFrame = pdp.ValDrop(['Jaguar'], 'Car').apply(dataFrame)

このように、pdpipeでは「ValDrop(条件).apply(DataFrame)」という形式でパイプラインを構築し、そのままDataFrameに適用できるのが特徴です。複数の処理を連結したパイプラインを作れば、データ前処理の流れを一括で管理できます。

完全なコード例

以下は、新しい列の追加から行の削除までを行う完全なサンプルコードです。

import pdpipe as pdp
import pandas as pd

# 在庫状況を判定する関数
# 100台以上なら "OverStock"、未満なら "UnderStock" を返す
def demo(x):
    if x >= 100:
        return "OverStock"
    else:
        return "UnderStock"

# DataFrameを作成
dataFrame = pd.DataFrame(
    {
        "Car": ['BMW', 'Lexus', 'Audi', 'Mustang', 'Bentley', 'Jaguar'],
        "Units": [100, 150, 110, 80, 110, 90]
    }
)

print("DataFrame ...\n", dataFrame)

# 既存の列 "Units" の値をもとに、新しい列 "Stock" を追加
dataFrame['Stock'] = dataFrame['Units'].apply(demo)

print("\n 新しい列を追加したDataFrame...\n", dataFrame)

# pdp(pdpipe)を使って行を削除
dataFrame = pdp.ValDrop(['Jaguar'], 'Car').apply(dataFrame)
print("\n 行を削除した後のDataFrame...\n", dataFrame)

実行結果

上記のコードを実行すると、次のような出力が得られます。

DataFrame ...
        Car   Units
0      BMW     100
1    Lexus     150
2     Audi     110
3  Mustang      80
4  Bentley     110
5   Jaguar      90

 新しい列を追加したDataFrame...
        Car   Units       Stock 
0      BMW     100   OverStock
1    Lexus     150   OverStock
2     Audi     110   OverStock
3  Mustang      80  UnderStock
4  Bentley     110   OverStock
5   Jaguar      90  UnderStock

 行を削除した後のDataFrame...
        Car   Units       Stock
0      BMW     100   OverStock
1    Lexus     150   OverStock
2     Audi     110   OverStock
3  Mustang      80  UnderStock
4  Bentley     110   OverStock

まとめ

pdpipeのValDrop()メソッドを使えば、特定の列の値に一致する行を簡単に削除できます。「Jaguar」の行が削除され、インデックスが振り直されたDataFrameが出力されていることが確認できました。drop()などの標準的な方法と比べ、pdpipeは前処理をパイプラインとして再利用・連結しやすい点が大きなメリットです。複数段階のデータクレンジングを行う場合に、ぜひ活用してみてください。

  1. Pythonで同じ長さの複数のリストから辞書を使ってPandas DataFrameを作成する方法

    PandasのDataFrameはさまざまな方法で作成できます。その一つが、辞書(dict)をDataFrameに変換するアプローチです。本記事では、同じ長さを持つ3つのリストをPythonの辞書にまとめ、それをPandasのデータフレームへ変換する2つの方法を解説します。 方法1:個別に宣言したリストと辞書を使う このアプローチでは、まず各リストを個別に宣言します。次に、それぞれのリストを対応するキーの値として辞書定義の中に格納し、最後に pd.DataFrame メソッドを辞書に適用してデータフレームを生成します。 コード例 import pandas as pd # 試験スケジュー

  2. 【Python】Pandas DataFrameの列名と行インデックスを変更する3つの方法

    Pandasは、Python標準ライブラリには含まれていない多彩なデータ分析機能を提供するライブラリです。その代表的な機能の一つがデータフレーム(DataFrame)の利用です。データフレームは、行と列で構成される長方形のグリッド構造を持つデータ形式で、作成時に列名を決定し、以降のデータ操作ではその名前を参照して処理を行います。しかしながら、データフレームを作成した後に列名や行インデックスを変更したくなる場面は少なくありません。本記事では、Pandasで列名・行インデックスを変更する3つの方法を、具体的なコード例とともに解説します。1. rename()メソッドを使う方法rename()メソッ