CUBE SUGAR CONTAINER

技術系のこと書きます。

Python: pandas の DataFrame から不要なカラムを削除する

今回は pandas の DataFrame オブジェクトから不要なカラムを取り除く方法について書く。

使った環境は次の通り。

$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.13.3
BuildVersion:   17D102
$ python -V
Python 3.6.4

下準備

まずは環境に pandas をインストールしておく。

$ pip install pandas

続いてサンプルとなる DataFrame を用意する。 今回は、次のようにユーザを模したデータを用意してみた。

>>> import pandas as pd
>>> from datetime import date
>>> columns = ['id', 'name', 'gender', 'birth', 'country']
>>> data = [
...     (1, 'Alice', 'F', date(1980, 1, 1), 'US'),
...     (2, 'Bob', 'M', date(2000, 3, 3), 'UK'),
...     (3, 'Carol', 'M', date(1990, 2, 2), 'AU'),
... ]
>>> df = pd.DataFrame(data, columns=columns)

できあがった DataFrame はこんな感じ。

>>> df
   id   name gender       birth country
0   1  Alice      F  1980-01-01      US
1   2    Bob      M  2000-03-03      UK
2   3  Carol      M  1990-02-02      AU

非破壊的にカラムを取り除く

まずは非破壊的にカラムを取り除く方法から。 非破壊的というのは、元々の DataFrame には変更を加えることがないということ。 つまり、特定のカラムを取り除いた新しい DataFrame オブジェクトを取得することになる。

非破壊的にカラムを取り除くときは DataFrame#drop() メソッドを用いる。 例えば country カラムを取り除いてみよう。

>>> df.drop('country', axis=1)
   id   name gender       birth
0   1  Alice      F  1980-01-01
1   2    Bob      M  2000-03-03
2   3  Carol      M  1990-02-02

うまくいった。

DataFrame#drop() メソッドにはリストを渡して複数のカラム名を指定することもできる。 例えば countrybirth という二つのカラムを取り除いてみよう。

>>> df.drop(['country', 'birth'], axis=1)
   id   name gender
0   1  Alice      F
1   2    Bob      M
2   3  Carol      M

ばっちり。

破壊的にカラムを取り除く

続いては破壊的にカラムを取り除く方法について。 破壊的ということは、つまり元々の DataFrame オブジェクト自体が変更されるということ。

破壊的にカラムを削除するには次のようにする。 具体的には del 文で DataFrame のカラムを指定すれば良い。

>>> del df['country']

確認すると、元々の DataFrame オブジェクトからカラムが削除されていることが分かる。

>>> df
   id   name gender       birth
0   1  Alice      F  1980-01-01
1   2    Bob      M  2000-03-03
2   3  Carol      M  1990-02-02

ちなみに、このやり方では複数のカラムを同時に削除することはできないようだ。

>>> del df[['birth', 'gender']]
...
TypeError: '['birth', 'gender']' is an invalid key

いじょう。

めでたしめでたし。

Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理

Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理