データフレームから、特定のデータだけを抽出したいんだけど、pythonでどうやってコーディングしたらいいかわからないよ…。
本記事では、データの抽出方法について、データ分析初心者向けに、わかりやすく解説します。
Pythonでデータ分析をしたい方や、データ前処理で困っている方は、ぜひ御覧ください。
データフレームから特定のデータを抽出
データフレームから、条件を指定してデータを抽出したい場合はfilterメソッド、または、queryメソッドを使います。
列名・行名を指定してデータを抽出【filterメソッド】
filterメソッドでは、列名や行名を指定してデータを抽出することができます。
列or行を指定する時は、axisを使います。
・行のことを指定したい時は、axis=0
・列のことを指定したい時は、axis=1
デフォルトはaxis=1(列)になっているので、行を指定したい時のみaxisを指定しましょう。
指定した文字と完全一致した列名・行名を抽出
オプションでitemsを指定することで、完全一致した項目を取得します。
列名で取得する時は、items=[‘抽出したい列名’]で指定します。
[‘〇〇’,’△△’,’✕✕’]というように、カンマで区切ることで複数項目を取得することができます。
#指定した文字と完全一致した列名を取得
df.filter(items=['I411102_身長(小学5年)(女)【cm】'])
itemsは項目名と完全一致する必要があるため、該当する項目名がない場合は次のように表示されます。
#指定した項目名が存在しない場合
df.filter(items=['I411102_身長(小学5年)(女)【cm'])
「この項目名に該当する項目はないよ」ってことだね!
指定した文字と部分一致した列名・行名を抽出
部分一致の列名や行名を取得したい場合は、likeを使いましょう。
下記の例では、「身長」という文字列が入っている項目を取得できます。
#指定した文字と部分一致した項目を抽出
df.filter(like='身長')
次に、部分一致した行名を抽出してみましょう。
行名が数字でも文字として扱うことがポイントです。
#行名の部分一致
df.filter(like='5',axis=0)
条件式でデータを抽出する【queryメソッド】
条件式を指定してデータを抽出したい場合は、qureyメソッドを使います。
今回のデータは、項目名に全角括弧「(」が入っていて、SyntaxErrorが発生してしまいます。
なので、項目名を変更しました。
#項目名を変更
df_new = df.rename(columns = {'I411101_身長(小学5年)(男)【cm】':'I411101'})
#140以上の行を抽出
df_new.query('I411101 >= 140')
条件式の組み方については、Python基礎まとめ編を参照してください。
スライスして抽出
スライスとは、リストやデータフレームなどのまとまったデータの一部を切り取って抽出する方法のことです。
言葉の通り、データをスライスしたイメージだね!
スライスの場合は、locメソッドを使います。
なお、スライスでもfilterやqueryを使ったときと同様に抽出できますが、filterやqueryの方が簡単にデータを抽出できるので、おすすめです。
とはいえ、スライスはいろんな場面で使うことが多いので、知っておくと便利です
行列名を指定してデータ抽出
行名や列名を指定して、スライスすることもできます。
まとめると、次の通りです。
列名の指定
列名を指定する時は、df[‘列名’]です。
#列名で指定する
df['I411101_身長(小学5年)(男)【cm】']
行名の指定
行名で指定する場合は、df.loc[行名]です。
下記の例では、2行目が抽出されます。
#行名を指定する
df.loc[2]
範囲を指定してデータ抽出
続いて、範囲を指定して一区間をスライスする方法です。
locメソッドを使います。
列単位で取得
まず、列単位で取得してみましょう。
今回は、体重に関するデータをがっぽり抽出したいとします。
#範囲を指定してデータを抽出する
df.loc[:,"I412101_体重(小学5年)(男)【kg】":"I412302_体重(高校2年)(女)【kg】"]
行単位で取得
行の場合も、列の場合と同様に、最初の行名と最後の行名を指定することで、簡単にデータを取得できます。
#行の範囲を指定してデータを抽出する(5行目〜10行目の全列を抽出)
df.loc[5:10,:]
最後に
Pythonでデータ分析・データサイエンスをしたい初心者向けに、Pythonデータ分析徹底解説総まとめページを作成しました。
流れに沿って実装することで、データ分析の基礎が固められます。
また、専門の講師と一緒に挫折せずに学習したい方は、データサイエンススクールがおすすめです。
こちらもぜひ御覧ください。