pandasのpopメソッドで簡単に列を取得&削除しよう!

pandasは、Pythonでデータの取り回しを効率化するためのライブラリです。
pandasの中でもpopメソッドは、DataFrameから列を取り出すために使用されます。
本記事では、pandasのpopメソッドについて解説します。

こんな人におすすめ

・pandasのpopメソッドについて知りたい人
・DataFrameから列を削除したいが、どのメソッドを使えばいいかわからない人
・複数の列を一度に削除したい人
・DataFrameの操作に関する基本的な知識を持っているが、popメソッドの使い方や注意点について詳しく知りたい人
・データ分析や機械学習の分野でpandasを使う予定の人
・pandasのメソッドについて簡潔にまとめた記事を探している人

主なライブラリ

pandas

本ページで使用するライブラリをインポートするときは以下のコードを使用します。

import pandas as pd

pandasのpopメソッドとは?

popメソッドは、DataFrameの列を取り出し、DataFrameから削除するメソッドです。pandasには、列を取り出すための他のメソッド(たとえば、locやiloc)もありますが、popメソッドは取り出した列をDataFrameから削除できるという利点があります。

popメソッドの使い方と注意点

popメソッドを使うには、DataFrameオブジェクトのpopメソッドに取り出したい列のラベルを引数として渡します。例えば、以下のようなDataFrameがあった場合、”column1″という列を取り出して削除するには、以下のようにします。

df = pd.DataFrame({'column1': [1, 2, 3], 'column2': [4, 5, 6]})
print(df)
#    column1  column2
# 0        1        4
# 1        2        5
# 2        3        6

column1 = df.pop('column1')

print(df)
#    column2
# 0        4
# 1        5
# 2        6

print(column1)
# 0    1
# 1    2
# 2    3
# Name: column1, dtype: int64

注意点としては、popメソッドを使うと、元のDataFrameから列が削除されるため、取り出したい列の値を使いたい場合は、別の変数に格納しておく必要があります。

また、popメソッドは、DataFrameの列の取り出しと同時に削除するため、一度に複数の列を取り出すことはできません。そのため、複数の列を一度に取り出したい場合は、locやilocを使って取り出した後、dropメソッドを使って削除する必要があります。

DataFrameから列を取り出す方法としてのpop

popを使ってDataFrameから列を取り出すには以下のコードを実行します。このコードではDataFrameからcolumn1という列を取り出しています。

df = pd.DataFrame({'column1': [1, 2, 3], 'column2': [4, 5, 6]})
column1 = df.pop('column1')

また、DataFrameから列を取り出す方法は、popメソッド以外にもあります。たとえば、locメソッドを使って、以下のように取り出すことができます。

column1 = df.loc[:, 'column1']

popを使ったDataFrameの列の削除方法

popメソッドを使ってDataFrameから列を削除するには、以下のようにします。

df = pd.DataFrame({'column1': [1, 2, 3], 'column2': [4, 5, 6]})
#    column1  column2
# 0        1        4
# 1        2        5
# 2        3        6

df.pop('column1')

print(df)
#    column2
# 0        4
# 1        5
# 2        6

popメソッドは、取り出した列を削除するため、元のDataFrameに影響を与えます。

複数の列を一度に削除する方法

pandasのdropメソッドは、DataFrameから指定された列を取り出して、同時にDataFrameから削除することができます。このメソッドは非常に便利であり、特に複数の列を一度に削除することができます。

複数の列を一度に削除する方法は、dropメソッド呼び出すことで実現できます。
例えば、以下のように、”col1″、”col2″、”col3″の3つの列を一度に削除することができます。

df = pd.DataFrame({'col1': [1, 2, 3], 'col2': [4, 5, 6], 'col3': [1, 2, 3], 'col4': [4, 5, 6]})
#    col1  col2  col3  col4
# 0     1     4     1     4
# 1     2     5     2     5
# 2     3     6     3     6
df = df.drop(columns=['col1', 'col2', 'col3'])
#    col4
# 0     4
# 1     5
# 2     6

これは、3つの列を一度に削除することができますが、列の数が多くなると、列名を一つ一つ書くのが面倒になることがあります。その場合には、popメソッドを使うことができます。以下は、popメソッドを使って、”col1″、”col2″、”col3″の3つの列を一度に削除する例です。

df = pd.DataFrame({'col1': [1, 2, 3], 'col2': [4, 5, 6], 'col3': [1, 2, 3], 'col4': [4, 5, 6]})
df.pop('col1')
df.pop('col2')
df.pop('col3')

print(df)
#    col4
# 0     4
# 1     5
# 2     6

このように、popメソッドを複数回呼び出すことで、一度に複数の列を削除することができます。

popによる元のデータの変更に注意

popメソッドを使うと、DataFrameから列を削除することができます。ただし、popメソッドによって元のデータが変更されるため、注意が必要です。例えば、以下のようなDataFrameがあったとします。

df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [4, 5, 6],
    'C': [7, 8, 9]
})
#    A  B  C
# 0  1  4  7
# 1  2  5  8
# 2  3  6  9

このDataFrameから、A列を削除する場合、popメソッドを使って以下のように書くことができます。

A = df.pop('A')
print(df)
#    B  C
# 0  4  7
# 1  5  8
# 2  6  9

この場合、A列がDataFrameから削除され、A変数には削除したA列のデータが格納されます。しかし、この操作によって元のデータであるdf自体も変更されます。つまり、dfにはA列が含まれていなくなります。

このように、popメソッドを使ってDataFrameから列を削除する場合は、元のデータが変更されるため注意が必要です。特に、元のデータを保持したい場合には、別のDataFrameやSeriesにコピーしてから操作を行うことが望ましいです。

以上が、popによる元のデータの変更についての注意点です。popメソッドを使う際には、この点に留意して操作することが重要です。

まとめ

今回は、pandasのpopメソッドについて詳しく解説してきました。

まずは、popメソッドの使い方と注意点を確認しました。popメソッドは、指定した列を削除してその列を取得することができます。popを使うことで、列の取得と同時にDataFrameからの削除することが可能です。
表現を変えると、popメソッドによって元のデータが変更されるため、注意が必要です。

また、DataFrameから列を取り出す方法としてもpopメソッドを利用することができます。この場合は、元のDataFrameに影響を与えることなく指定した列を取得することができます。

さらに、複数の列を一度にpopする方法についても紹介しました。複数の列を一度に取得して削除する場合は、辞書型の戻り値が得られます。

以上が、pandasのpopメソッドについての解説となります。popメソッドをうまく使いこなして、データ分析や加工作業をより効率的に行っていきましょう。