【Pandas】犬の人気度・サイズ・価格で抽出するデータを変えてみた　no.16

![見出しを追加 (40).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/6bb5fc53-d9c3-5fcc-c750-cf3904096a48.png)
こんにちは、まゆみです。

Pandasについての記事をシリーズで書いています。

今回は、第16回目になります

今回の記事では、犬に関するデータを使い、色んな条件つけをしてデータを抽出してみました。

この記事を読めば
<ul>
<li>2つの条件を同時に満たすデータの取り方</li>
<li>2つの条件のうちどちらかを満たすデータの取り方</li>
<li>3つ以上の条件を使う時の注意事項</li>
</ul>

が分かります。

ではさっそく始めていきますね。

#今回使わせてもらうデータ

[kaggle.com](https://www.kaggle.com/)さんのサイトから[こちらの](https://www.kaggle.com/rturley/pet-breed-characteristics?select=dog_breed_characteristics.csv)犬に関するデータを使います

CSVファイルに入っていますので、read_csv()メソッドを使ってデータを読み込みました。
![スクリーンショット 2021-03-21 100706.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/9df56088-8669-baac-0c58-67f629e40f5b.jpeg)


読み込んだ結果は上のようになります。

>『BreedName』 犬種名

>『MaleWtKg』オスの成犬の体重(キログラム)

>『AvgPupPrice』子犬の平均価格

>『PopularityUS2017』2017年アメリカでの人気度

のコラムのみを取り出して、色んな条件に合う犬種を抽出していきます

![スクリーンショット 2021-03-21 102040.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/0f301713-32b3-8336-a8fe-7a126c607900.jpeg)

#大型犬のみを取り出す

![massive-dog-1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/06d7fe27-1716-1a6c-7ebe-5f6094b2f256.jpeg)

大型犬の基準は、25キロ以上のようなので、その基準に合うものだけを取り出します。

条件に合ったものの取り出し方は下記のようになっています

![DataFrame( DataFrame[_コラム名_] _= 25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/9abcd0d9-5749-542c-1e29-7a3a42cf7d87.png)
※どうして、<font color="Red">上記の方法で条件に合ったものが取り出されるかの理由</font>は[前回の記事](https://qiita.com/Mayumi_Pythonista/items/8af7c687e35003687711)で詳しく書いています

![スクリーンショット 2021-03-21 113405.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/d346077d-8f9c-1f32-8a79-a5dea481d9fc.jpeg)


25キロ以上の犬のみのデータが取れました。


#子犬の価格が1000ドル以下の犬のみを取り出す

先ほどと同じ要領で、子犬が1000ドル以下の犬種を取り出しました。

![スクリーンショット 2021-03-21 114004.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/e949f307-115e-4a6e-c3bf-d1378ea030a6.jpeg)

#子犬が1000ドル以下でかつ、大型犬である犬のデータを取り出す。
オスの成犬が25キロ以上かどうかを調べるには下記のようにコードを書きます

```
dog_data["MaleWtKg"] >= 25
```

![スクリーンショット 2021-03-21 114436.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/7e4d594e-df98-2543-52ba-d544fc313b92.jpeg)

同様に、子犬の価格が1000ドル以下を調べるには

```
dog_data["AvgPupPrice"] <= 1000
```

で、<font color="Red">上記の二つの条件がどちらとも満たされる時なので2つの条件を『＆』</font>でつなぎました。
(煩雑になるのを避けるため、それぞれの条件を新しい変数に代入しています)

![スクリーンショット 2021-03-21 115720.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/f2e4fc3b-bd49-37da-b7bc-1c54a5d443b0.jpeg)

子犬の価格が1000ドル以下、成犬の大きさが25キロ以上の犬のみ抽出されました。

#条件に『OR』を使う
![条件にORを使う.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/6c0913d6-c0ae-6e53-3bee-c60f648a142a.png)

では、次は、2つの条件のうち『どちらかが満たされれば』そのデータをはじき出してくれるORを使ってみます。

OR を表すのは　『｜』になります

![見出しを追加 (41).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/6d236fea-da61-a69e-c774-481afb02da11.png)

Afghan Hound は、子犬の価格が1000ドルより高いですが、2017年度の人気度が高いのでAfghan Houndのデータもはじき出されました。

![スクリーンショット 2021-03-21 122422.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/21d96c7b-fb7e-c4e1-8160-e3481301e52d.jpeg)

#3つ以上の条件を使う

![大型犬.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/03cbc158-a178-a1c3-decb-cb32e3b5cfd3.png)

>大型犬　かつ　1000ドル以下　でもしくは人気犬種　

>とするのか

>大型犬　かつ　人気犬種　もしくは1000ドル以下

とするのでは、はじき出されるデータが変わってきます

大型犬　かつ　1000ドル以下　もしくは、　人気犬種を出したい時は

```
dog_data[(dog_weight & dog_price) | dog_popularity]
```

2つの条件を満たすデータをPandasに先に調べさせるために、<font color="Red">その部分を括弧で囲みます。</font>

体重が25キロ以上でかつ1000ドル以下であるか

もしくは

2017年度に人気が高かった犬

が抽出されました。

![スクリーンショット 2021-03-21 130249.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/65cf1222-b4a8-34c3-400a-df8b222c58f7.jpeg)

#まとめ

今回の記事はこのあたりで終わりにします

お役に立てれば嬉しいです。