Pandasで世界の大学のランキングをソートする(excelデータ利用)no.7

![見出しを追加 (25).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/50a4a0d5-cdd3-e694-915f-7a7e4de77cce.png)
こんにちは、まゆみです。

Pandas についてシリーズで記事を書いています。(Pandas の基礎的な部分から書いていますので分からなくなった時は他のPandas関連の記事も参考にどうぞ)

今回の記事は第7回目の記事になります。

今回は、[data.world](https://data.world)さんのサイトから[World University Rankings 2019-20](https://data.world/proydu/world-university-rankings-2019-20) という2019年から2020年の世界の大学ランキングについてのデータを使わせていただきます。


この記事を読めば

<ul>
<li>condaでxlrd とopenpyxlをインストールする方法</li>
<li>EXCELファイルを読み込む方法</li>
<li>Seriesにpythonの機能を使う時の注意点</li>

</ul>

などが分かります


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


#EXCELファイルを読み込む

今回読み込むデータは下記のexcel のデータになります
(※前回までは、CSVのデータを使っていました。)

![スクリーンショット 2021-03-14 121132.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/b0e0ad12-94df-a4c2-b1b8-badee113f002.jpeg)

Pandas でEXCELファイルを読み込むには<font color="Red">『xlrd』と『openpyxl』というライブラリー</font>が必要であり、今回新たにインストールします

(Anaconda の使い方やconda でのライブラリーのインストール方法が分からない方は[こちらの記事](https://qiita.com/Mayumi_Pythonista/items/ff0d7239d23446757609)を参考にしてください。)
![スクリーンショット 2021-03-14 121132.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/ba6bf087-b0d2-364e-e91d-490463a0a26f.jpeg)

##xlrdとopenpyxlをインストールする

xlrd とopenpyxlをインストールする前に、どの仮想環境にインストールするか決めてくださいね。

そしてまず、<font color="Red">その仮想環境をactivate しましょう</font>

![スクリーンショット 2021-03-14 125756.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/a9c22294-3b7a-6b6f-e68c-9aecdb8f8581.jpeg)


(仮想環境って何？っていう人は [こちらの記事](https://qiita.com/Mayumi_Pythonista/items/ff0d7239d23446757609) の『conda でenvironment を作る』という項目に書いています)

上記のスクショのように、あなたが今回ライブラリーをインストールしたい仮想環境が表示されていたらOKです。

<font color="Red">確認後xlrd と openpyxl　をインストールしましょう</font>


```
conda install xlrd openpyxl
```

とAnaconda Prompt に打ち込んでエンターキーを押してください。

するとインストールが始まり、最後に

Proceed([y]/n)?

と聞いてきますから　『y』をキーで打ち込みしょう

![スクリーンショット 2021-03-14 120542.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/8cb5bf28-c706-56fa-7612-8af5d4a64fbb.jpeg)

Anaconda Prompt に　done と出れば無事にインストールができています。

##EXCELファイルを読み込む

jupyter notebook でEXCELのデータを読み込みます。

```
import pandas as pd
pd.read
```

とread まで打ち込んだ時点で

Shift + Tab

を押すと選択肢が表示されます


![スクリーンショット 2021-03-14 130430.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/4d257c0a-6a04-8603-1317-987b560cd8ea.jpeg)

今回はEXCELファイルを読み込みたいので『read_excel』を選択しましょう

CSVファイルを読み込み、DataFrame をSeries に変えた時と同じ要領で、EXCELのデータからSeriesのオブジェクトを作りましょう

※CSVファイルの読み込み方などが分からない方は[こちらの記事](https://qiita.com/Mayumi_Pythonista/items/c29197abd4af408a8d17)を参考にどうぞ


下記のようにSeries のオブジェクトを作ることができました。

![スクリーンショット 2021-03-14 131055.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/d66ba608-0f51-fd91-5a6f-830b72eb9775.jpeg)

#Python にビルトインされている機能を使う

EXCELデータからPandasのSeries オブジェクトを作った後は簡単でして、<font color="Red">Python 自体の機能もSeries オブジェクトに使うことができます</font>

例えば、トップ15位までの大学名を出したいのならpython でrangeを指定するときと同じやり方をします

(ちなみに今回作ったSeries は　university_rank という変数に代入しています)

```
university_rank[:15]
```

でトップ15校の世界の大学名を表示できました。

![スクリーンショット 2021-03-14 132115.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/aca38c21-d805-ad39-f1bd-b9d2b96774ba.jpeg)

また今回のランキングに載っている大学名を下から順に15校並べたい時も

```
university_rank[-1:-15:-1]
```
とすれば一番下に書かれた大学名から順番に表示されます

![スクリーンショット 2021-03-14 132444.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/91d98cd4-e335-5638-2dcf-affa72045e5a.jpeg)

##Python のA in [リスト]をSeries でも使える？
![A in [A, B, C, D, E].png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/4570817a-602f-94ba-fd05-606d55ccfbb9.png)


Python でリスト型データの中に、ある特定の文字列や数値が入っているかどうかを調べるのに

```
A in [リスト]
```
を使いますよね

A がリストの中にあれば『True』を返してくれますし、無ければ『False』になります

例えば下記のスクショですと3はリストの中にあるのでTrue を返しています


![スクリーンショット 2021-03-14 134048.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/a0509374-e734-c95e-5f1b-3832b53615b0.jpeg)

では同じように、Series に対しても使えるでしょうか？

今回使っているデータの中に『"University of Tokyo"』が入っているのかな？と調べたい時。

結果は下のスクショのようになりました。

![スクリーンショット 2021-03-14 134332.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/46f19caa-92ff-4550-b590-96fb0c2574f1.jpeg)

これは、(in Series名)にすると、その『index』をコンピューターが見て、その中に"University of Tokyo" があるかどうかを調べるからです。

そうではなく、あくまでもSeriesのvalueにあたる部分を調べたいのでSeriesの後ろに　.values を付ける必要があります

そして"University of Tokyo" は13位に表示されていますので、True を返してくれます。


#まとめ

今回の記事はこれくらいで終わりにします。<(_ _)>

Pandasシリーズの記事も7記事目になり、だんだんPandasでできることも多くなってきました。

また引き続き、紹介していきますね。

よろしくお願いしますっ！