【Python】休講が多い授業ランキング作ってみた!(前編)

大学で授業を受けていて驚くことに、「休講」があると思います。

今日も授業か…と思うとしんどい時もありますが、休講の知らせを聞いた時は絶対嬉しくなりますよね。

そこで今回は、慶應大学の休講が多い授業をランキング形式にしてみました。果たして、どんな授業がランクインしているのかでしょうか!?

また、この記事では調査の方法について順を追って解説し、誰でも同じように作業ができるようにします。

ITの知識を付けておくことで、学生中にも、社会人になってからもできることの幅が広がるのでぜひ自分で手を動かしながら練習してみてください!

使用するツール

今回の調査では、大きく二つのツールを使っていきます(ツールという言葉にはちょっと違和感がありますが)。

一つはPythonというプログラミング言語で、もう一つはGoogleスプレッドシートです。それぞれについて詳しく見ていきましょう。

Python


Pythonはかなりメジャーなプログラミング言語です。少しでもプログラミングを勉強しようと思ったことのある人は、聞いたことがあるのではないでしょうか。

Pythonは機械学習をしたり、今回のようにAPIを叩いたりするときによく使われています。

お使いのPCでPythonのコードが動くようにするには環境構築が必要なので、リンクのProgateの記事に沿ってやってみてください。

今回の記事ではコードを貼っておくのでPythonの知識がなくても実行するだけで結果が返ってきますが、もっとPythonを勉強してみたいという方はProgateやドットインストールなどで勉強してみましょう!

Googleスプレッドシート


Googleスプレッドシートは、Excelのような表計算ソフトです。

機能的にはほとんどExcelと変わらないですが、Excelのようにソフトを購入してインストールしたりしなくても無料で使えます。

今回なんでExcelではなくスプレッドシートを選んだのかと言えば、一つ目は自分のインターン先ではExcelよりもスプレッドシートで作業することがとても多いからで、二つ目はunique関数が実装されているからです。

Excelには残念ながらありません。今回はこのunique関数を使い倒したいと思います。

調査の手順


Pythonの実行環境とスプレッドシートが用意できたら、調査を開始していきます。手順は、

①Pythonで慶應日吉キャンパス休講情報bot(@KeioHiyoshi_bot)慶應三田キャンパス休講情報bot(@KeioMita_bot)慶應矢上キャンパス休講bot(@KeioYagami_bot)から2017年秋学期と2018年春学期のツイートを取得する

②取得したツイートをスプレッドシートで整理して、ランキング形式にする
です。

この前編の記事では、①のツイートを取得するところまでをやり、後編の記事でランキング化していきます。

日吉のツイートを取得する

動かしたコード

日吉休講botのツイートを取得する際には、GetOldTweets-Pythonというライブラリを利用しました。

このおかげでかなり楽にツイートを取得することができます。以下にあるのが、私が動かしたコードです。

import got3 as got
import csv
import datetime
import lxml
#ユーザー名でツイートを取得
tweetCriteria = got.manager.TweetCriteria().setUsername(‘KeioHiyoshi_bot’).setSince(
“2017-09-01”).setUntil(“2018-08-31”)
tweets = got.manager.TweetManager.getTweets(tweetCriteria)

#csvファイルの名前を秒単位で設定する
nowDate = datetime.datetime.now()
file_name = ‘tweet_’ + nowDate.strftime(‘%Y-%m-%d_%H%M%S’) + ‘.csv’
f = open(file_name, “w”, errors=“ignore”)
writer = csv.writer(f)
writer.writerow([“tweet”, “created_at”])

for v in tweets:

tweet = v.text
created_at = v.date
writer.writerow([tweet, created_at])

f.close()

ダブルクオーテーションやシングルクオーテーションが内向きになっているのは使用しているフォントの問題なので、違和感があるかもしれないですが気にしないでください。

詳しいことはあまり解説しないですが、上のコードでは、日吉休講botの2017年9月1日から2018年8月31日の間のツイートを取得し、「tweet_2018-10-03_235237.csv」というような名前のCSVファイルを作成してくれます。

秒単位でCSVファイルの名前を指定することで、連続でコードを実行しても名前が衝突しないという点がミソです。

CSVファイル

CSVファイルとは、Comma Separated Valueの略だそうです。

私の理解としては、配列の配列としてデータを持ってくれてスプレッドシートやExcelで開くと良い感じに表示してくれるファイルくらいに思っています。
と言ってもよくわからないと思うので、実際にCSVファイルを開いてみましょう。

MacのNumbersで綺麗に整えられていて実際のCSVファイルの中身とは異なりますが、CSVファイルで欲しいデータはこんな感じです。

スプレッドシートでも同じように表示してくれて、これを先ほど述べたunique関数などで整理していきます。

あんまりピンと来てないと思いますが、後編の記事でこのファイルを実践的にゴリゴリ使っていくのでそちらで理解を深めてください!

tweepyで三田のツイートを取得する

動かしたコード

三田の休講情報はtweepyで取得しました。以下が、動かしたコードです。

import tweepy
import csv

consumer_key = “COUSUMER_KEY”
consumer_secret = “CONSUMER_SECRET”
access_key = “ACCESS_KEY”
access_secret = “ACCESS_SECRET”

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_key, access_secret)
api = tweepy.API(auth)
tweet_data = []

for tweet in tweepy.Cursor(api.user_timeline,screen_name = “KeioMita_bot”,exclude_replies = False).items():

tweet_data.append([tweet.id,tweet.created_at,tweet.text.replace(‘\n’,”),tweet.favorite_count,tweet.retweet_count])

#csv出力
with open(‘tweets_20181004.csv’, ‘w’,newline=”,encoding=‘utf-8’) as f:

writer = csv.writer(f, lineterminator=\n)
writer.writerow([“id”,“created_at”,“text”,“fav”,“RT”])
writer.writerows(tweet_data)

pass

consumer_keyのあたりには、twitterのデベロッパーページから自分のtwitterアカウントの情報を入力する必要があります。

あとGetOldTweets-Pythonの時と違ってファボやRTの情報も入っていますが、特に何も考えずに入れちゃっただけ(GetOldTweet-Pythonでは外した)なので、ライブラリの違いとかではないです。

おそらくGetOldTweets-Pythonよりもtweepyの方がメジャーなライブラリで、実際私も最初はこっちを使ってツイートを取得しました。
しかし、別件で使った時になぜか100件くらいしか取れなかったことがあり、またconsumer_keyを確認して入力したりするのもめんどくさいなと思ったので、私は前者の方を好んで使っています。

またファイル名は手を抜いてベタ打ちしていますが、今回は目を瞑っていただきたいです。

実行する

上記と同じ要領で、矢上キャンパスについてもコードを用意しておきます。

そしてそのコードが書かれているファイルの名前を、それぞれ三田ならgetTweetsMita.py,日吉ならgetTweetsHiyoshi.py,矢上ならgetTweetsYagami.pyというに設定しましょう。

そうしたら、ターミナルでファイルの置かれているディレクトリを降りて

python getTweetsMita.py

とすればファイルを実行し、CSVファイルを作ってくれます!

終わりに

いかがでしょうか?

前編では、twitterからツイートをPythonで取得して、CSVファイルを手に入れるというところまでやりました。

もしかしたら、プログラミングに触れたことのない人にとっては何のことを書いているのかさっぱりだったかもしれません。

ただ私個人としてはITリテラシーはこれからなくてはならないものだと考えているので、このくらいのことでしたらぜひ大学生であるうちに身につけておいてほしいと思っています。

自分でささっと手を動かして分析できるようになればめちゃめちゃ強いです。

これからもこのようなITについての記事をたくさん発信し続けていって、慶應生のITリテラシーの向上に寄与したいと思いつつ、私自身もっと良い説明ができるように頑張っていきます!

とりあえず今回の記事ではデータを取得してCSVファイルに落とすという流れがあるということだけでも覚えてください。

そして後編では、スプレッドシートで今回取得したCSVファイルを整理して休講の多い授業をランキング形式で発表します。新たな楽単がベールを脱ぐのか!?乞うご期待!!

参考記事

GetOldTweets-pythonは、以下の記事を参考にしました。

tweepyについてはたくさんの記事がありますが、今回は以下の記事を参考にしました。

ABOUT この記事を書いた人

みかん

川崎フロンターレを応援しているライターです。 良い記事を届けられるよう頑張ります。よろしくお願いいたします。 (トークルーム機能も備えている時間割アプリPenmarkもぜひよろしくお願いいたします。)
RANKING 今、読まれている記事
PR プロモーション
TWITTER 公式アカウント