mozyのかきおき

mozyの読書感想文や思考置き場

Pandasを使って時刻表をスクレイピングしてみる

やること

つくばエクスプレス(TX)の快速のみ、次の発車時刻までカウントダウンするAppleWatchアプリが作りたいなと思っている。

必要なこと

AppleWatchを買う*1

TXの時刻表をスクレイピングしてくる。

AppleWatchアプリを作る。

やったこと

AppleWatchは届いていないのでデータの準備をしておく。

データがなければ始まらない。とりあえずは、TXの時刻表をスクレイピングしてみた。

スクレイピングをするには、BeautifulSoupやScrapyなど、色々なツールを使うと良いようだ。以下のページに詳しくまとまっているので参考にすると良さそう。

orangain.hatenablog.com

今回は、pythonのライブラリ、Pandasを使う。

なぜPandasかというと、もともとデータ操作が色々できるライブラリなのだけど、URLを指定したらwebサイトから直接データ入力も可能らしいということを知ったので使ってみたいと思う。すごいな、Pandas。知らなかったよ。

Pandasについてはここら辺を参照

10分でPandasを学ぶは大変良い。最高にわかりやすい。

qiita.com

Python Data Analysis Library — pandas: Python Data Analysis Library 

コード例

今回は以下のページを対象にスクレイピングしてcsvファイルに固めてみる。

列車別時刻表(平日上り) | 列車別時刻表 | 時刻表・運賃 | つくばエクスプレス

import pandas



url = "http://www.mir.co.jp/timetable/weekday_up.html" # TX平日上り

fetched_df = pandas.io.html.read_html(url)

print(fetched_df[0])
fetched_df[0].to_csv('output.csv'

これで同じディレクトリ内にoutput.csvが生成されていると思う。結構簡単にできました。データを見てみると、多少ずれているけれども、使えるデータがサクッと取得できたかなと思う。

f:id:mozy_ok:20170623205052p:plain

けつろん

webページにtable要素がある場合、PandasでURLを指定すればスクレイピングは容易にできるってことがわかりました。

みんなもサクッとスクレイピングでよしなにデータをつくりましょう。

*1:一番難しい

Tethne を使って web of science の引用ネットワークを可視化してみる

やること

python ライブラリ Tethne を使って引用のネットワーク構造を可視化してみる。(ほとんどチュートリアル通り)

f:id:mozy_ok:20170621022517p:plain

やってみた結果こんな感じになった。

Tethneとは

Tethneは、書誌のメタデータを解析して解析するためのPythonソフトウェアパッケージです。このプロジェクトの最も重要な目標は、学者が共著者や共引用グラフなどのメタデータベースのネットワークモデルを簡単に作成できるようにすることです。

Tethneを使用して、ISI Web of Science、JSTOR Data-for-Research、さらにはZoteroコレクションの書誌メタデータを解析することができます。

Tethneは人文科学や社会科学の技術に精通した学者、特に科学的変化に関心のある人たちを念頭に置いて開発されました。

とな。以下の参考サイトより引用

Tethne 0.8 Documentation — tethne 0.8 documentation

https://pythonhosted.org/tethne/index.html

という訳でとりあえず、インストールしてみる。(※注 Tethneは python2系で動くので環境に注意。pyenvなどで環境を作ると良いと思う。)

pip install tethne

インストールはそこまで時間がかからないが、pipでのインストールを待っている間に、可視化のために使う、Cytoscapeというソフトウェアをダウンロードしてインストールしておく。*1

www.cytoscape.org

Cytoscapeとは

オープンソースのネットワーク可視化ソフトウェアです。

とりあえずは、この記事を読むと良さそう。というかめちゃわかりやすくて詳しい。

qiita.com

Web of Scienceとは

Web of Science(ウェブ・オブ・サイエンス)は、トムソン・ロイター(旧トムソン)の科学部門であるサイエンティフィック(Scientific)により提供されているオンラインの学術データベースである。

Web of Science - Wikipedia

Web of Science 略してWoSがすごいのは、あらゆる分野を網羅していて、論文の分析データなども充実しているところ。論文のインパクトファクターなども調べることができたり、全ての論文の引用、被引用情報が索引付けされているところです。また、評価の高い論文のみを収録していて、情報の信頼性が高いんだってさ。

世界の論文Top100とかって記事の元データになっていたりもするとな。

という訳で、WoSの特徴である引用、被引用情報が索引付けしてある特徴を活かして、注目した論文の引用ネットワークを作ってみようと思う。 

 WoSからデータをダウンロードしてくる

---追記予定

実際にコードをかく

まずは、WoSのデータを解析するために、ライブラリのインポートと、ファイルを読み込む。

from tethne.readers import wos
corpus = wos.read('/path/to/my/data.txt') # /path/to/my/data.txt にはDLしてきたWoSのファイルのパスを指定する。

コーパスの長さを確かめる

len(corpus) 

---追記予定

from tethne.networks import coauthors
coauthor_graph = coauthors(corpus)
from tethne.networks import cocitation
cocitation_graph = cocitation(corpus, min_weight=3)
from tethne import GraphCollection
coauthor_collection = GraphCollection(corpus, coauthors)
coauthor_collection.node_distribution()

from tethne.writers.graph import to_graphml
to_graphml(coauthor_graph, '/path/to/my/graph.graphml')

可視化してみる。

先ほど生成した、graph.graphmlをCytoscapeにて開くとこういう画面が出てくると思う。*2

f:id:mozy_ok:20170621034019p:plain

ここで、from Network File... を選んで少し待つとネットワークが作成される。やったね。

レイアウトは、上側のカラムで変更できるので、色々変更して眺めてみると面白いかもしれません。

f:id:mozy_ok:20170621035016p:plain

円形

f:id:mozy_ok:20170621035143p:plain

わちゃわちゃ

f:id:mozy_ok:20170621035640p:plain

 

*1:Javaも使うので、それも環境に合わせてよしなにダウンロードなどしてください。 

*2:起動時に、アプリケーション“Cytoscape.app”へのネットワーク受信接続を許可しますか? などとでることがあるかもしれない。

じぶん銀行 スマホATM は最高なんじゃなかろうか

ここ数年、お財布を持ち歩かずに、カード入れだけで生活をしていたのですが、レシートを貰ったらパンパンになって意外とかさばるし、

結局、鍵、スマホ、サイフ(カード入れ)と、現代の三種の神器を持ち歩くことからは逃れられなかったのですよ。

そんな時に、iPhone7&Apple Payが登場してクレジットカードとSuicaすら持ち歩かなくてもいい時代が来た。やったー。とか思っていたけれど、現金しか使えないお店に行った時困っていたんですよね。そして仕方なく、銀行のキャッシュカードを持ち歩くと…。便利だけどあと一歩足りてなかったのよね…。

しかし、先ほどこの記事を見てもうキャッシュカードを持つ必要がなくなるなと思ってじぶん銀行の口座開設をしてみた。

真の意味で「iPhoneがあれば財布なしで生きられる」ように。キャッシュカードすらもiPhoneに入る「スマホATM」の威力|ギズモード・ジャパン

 

スマホアプリでATMの画面に表示されるQRを読み取るだけでお金がおろせる。しかもセブンイレブンで使えるとな。便利そうだ。

私はSoftBankユーザだけど、じぶん銀行を使って行くのかね。笑

口座開設が終わったら追記しよう。

Swift iPhoneアプリ制作入門中

最近Swiftを使ってiPhoneアプリを制作している。

その際に気がついたことをまとめてみる。順次追加していこう。

いわゆる忘備録ってやつ。☺︎ 

 

エラーコード

> Select a development team in the project editor.

これは、プロジェクトの一般設定から チームIDをきちんと指定すれば直る。

あとはiOSのバージョンなども確認しておこう。

 

アプリを実機で動かしたいとき。

Xcode側から転送できないときなどがある。その時は、接続を確認しないといけない。

その場合、Xcode->Preferences->General->Dialog Warnings の部分をリセット。

転送はできたけど、署名うんぬんと言われて起動できない時がある。

その場合、iPhone側で設定->一般->プロファイルとデバイス管理->デベロッパAPP の部分の署名を認証しないといけないようだ。

 

自分のための Tips

View Controller とコードとの接続などでごちゃごちゃになるので

一旦ボタンなどを配置してからコードと繋いだ方が良さそうな感じがある。

あと、ストーリーボードとコードとがうまく繋がっていない場合は、ビルドエラーなどが出るわけではなく、実際に動かす際に、落ちたり固まったりするので注意かもしれない。

 

 

Braava jet を買ったぞ! Hackにトライ編

前回、Braava jetを買った記事を書いたが、

そこで、iPhoneのアプリとBluetoothで接続して操作できるということがわかった。
mozy-ok.hatenablog.com

 じゃあブラーバと何らかの方法で通信できれば、スケジュール機能だったり、

コントロールして遊べるんじゃないかなと思って調査を開始した。

調査編

ソフトウェアから追っていく

以前ルンバ500シリーズをHackして遊んでいた時は、ルンバの外装を外せば、IOポートがあったので超簡単にHackが可能だった。

(そもそも、500時代は公式でリファレンスが出ていた。PDF注意http://www.irobot.lv/uploaded_files/File/iRobot_Roomba_500_Open_Interface_Spec.pdf)

しかし今回は、ざっと探した限りそうでもなさそう。接続方式がBluetoothというのもちょっと厄介かもしれないなぁ。

ブラーバジェットと同様にルンバ980も、iPhoneのアプリで操作できるのだけれども、そちらの接続はWiFiとなっていて接続できるようだ。

参考: 

ルンバハック – しくみ製作所ブログ

「Hey Siri 掃除をして」で、Roomba(ルンバ)に掃除をしてもらう | マルチクラウドインテグレーター データホテルのテックブログ

 

また、pyirobotと言うpyhtonライブラリがあって、

そちらには

This ia a python module for controlling the iRobot Roomba 980 (and possibly Roomba 960 and Braava Jet, but those are untested)

とある。もしかしたら未踏峰

pypi.python.org

 

ハードウェアから追っていく

ブラーバジェットの内部構造とはどうなっているのかというと、外装を外すと以下のように基盤が入っているようだ。

f:id:mozy_ok:20170601183047j:plain

http://www.robotreviews.com/chat/viewtopic.php?f=21&t=19186 から引用。

これを見るとCPUはARMのものが使われているのがわかる。先ほどのサイトの議論にもあったが、Cortex-M3 だと思う。

 

一旦ここまで。☺︎

Braava jet を買ったぞ! Hackもするよ(ただいま調査中

ブラーバジェットの「すくえあ」、新しい家族が増えました。

以前から、二台のルンバたちに部屋のお掃除を手伝ってもらっていたのだけれど、ルンバでは、フローリングのベタつきなどが取れないため、クイックルワイパーなどで毎回モップがけをしないといまいちスッキリしなかったのです。

そこで、今回、床をモップがけしてくれるブラーバジェットを購入してみた。

サイズは写真にあるように ルンバよりも結構小さくってキュート。白いボディに青ラインも清潔感があって素敵です。

f:id:mozy_ok:20170601172757j:image

上の二台のルンバは、左から「ピヨ彦」、「まるのうち」

 

水をタンクに入れて、パッドを取り付けて、スタート!

掃除してもらった部屋は14畳程度あるのですが、途中で水のタンクが空になって水が出なくなった以外は問題ありませんでした。

後述するアプリの設定から水の噴射量を調整できたので、それでこの問題は改善しそうです。掃除の能力は十分でした。時間は30分程度で床がかなり綺麗になりました。

f:id:mozy_ok:20170601175132j:image

掃除が終わった後のパッドの様子。びっくりするぐらい汚れが付いている...。ルンバが二台とも元気よく走った後なのに...。(苦笑

 

iPhoneアプリが便利

「すくえあ」というのは、新しく仲間入りしたブラーバジェットの名前。

四角いし、はんぺんみたいだし、健気に真面目に掃除をするのですくえあって命名しました。

f:id:mozy_ok:20170601173926p:image

ブラーバはiPhoneBluetoothで接続して掃除を開始したり、バーチャルウォール(進んで欲しくないエリアを仮想的に指定できる機能)を設定できる。

寝ながらボタンをぽちーって押せばフローリングのお掃除を開始してくれると言うわけ。便利です。

 

そこで気がついた、Bluetooth付いてる。ってことは...??

Hackできるやん!!やってみよう。

Braava jet Hack編は別の記事にします。

 

mozy-ok.hatenablog.com

 

サンファ Process

最近、Apple Musicを契約したので、国内外の様々な音楽を聴いています。

普段は、東京事変さんや、HALCALIさんなどの邦楽を聴いていたのですが、

Apple Musicには、聞いた事がないような国外の音楽がたくさんあがっていて ジャンルごとのラジオなども聴くことができるので良曲をふとした拍子に発見できてうれしいです。

先ほど、

サンファ - Process

というアルバムを見つけてわあこれはいい曲ばかりだぁ。と思ったので記録しておきます。

 

この サンファ というアーティストは、サウスロンドン出身で、今までにドレイクなどのアーティストとコラボ作品があったのですが、このアルバムがデビューフルアルバムとなるようです。

 

Plastic 100°C から始まって What Shouldn't I Be? で終わる10曲40分間。

Plastic 100°C のピーっととても短い1音電子音のあと、なんとも形容しがたい、悲しげで、しかし、決意の朝の情景が浮かぶようなバックミュージックが始まり、アルバムが徐々に色づいていきます。私は、海に向かって立つ、アジアの夜明け前の空、瑠璃色に沈んだ、静かで優しい世界に、希望と不安の色とを織り交ぜたオレンジの世界が混ざっていく情景を想像しました。

どの曲も最高なのですが、僕の中では、2曲めのBlood On Me という曲がイチオシです。この曲では、1曲目の雰囲気と打って変わり、軽快でいて優しいドラムの裏打ちの音に合わせて丁寧なピアノが流れていきます。そして40秒を過ぎた頃、優しくも力強いヴォーカルが、鼓動を打っている心臓が、生きる証明を刻んでいきます。

youtu.be

 

この曲は、自身の弱さとの対話、自分の内面との対話を歌っているのかなぁと感じました。自身の弱さを隠し外界へと枝を伸ばしていく自分。本当の感情から追われる自分の遣る瀬無さや、こんな自分の弱さを破壊してしまえ。という感情だとか。

 

P.S.

このアルバムを聞いていて、ヴォーカルの声が似ているのかなぁ、ルディメンタルを思い出しました。

 

Process

Process

  • サンファ
  • エレクトロニック
  • ¥1500