はじめに
データ分析の流れを説明するシリーズで、「データの概要把握」のプロセスに関する記事を書いています。「データの概要把握」のプロセスでは、これまで、データの読み込みから始めて、データの確認、データ型の変換、列名の変更と値の変換、条件に応じて代入する値を変える、と扱ってきました。
今回は、読み込んだデータフレームからデータを取り出す方法を整理します。
サンプルデータの作成
import pandas as pd
import numpy as np
df_sample = pd.DataFrame(np.arange(40).reshape(10, 4),columns=['A','B','C','D'])
df_sample
列名で列を取り出す
まずは列名でデータを取り出す方法を扱います。これは簡単です。角括弧[ ] で囲んで取り出します。このとき、角括弧[ ]を一重にするか、二重にするかで次のような違いがあります。
# 角括弧を一重にして列名を指定
df_sample['B']
これは、pandasのSeriesとして取り出す方法となります。次に角括弧[ ]を二重にして列名を指定すると
# 角括弧を二重にして列名を指定
df_sample[['B']]
データフレームとして取り出されます。また、列名を複数指定する場合は次のようにします。
# 列名を複数指定する場合
df_sample[['B','C']]
これはもちろん、データフレームとして取り出されます。
行番号で行を取り出す
次に行番号で情報を取り出すことを考えます。行番号を指定するので、当然、行が取り出されます。
# 5行目から7行目を取り出す
df_sample[5:8]
次のようなこともできます。
# 0行目から8行目を3行ごとに抽出
df_sample[0:9:3]
全データを対象にして、2行ごとにデータを抽出する場合は、次のように書きます。
# 全データを対象に2行ごとにデータを取り出す
df_sample[::2]
locで行番号と列名を同時に指定する
列名での取り出しと、行番号での取り出しを扱いました。ここでは、行番号と列名を同時に指定して情報を取り出します。
# 3行目から5行目のB列を取り出す
df_sample.loc[3:5,'B']
locでは、3:5のような記述をしたときに「未満」ではなく「以下」となることに注意してください。そのため、3行目から4行目ではなく、3行目から5行目のB列が取り出されます。
※行数は、0行目という数え方をしています。
いくつか他にも例をみてみましょう。
# 列を作数指定した場合
df_sample.loc[3:5,['B','C']]
これは次のように書いても同じ結果となります。
df_sample.loc[3:5,'B':'C']
条件に一致する行を取り出す
最後に条件に一致した行の取り出し方を見ておきましょう。これはデータフレーム[ ] として[ ]のなかにブール値をいれればOKです。
df_sample[df_sample['B']>15]
これは、df_sample[‘B’]>15の部分が次のようなブール値となります。
df_sample['B']>15
そのため、データフレームから4行目から9行目までのデータが取り出されます。
まとめ
さて、いかがでしたでしょうか?今回はデータフレームから情報を取り出す方法を扱いました。まだまだいろんな方法がありますが、まずは基本としてここで紹介した方法を押さえておけば、簡単なデータの操作はできるでしょう。
コメント