▶ 初学者向けにデータ分析に関する記事を書いています
はじめに
今回はデータフレームからデータを抽出するときの角括弧[ ]についてです。df[‘列名’](一重括弧)とするときと、df[[‘列名’]](二重括弧)とするときで返り値が異なります。これに戸惑ったことはありませんか?この記事を読み終えればもう迷うことはありません。早速解説していきましょう。
データフレームからのデータ抽出
まずはサンプルのデータフレームを作っておきましょう。
# ライブラリのインポート
import numpy as np
import pandas as pd
# データフレームの作成
data = np.random.randint(low=0,high=10,size=12).reshape(4,3)
df = pd.DataFrame(data,columns=['A','B','C'])
df
4行3列のデータフレームができました。行にはラベルがついておらず、インデックスが0,1,2,3と振られています。列方向にはA, B,Cとラベルがついているデータフレームです。
特定の列を取得する
特定の列を取得する場合には、データフレームの後に角括弧で列名を指定します。
やってみましょう。
# A列を抽出
df['A']
簡単ですね。このようにdf[‘列名’]とするとデータがSeriesで返ってきます。列をリストで指定することもできます。
A列とC列を指定してみましょう。
# A列とC列を抽出
df[['A','C']]
こちらも簡単。でも返ってくるデータ構造が違います。df[[‘列名1’, ‘列名2’]]のように列名をリストで指定するとデータフレームが返ってきます。
特定の区間の行を取得する
次に行を指定して取得する場合ですが、df[]の形式では必ず区間を指定する必要があります。書式を確認しておきましょう。
やってみましょう。たとえば、行番号0から行番号2までの行を取り出すのであれば次のようにします。
# 行番号0~2を抽出する
df[0:3]
df[行番号]のような指定はできないので注意しましょう。スライスで指定した時に終点行番号は含まないので、例えば行番号1だけを取り出したいときには次のように指定できます。
# 行番号1のみを抽出
df[1:2]
まとめ
今回はdf[‘列名’]とdf[[‘列名’]]の違いについて解説しました。これを説明するにあたり、データフレームからのデータの抽出方法を扱いました。データフレームからデータを抽出する方法はいろいろあって、loc, ilocを使って抽出する方法は以下をご覧いただければと思います。
コメント