2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Pandas】ランキングの世界の大学名からデータを取り出す(excelデータ利用)no.8

Last updated at Posted at 2021-03-15

見出しを追加 (26).png

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

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

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

前回の記事では、世界の大学ランキングのデータを使い、PandasでSeries オブジェクトを作った後、大学のランキング(インデックス)を使って大学名を取り出しました。

見出しを追加 (27).png

自動的に挿入される数字のインデックスを利用すれば

世界の1位から10位までの大学を知りたい
世界の15位の大学名を知りたい

と言った時に便利です。

では、大学名をインデックスにしてその大学の情報を取り出すことは可能でしょうか?

例えば

"University of Tokyo"はどこの国にあるの?"

"University of Oxford"の国内でのランクは?

のような情報の使い方をしたい時、大学名をインデックスにすると便利ですよね

この記事を読めば

  • EXCELデータの読み込み方
  • EXCELデータからSeriesオブジェクトの作り方
  • パラメーターindex_colの意味
  • Seriesからデータの範囲を指定するときの注意点

が分かります。

#今回使うEXCELデータ

前回の記事と同じく、data.worldさんのこちらのデータを使わせていただきます

(もしあなたが、CSVファイルのデータを使いたい時はこちらの記事を参考にどうぞ)

※データを読み込んだ後は、EXCELデータでもCSVデータでも手順は同じです。

スクリーンショット 2021-03-15 080550.jpg

#EXCELデータを読み込む

import pandas as pd
pd.read_excel("ファイル名")

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

read_excel()で読み込むとPandasのDataFrameとして読み込まれるので、DataFrame からSeries オブジェクトを作りましょう。
(DataFrame やSeries の違いが分からない方はこちらの記事を参考にどうぞ)

ただ今回はSeries オブジェクトを作ったら勝手に挿入される数字のインデックスを使うのではなく、大学名をインデックスにしてデータを調べていきたいので、

パラメーターusecols=に2つのコラム名を入れ、2つのコラムを取り出します

index.png

##index_col でコラムのうち1つをindex にする

先ほど取り出した2つのコラムのうちインデックスのように使いたい方のコラム名を指定します

read_excel のパラメーター index_col に

read_excel(index_col="インデックスとして使いたいコラム名")

と引数の値を書きます

スクリーンショット 2021-03-15 082649.jpg

上のスクショのようにコードを書きました。

実行結果は下記のようになり、大学名をインデックスにしたSeries オブジェクトができました。

スクリーンショット 2021-03-15 083137.jpg

#Series を使ってみる

ではさっそくSeries を使ってみます

今回は

index に大学名 (Institution)

data に大学の所在する国名(Location)

にしましたが、National Rank やQuality of Education ...と言ったコラムもデータには含まれていますので、あなたの好きなように加工してみてくださいね。

##python の辞書型のようにデータを取り出す

pythonでは、

dict["key"]

実行結果:value

とデータを取り出すことができました。

同じ要領で、

Series["index名"]

とすればそのindex 名に対応するデータを取り出すことができます

スクリーンショット 2021-03-15 085932.jpg

##注意点

University of Tokyo から Kyoto University の間のランクに位置する大学を調べてみましょう

範囲なのでpythonに入っている機能の範囲指定と同じく

[ start : stop ]

と書けばいいのですが、Series の場合stop の値も含めて表示されます。

stopの値は除外されるpython との違いに注意です。

スクリーンショット 2021-03-15 090304.jpg

データの最初から University of Tokyo までの大学を取りたい時

[:"University of Tokyo"]

とする時も同様に、University of Tokyo が含まれたデータが取り出されます。

スクリーンショット 2021-03-15 090705.jpg

##keyerror を避けたい時に使う.get() メソッド

python の辞書型のように key を指定したらデータが取り出されることは分かりました。

しかし、あなたが指定したkey が存在しないと

『keyerror』

が出てしまいますよね。

今回のデータで、もし大学ランキングに入っていない大学名を指定した時も同様に『keyerror』が出てしまいます

例えば、データに入っていない大学名を指定した時にエラーを出すのではなく

This university is not in list

と表示できると良いですよね。

そのような時に使えるのが

.get() メソッドになります

スクリーンショット 2021-03-15 100335.jpg
引用元:Pandasドキュメント

.get()メソッドはパラメーターに

key と default を取ることができると書いていますが、どういう意味でしょうか?

key にはインデックス(例えば1番目にあるものを取り出すときの0)でも、大学名("University of Tokyo" など)でも使うことができます

university_rank.get(key=0)
university_rank.get(key="University of Tokyo")

default = None の意味は、例えばkeyの引数に、Series のなかには存在しないインデックスや大学名を指定した時にエラーを出すのではなく、『None』何も出さないという役割をします。

###.get()メソッドのdefault の引数を変えてみる

では今回の実験でしたい事!

大学ランキングのデータ内にない大学名を指定した時に

エラーを出すのではなく、

『This university is not in list』

を表示させることはどうしたら良いのでしょうか?

.get(default= "This university is not in list")

とパラメーターdefault の引数の値をあなたが表示させたい物に変えてください。

今回『Ramen Daigaku』が大学ランキングに入っているか調べてみます

スクリーンショット 2021-03-15 102508.jpg

残念っ!

ラーメン大学はランキングに入っていませんでした。

しかし、エラーを出さずに表示させたい文章を表示する事ができました。

#まとめ

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

まだまだPandasの記事を引き続き書いていきますので、気長にお付き合いくださいませ<(_ _)>

お役に立てれば幸いです。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?