【Pandas】PandasのオブジェクトをPythonの辞書やリストに変える.no.34

![見出しを追加 (85).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/db6116bc-f196-294b-d24a-ba2dffabf74e.png)

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

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

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

今回は、前回使ったデータと同じものを使い

<font color="Red">PandasのオブジェクトをPythonの辞書やリストに変える方法</font>を書いていこうと思います。

Pythonの辞書やリストの扱いは慣れている方が多いと思うので、変換後、色々なメソッドを使ったりしてみてくださいね。

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

#今回使うデータ

[前回の記事](https://qiita.com/Mayumi_Pythonista/items/de88e6a9211d994f9c7c)と同じデータを使います

アメリカの学校ごとの、SATの平均得点を調べたデータです。
SATとは日本のセンター試験のようなものみたいですね。


(Web上で更新されているサイトから最新のCSVデータの読み込み方が分からない方は[前回の記事](https://qiita.com/Mayumi_Pythonista/items/de88e6a9211d994f9c7c)を参考にしてください。)

#PandasのオブジェクトをPythonのオブジェクトに変換する方法
![名称未設定のデザイン (9).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/a8d9c2de-7b3d-8c05-7c93-9b1da34fb3f1.png)


##Pythonのリストに変換する

<font color="Red">.tolist()メソッド</font>(toとlistの間にアンダーバーがない事に注意)を使うとPythonのリスト型データに変換する事ができます

『SchoolName』とラベルの付いたコラムをリスト型データにします。
![スクリーンショット 2021-04-08 102027.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/3140cedc-9b84-44fb-49e4-fe22a49f8c67.jpeg)

##Pythonの辞書に変換する
では次に、.to_dict()メソッドを使って辞書型データに変換してみましょう
![スクリーンショット 2021-04-08 102158.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/be01437e-e4d6-78ee-0c2a-c4e43f77f2ea.jpeg)

ここで、注意なのは、辞書型データにしたときに<font color="Red">もしkey が重複した場合、最後のkey のみが使われた辞書型データになる</font>ということです。

今回はデフォルトのインデックス(0から始まるインデックス)をそのまま使ったので、重複する事はありませんが、もしインデックスをカスタマイズする時には注意が必要です。

#データのフォーマットを揃えてみる

ただ、今回読み込んだデータのSchoolNameはフォーマットが統一されていません。

![スクリーンショット 2021-04-08 105037.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/fc44be6d-8c0d-aadd-a246-dfffc3990040.jpeg)

そしてあなたは、美人だけど仕事には厳しい上司に下記のような仕事を言い渡されました。


![本文を追加 (9).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/00727ad1-0cf4-9955-dcac-1143a3f1b3f8.png)

##.join()メソッド

![スクリーンショット 2021-04-08 105633.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/9082e3c5-6050-d2b8-8700-1e8f0963cbe6.jpeg)
引用元：[w3schools](https://www.w3schools.com/python/ref_string_join.asp)

.join()はPythonのメソッドですが、<font color="Red">引数にPandasのSeriesを渡すこと</font>もできます

それぞれの学校名を『, 』(カンマとスペース)で区切り一つの文字列として渡したいのなら

```
", ".join(df["コラム名"])
```

実行結果は下記のようになります

![スクリーンショット 2021-04-08 111844.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/980a0d96-7ba7-5ec9-c592-b837d674457b.jpeg)


![見出しを追加 (83).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/d16df58e-c7a3-d0c0-7e0a-4092fc0e483a.png)

title()メソッドで、それぞれの単語の頭文字を大文字にすることができます。(.title()メソッドは単語と単語の間のスペースによってそれぞれを別の単語だと認識し、頭文字を大文字に直してくれます。)

ただ、PandasのオブジェクトにPythonの文字列に関するメソッドを使う時は、間に『.str』が必要です。
(.strについては[こちらの記事](https://qiita.com/Mayumi_Pythonista/items/dc05c54bd0fa4e356ddf#python%E3%81%AE%E6%96%87%E5%AD%97%E5%88%97%E3%81%AB%E9%96%A2%E3%81%99%E3%82%8B%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%82%92%E4%BD%BF%E3%81%86%E6%99%82%E3%81%AB%E5%BF%85%E8%A6%81%E3%81%AAstr)で詳しく説明しています。)


```
",".join(df["コラム名"].str.title())
```

![スクリーンショット 2021-04-08 112031.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/95d8e8de-05da-d176-fa09-ed0eb2e4e687.jpeg)


全ての学校名の頭文字が大文字になりました。

![見出しを追加 (84).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/c3555082-3b42-0bce-91c5-bcd3b7497036.png)

>.sort_values()

>.drop_duplicates()

はどちらもPandasのメソッドであるので、先ほど.title() (Pythonのメソッド) とSeriesをつなぐ時に必要だった『.str()』は上記のメソッドを使う時は必要ありません。

![スクリーンショット 2021-04-08 113047.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/f9640788-ed64-a2ba-afaa-35de1f007072.jpeg)

学校名が同じフォーマットで統一され、重複するものははじかれ、アルファベット順に並べることができました。

#まとめ

今回の記事はこれくらいで終わりにしますね。

次回の記事では、jupyter notebookであれこれ触ったデータをCSVファイルに書き込む方法を書いていきますね。