Skip to content

Pandas DataFrameで列を削除する方法

Updated on

データサイエンティストとして、DataFrameでのデータ操作は最も一般的な作業の1つです。データ処理ワークフローで頻繁に発生するタスクの1つは、分析に必要ない列を削除することです。このチュートリアルでは、Pandas DataFrameで列を削除する方法について説明します。列名、インデックス、および複数の列に基づく列の削除の異なる方法をカバーします。

Python Pandas Dataframeからコードなしでデータ可視化を簡単に作成したい場合は?

PyGWalkerはデータ可視化のためのPythonライブラリで、Exploratory Data AnalysisとVisualizationに使用できます。 PyGWalker (opens in a new tab)は、pandas dataframe(およびpolars dataframe)をTableauスタイルのユーザーインターフェイスに変換して、視覚的な探索のための簡略化されたJupyter Notebookデータ分析とデータ可視化ワークフローを提供できます。

PyGWalker for Data visualization (opens in a new tab)

Pandas DataFrameの概要

列と行を持つ2次元のテーブル様のデータ構造であるDataFrame。Dataframeの各列はSeriesであり、Seriesは1次元のデータ構造で、ラベルであるインデックスを伴う値の配列を保持します。また、DataFrameは行と列のインデックスを持つため、迅速かつ効率的なデータアクセスが可能です。Pandas DataFrameはPythonでデータの操作やデータの変換、データクリーニング、データ可視化などの複雑なデータ分析を実行するための強力なツールです。

Pandas DataFrameでの列の削除

Pandas DataFrameで列を削除するプロセスを始めましょう。要件に応じて、DataFrameから列を削除する方法はいくつかあります。以下でいくつかの人気のある方法を紹介します。

dropメソッドを使った列の削除

DataFrameから列を削除する最も簡単な方法は、 dropメソッドを使用することです。 axis = 1 というパラメータを持つ dropメソッドを使用して、列を削除することを示します。

# create a sample DataFrame
import pandas as pd
data = {'name': ['Alex', 'Bob', 'Clarke', 'David'], 'age': [20, 25, 19, 18],'city': ['New York', 'Paris', 'London', 'Tokyo']}
df = pd.DataFrame(data)
# drop the column 'city'
df = df.drop('city', axis=1)
print(df.head())

Output:

     name  age
0    Alex   20
1     Bob   25
2  Clarke   19
3   David   18

上記の例では、3つの列 "name"、"age"、"city" を含むサンプルDataFrameを作成しました。 dropメソッドをaxis = 1というパラメータとともに使用して、列 "city"を削除しました。その後、更新されたDataFrame "name"と"age"の2つの列のみのものを出力しました。

サブセットを使用した列の削除

DataFrameから列を削除する別の方法は、 []サブセット化のメソッドを使用して、 del文を使用することです。 del文は、DataFrameオブジェクトから直接列を削除します。

# create a sample DataFrame
import pandas as pd
data = {'name': ['Alex', 'Bob', 'Clarke', 'David'], 'age': [20, 25, 19, 18],'city': ['New York', 'Paris', 'London', 'Tokyo']}
df = pd.DataFrame(data)
# remove the column 'city'
del df['city']
print(df.head())

Output:

     name  age
0    Alex   20
1     Bob   25
2  Clarke   19
3   David   18

上記の例では、3つの列 "name"、"age"、"city" を含むサンプルDataFrameを作成しました。サブセット化のメソッド[]del文を使用して、列 "city"を削除しました。その後、更新されたDataFrame "name"と"age"の2つの列のみのものを出力しました。### 複数のカラムを削除する

DataFrame から複数のカラムを削除する必要があることがあります。複数のカラムを削除するには、drop メソッドをリスト形式で使用し、カラム名を指定します。

# サンプル DataFrame を作成する
import pandas as pd
data = {'name': ['Alex', 'Bob', 'Clarke', 'David'], 'age': [20, 25, 19, 18],'city': ['New York', 'Paris', 'London', 'Tokyo'], 'occupation': ['Engineer', 'Doctor', 'Artist', 'Lawyer']}
df = pd.DataFrame(data)
# 'city' と 'occupation' のカラムを削除する
df = df.drop(['city', 'occupation'], axis=1)
print(df.head())

出力結果:

     name  age
0    Alex   20
1     Bob   25
2  Clarke   19
3   David   18

上記の例では、nameagecityoccupation の 4 つのカラムを持つサンプル DataFrame を作成し、drop メソッドをリスト形式で cityoccupation のカラムを削除しました。その後、nameage の 2 つのカラムしかない更新された DataFrame を出力しました。

カラムインデックスを使用してカラムを削除する

DataFrame からカラムを削除するには、列のインデックスを使用することもできます。これを行うには、drop メソッドに columns パラメーターを使用して、削除するカラムのインデックスを指定します。

# サンプル DataFrame を作成する
import pandas as pd
data = {'name': ['Alex', 'Bob', 'Clarke', 'David'], 'age': [20, 25, 19, 18],'city': ['New York', 'Paris', 'London', 'Tokyo']}
df = pd.DataFrame(data)
# インデックスが 2 のカラム、つまり 'city' を削除する
df = df.drop(df.columns[2], axis=1)
print(df.head())

出力結果:

     name  age
0    Alex   20
1     Bob   25
2  Clarke   19
3   David   18

上記の例では、nameagecity の 3 つのカラムを含むサンプル DataFrame を作成しました。drop メソッドに columns パラメーターを使用して、インデックスが 2city のカラムを削除しました。その後、nameage の 2 つのカラムしかない更新された DataFrame を出力しました。

条件に基づいたカラムの削除

条件に基づいて drop メソッドを使用してカラムを削除することもできます。たとえば、すべての値が NaN の列を削除することができます。

# 全て NaN 値を持つ列を持つサンプル DataFrame を作成する
import pandas as pd
import numpy as np
data = {'name': ['Alex', 'Bob', 'Clarke', 'David'], 'age': [20, 25, 19, 18],'city': [np.nan, np.nan, np.nan, np.nan], 'occupation': ['Engineer', 'Doctor', 'Artist', 'Lawyer']}
df = pd.DataFrame(data)
# 全て NaN 値を持つ列を削除する
df = df.dropna(how='all', axis=1)
print(df.head())

出力結果:

     name  age  occupation
0    Alex   20    Engineer
1     Bob   25      Doctor
2  Clarke   19      Artist
3   David   18      Lawyer

上記の例では、nameagecityoccupation の 4 つのカラムを持つサンプル DataFrame を作成し、city の値を NaN に設定しました。dropna メソッドに how='all'axis=1 のパラメーターを使用して、すべての NaN 値を持つ列を削除しました。その後、nameageoccupation の 3 つのカラムしかない更新された DataFrame を出力しました。

結論

Pandas DataFrame からカラムを削除することは、データサイエンティストとしてマスターする必要がある基本操作です。本書では、カラム名、インデックス、複数のカラムを基にした削除の異なる方法をカバーしました。DataFrame の作業効率を最適化し、データ操作を改善するために、本チュートリアルが役立つことを願っています。

よくある質問

  1. PythonのDataFrameで列を削除する方法は?

    PythonのDataFrameで列を削除するには、drop()メソッドを使用し、axisパラメータを1と設定した上で、列名を指定します。これにより、指定した列がDataFrameから削除されます。また、列をその場で削除するには、delキーワードの後に列名を指定することもできます。

  2. PythonのDataFrameで複数の列を同時に削除することはできますか?

    はい、PythonのDataFrameでは複数の列を同時に削除することができます。drop()メソッドに列名のリストを渡すか、drop()メソッドを複数回使用して異なる列名を指定することができます。これにより、指定したすべての列がDataFrameから削除されます。

  3. PythonのDataFrameで特定の条件に基づいて列を削除することは可能ですか?

    はい、PythonのDataFrameでは特定の条件に基づいて列を削除することが可能です。ブールインデックスやlocインデクサを使用して、条件を満たす列を選択し、その列をDataFrameから削除するためにdrop()メソッドを使用することができます。これにより、特定の基準に基づいて列を選択的に削除することができます。