Pandasについての記事をシリーズで書いています。
今回は、第16回目になります
今回の記事では、犬に関するデータを使い、色んな条件つけをしてデータを抽出してみました。
この記事を読めば
- 2つの条件を同時に満たすデータの取り方
- 2つの条件のうちどちらかを満たすデータの取り方
- 3つ以上の条件を使う時の注意事項
が分かります。
ではさっそく始めていきますね。
#今回使わせてもらうデータ
kaggle.comさんのサイトからこちらの犬に関するデータを使います
CSVファイルに入っていますので、read_csv()メソッドを使ってデータを読み込みました。
読み込んだ結果は上のようになります。
『BreedName』 犬種名
『MaleWtKg』オスの成犬の体重(キログラム)
『AvgPupPrice』子犬の平均価格
『PopularityUS2017』2017年アメリカでの人気度
のコラムのみを取り出して、色んな条件に合う犬種を抽出していきます
#大型犬のみを取り出す
大型犬の基準は、25キロ以上のようなので、その基準に合うものだけを取り出します。
条件に合ったものの取り出し方は下記のようになっています
※どうして、上記の方法で条件に合ったものが取り出されるかの理由は前回の記事で詳しく書いています
25キロ以上の犬のみのデータが取れました。
#子犬の価格が1000ドル以下の犬のみを取り出す
先ほどと同じ要領で、子犬が1000ドル以下の犬種を取り出しました。
#子犬が1000ドル以下でかつ、大型犬である犬のデータを取り出す。
オスの成犬が25キロ以上かどうかを調べるには下記のようにコードを書きます
dog_data["MaleWtKg"] >= 25
同様に、子犬の価格が1000ドル以下を調べるには
dog_data["AvgPupPrice"] <= 1000
で、上記の二つの条件がどちらとも満たされる時なので2つの条件を『&』でつなぎました。
(煩雑になるのを避けるため、それぞれの条件を新しい変数に代入しています)
子犬の価格が1000ドル以下、成犬の大きさが25キロ以上の犬のみ抽出されました。
では、次は、2つの条件のうち『どちらかが満たされれば』そのデータをはじき出してくれるORを使ってみます。
OR を表すのは 『|』になります
Afghan Hound は、子犬の価格が1000ドルより高いですが、2017年度の人気度が高いのでAfghan Houndのデータもはじき出されました。
#3つ以上の条件を使う
大型犬 かつ 1000ドル以下 でもしくは人気犬種
とするのか
大型犬 かつ 人気犬種 もしくは1000ドル以下
とするのでは、はじき出されるデータが変わってきます
大型犬 かつ 1000ドル以下 もしくは、 人気犬種を出したい時は
dog_data[(dog_weight & dog_price) | dog_popularity]
2つの条件を満たすデータをPandasに先に調べさせるために、その部分を括弧で囲みます。
体重が25キロ以上でかつ1000ドル以下であるか
もしくは
2017年度に人気が高かった犬
が抽出されました。
#まとめ
今回の記事はこのあたりで終わりにします
お役に立てれば嬉しいです。