Pandas DataFrameの[]と[[]]に関して カラム取得方法を理解しよう!

前回の記事ではPandasの基本に関して説明致しました。

おさらいですが、Pandas(パンダス)とは、データ解析を容易にする機能を提供するPythonのデータ解析ライブラリです。そのためPythonでデータ処理や統計解析含むデータ分析する上では必須ツールになります。

Pandasを使うことで以下の事ができることに関しても触れました。

CSVやExcel、RDBなどにデータを入出力できる
データ前処理(NaN / Not a Number、欠損値)
データの結合や部分的な取り出しやピボッド(pivot)処理
データの集約及びグループ演算
データに対しての統計処理

今回の記事ではDataFrameからカラムを取得するに[]と[[]]の記述の違いに関して触れていきます。

とても大事ですのでしっかりと理解し扱えるようにしておきましょう。

DataFrameの[]と[[]]に関して

データフレーム からカラムを取り出す際に、[]もしくは[[]]を用いてカラムを取得する事が出来ますが、この2つの違いご存知でしょうか?

結論から先に説明しますと、['カラム名']で取得するとSeries型になり[['カラム名']]で取得するとDataFrame型になります。scikit-learnという機械学習ライブラリを用いる際には、DataFrame型の方が扱いやすいこともありますので[['カラム名']]で取得するように習慣化しておくと良いです。また、[['カラム名']]を利用する場合、複数のカラムを次のように取得する事ができます。

[['カラム名1', 'カラム名2']]

2つ以上のカラムを取得するには、[]と1重括弧ではなく、[[]]と二重括弧を利用しないと取得できないため、複数のカラム名を取得したい場合には、[[]]と二重括弧を利用できる点も理解しておきましょう。

下記の記法で得られるデータ型に関してしっかり抑えておきましょう。

df.カラム # Series型
df['カラム'] # Series型
df[['カラム']] # DataFrame型

また上記3つに対し、.valuesを用いることでNumPyのndarray型になる点もしっかり理解しておくと良いです。※1行めのdf.カラム名の場合、カラム名が日本語(文字列)や数字の場合取得できないため、[][[]]の挙動を理解した上で、なるべく[][[]].locでカラムを取得する習慣をつけておくと良いでしょう。

カラム名の取得に関して

上記のセクションでは、カラム名を取得する際に、下記の2通りがあることを説明しました。

df['カラム'] # Series型
df[['カラム']] # DataFrame型

他にもdf.カラム とする事で、 Series型で取得できます。

ですが、なるべくdf.カラム の取得は避けましょう。

理由としましては、カラム名が日本語の場合、以下の11行目のようにエラーが発生してしまうためです。

以下エラーになってしまうサンプルプログラムです。

import pandas as pd
df = pd.DataFrame([["10", "あ"], ["abc", 50]], index=["1行", "2行"],
columns=["abc", "2列"]) 

# df

print(df["abc"])
print(df.abc)

print(df["2列"])
print(df.2列) # ここでエラーが発生

上記のように、df.カラム を用いる際に、カラムが数字で始まる文字列などの場合エラーになってしまうため、

以下の2つの方法を取得したいデータ型によって使い分けできるようしておくのが良いでしょう。

df['カラム'] # Series型
df[['カラム']] # DataFrame型

おわりに

この記事ではPandas DataFrameの[]と[[]]に関して カラム取得方法に関して解説しました。

今回解説した内容はPandasのデータフレーム を扱う上で必ず覚えておいたほうが良い操作方法です。

是非しっかりと使いこなせるように練習してみてください。

データ分析や統計学を効率的に学ぶには…

データ分析や統計学を独学で学ぶのは大変ですよね。。

そのような方は、オンラインプログラムを利用するのが良いです。

AI Academy Bootcampでは6ヶ月データサイエンティストや機械学習エンジニアに質問し放題かつ、体系的に学べる動画コンテンツや440種類以上のテキストコンテンツで学べて35,000(税込)で受講出来ます。

是非サービスを活用し、効率よく、統計学や機械学習を身につけてみてください。

1 COMMENT

現在コメントは受け付けておりません。