【Pandas】Pandasの集計結果をCSVファイルに書き込む方法 .no.35

![見出しを追加 (86).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/42d341e2-733f-1af4-2ab5-9045057c514f.png)

こんにちは、まゆみです。

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

今回は第35回目になります。

今までの記事では、

CSVデータを<font color="Red">読み込み</font>Pandasでデータを集計したりする方法を述べてきました。

![見出しを追加 (87).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/2614027c-4e57-1bd9-9421-5d995e4b2a84.png)

今回は、Pandasで計算した結果を CSVに<font color="Red">書き込む</font>という、今までのプロセスとは逆のプロセスになります

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


#今回使うデータ

前回の記事に引き続き、『[NYC Open Data](https://opendata.cityofnewyork.us/data/)』のサイトから、アメリカの学校ごとにおけるSATテストの平均点に関するデータを用いていきます。(SATとは日本のセンター試験のようなものみたいです。)

![スクリーンショット 2021-04-09 084308.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/7cd0d09e-cec3-77ba-3955-3ff4086e1c9c.jpeg)

このコラムの中の

>『Mathematics Mean』(数学の平均点)

を使って、数学の平均点が

> ～　650 Very Good

>650 ～　550 Good

>550 ～　450 Fairly Good

>450 ～　350 Poor

>350 ～　 Very Poor

とグレード分けした結果をCSVに書き出してみたいと思います。

では、Pandasのメソッド.to_csv()メソッドの使い方を紹介します

#.to_csv()メソッド
![スクリーンショット 2021-04-09 085645.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/573262c9-66a4-87ef-d315-ac35de9f77fd.jpeg)
引用元：[Pandasドキュメント](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_csv.html)

.to_csv()は、SeriesにもDataFrameにも使えます。

まず、一番忘れてはならないのが、Pandasの結果を書き出すための<font color="Red">『CSVファイルを作ること』</font>です。

CSVファイルを作ると言っても、引数にあなたの作りたいCSVファイル名を書くだけで大丈夫です。

下記のようにコードを書きます。

```
.to_csv("好きなファイル名.csv")
```

また、Pandasのドキュメントを見ていただければ『パラメーターindex = True』となっているのが分かると思います。

このままデフォルト値を使いますと、下記のような結果になります

![スクリーンショット 2021-04-09 104902.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/9a40c0ca-5e6e-1bb1-febf-614b60e2e53e.jpeg)

index= False にすると、インデックスが入らないです。
![スクリーンショット 2021-04-09 105139.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/fcbc31bd-73cb-c1ef-22e2-7acf32f0729e.jpeg)

```
.to_csv("ファイル名.csv", index= False)
```

また、扱うデータによって、『encoding error』が出る場合もあります

その時は、<font color="Red">パラメーターencoding= "utf-8" </font>を試してみてください。

#Mathematics Meanのコラムにある値をグレード分けする

では、数学の平均点をそれぞれのグレードに分けていきましょう。

例として、550点以上、650点未満の得点を『good』というグレードに分ける方法のみを書いておきます。

![見出しを追加 (88).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/a51d468b-26ca-9d04-d901-f8009af1ddff.png)

650未満
550以上

の<font color="Red">両方を満たす部分</font>なので『＆』でつなぎます。

![スクリーンショット 2021-04-09 111656.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/7cdf4443-efa6-b9fe-2ea5-72fd269f5e64.jpeg)

```
dateframe["コラム名"]　>= 550
```

条件となるものを<font color="Red">『mask』という変数に代入するのは業界の慣習</font>のようです。

2つの条件が同時に満たされる部分が欲しいので、条件２つを&でつなぎます。


それらの条件を満たす<font color="Red">アイテムの個数を知りたいので、len関数</font>を使います。

その結果をgoodという変数に代入しました。

他のグレード(very_good, fairly_good , poor, very_poor)も同じ感じで、それぞれのグレードに評価される生徒の数を調べてみてくださいね。

#DataFrameを作る

PandasのDataFrameを作る時、引数に、辞書型データを渡すことができます

辞書型データを渡すと下記のようなDataFrameになります。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/2499936d-67f6-8572-673f-034801b23a97.png)

![スクリーンショット 2021-04-09 131043.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/15b77d43-38d5-6ac2-1a18-92c89615d6e5.jpeg)

![スクリーンショット 2021-04-09 131425.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/cb1c1d62-fd52-344b-b85c-b791a19045ee.jpeg)

カレントフォルダー内を調べてみましょう

『math_grade.csv』ができています。

![スクリーンショット 2021-04-09 131858.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/686961be-5f43-ed69-3259-3ef22833ecc3.jpeg)

『math_grade.csv』を開くとこんな感じです。

![スクリーンショット 2021-04-09 132025.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/8577f4a4-f969-378f-7290-4f9486749880.jpeg)

同様にして、セントラルパークのリスはどんな色のものが多いかも調べてみます。

#Central Parkにいるリスはどんな色が多いのかも調べてみた
![見出しを追加 (89).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/bc7fe2b6-a1d3-6cf8-518a-2c32e2715c33.png)

[こちらは](https://data.cityofnewyork.us/Environment/2018-Central-Park-Squirrel-Census-Squirrel-Data/vfnx-vebw)セントラルパークのリスについて調べたデータになります。

![スクリーンショット 2021-04-09 133219.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/c8c5eb2a-8b92-9898-5b79-0c95be46610f.jpeg)

『Primary Fur Color』の各値がいくつあるか調べます。

![スクリーンショット 2021-04-09 132931.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/924b1376-ffa9-e62f-b7f8-ac85e458f063.jpeg)

Primary Fur Colorの値は、Gray, Cinnamon, Black のみの3種類になります。

Gray のリスの数を数えます。

![スクリーンショット 2021-04-09 133551.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/2c9ca54b-ab66-2e7e-8674-ed1bf3d02bc0.jpeg)

同様にして、black, cinnamon の数も抜き出しました。

先ほどとおなじく、

>①DataFrame を作って

>②CSVファイルに書き出しました。

![スクリーンショット 2021-04-09 133715.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/c506052e-56c4-cd2b-23ed-2aacd44f82ee.jpeg)

#まとめ

今回は、今まではCSVから読み込んでいたものを、反対に『CSVに書き込む』というのをやってみました。

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