Pythonでスクレイピング

スクレイピングの例として、Yahoo からトヨタの株価を取得しグラフを描いてみる。
逐次確認しながら進めるため、Jupyter-notebookを使用する。

1.Yahoo からトヨタ(7203)の株価を取得する

2.株式のテーブルを取得し、その中の全行(tr)を取出す

結果は、次の様なリストになる。

3.株価データ用の2次元リストを作成する

出力結果の一部を示す

4.plotly で扱いやすくするため、2次元リストをデータフレームに変換する

5.plotly でグラフを描く

本来であれば「ローソク足」という株価特有のチャートにしたかったのだが
plotlyのものはとても馴染めないものだったので、折れ線グラフで妥協した。

geopandas のインストール

pip で geopandas のインストールが出来なかった。
同じ問題で悩んでいる方の福音となればとの想いで書留めたメモです。

当方の環境

  • windows 7 64bit
  • python 3.7(単独でインストール)

Visual c++ をインストールし、ググって調べたあらゆる方法を試みるも、パッケージの依存関係の所為か全て失敗に終わる。
そんな時に見つけたのが、Windows バイナリを入手してのインストール方法。

配布元:Unofficial Windows Binaries for Python Extension Packages

このサイトから、geopandas‑0.4.0‑py2.py3‑none‑any.whl を探しダウンロード。
(C:\Users\ユーザー名\Downloads にダウンロードしたものとする。)

次に

として、pip の実行。

悩みに悩んだ geopandas のインストールが、実に簡単に success!

ぬか喜びに終わらないよう、その動作確認を

既定のブラウザが起動し、地図が表示されて OK!。

なお、上を実行すると次のようなワーニングが出るが、無視して構わないらしい。

Apacheが起動しない場合の対策

このところ、ウィルスバスターが原因でPC起動時にapacheが立ち上がらない。
仕方ないので、「ウィルスバスター停止→xampp-controlからapache起動→ウィルスバスター再起動」を毎日繰り返している。
原因がはっきりしているので、こちらはトレンドマイクロに問合せ中であるが回答がない。

今朝方は、これに加え「PID 4」がポート80を使用してとのことで、上の手順でも起動せず。
インターネットをググって何とか対策ができたので、その手順を残して置く。

1. プロセスID(PID)の特定

ポート80を使用しているPIDを特定する

2. タスク名の特定

ポート80をListenしているPIDからイメージ名(タスク名)を調べる

3. サービスの停止

(2019/1/8 追記)
原因は、PID 4 System が port 80 を使用しているのが原因であった。
System 自体は停止できないので、その中でどのサービスが port 80 を使用しているかを特定する必要がある。
Opening Up Port 80 For Apache to Use On Windowsにその一覧が有るので、一つ一つサービスを確認する。

今回の原因は「Web Deployment Agent Service」(参考サイト(1)に同じ)。
このサービスが、何故起動するようになったかは不明ではあるものの、これまで使っていなかったので停止しても問題はなかろうとの判断の元、これを停止することにする。

「スタート→管理ツール→サービス」として、表示されたサービスの中から一致する名前を探し、それをダブルクリックして次のように設定する

(1)スターアップの種類→「手動
(2)サービスの状態→「停止

その後、apacheの起動。

4. 参考サイト

(1)Windows7でApacheが起動しない
(2)WebMatrix とポート80 の関係を断つ方法
(3)netstatでリッスンしているプロセスを特定する
(4)Windows で Port 80 を使っている PID 4 ってナニヤツ

Plotly オフライン・プロット

Plotlyオンラインプロットは素晴らしいのだが、無償の範囲で使用するとなると、登録できるプロット数が25迄なので、いろいろ試すにはちょっと少ない。
これが、商売なら$420/年程度なら高いとは思わないが、如何せん単なるお勉強程度の私にはやや高価過ぎ。
そこで、どうしても必要になるのがオフラインでの使用。
詳細については、こちらのページの中段よりやや下の「Initialization for Offline Plotting」に説明が記載されているが、自分用にまとめておく。

オフライン・プロットを行うためのメソッドが2つある。

  1. plotly.offline.plot()
    ローカルにHTMLファイルを作成/出力し、ブラウザにその内容を表示する
  2. plotly.offline.iplot()
    Jupyter notebook 内にプロット表示する

【使用例】

(1) plotly.offline.plot

これを実行すると、ソースを作成したフォルダに “temp-plot.html” が作成され、既定のブラウザにプロットが表示される。
ファイル名を指定する場合は、filename で指定する。

指定せずに、実行すると”temp-plot.html”となり、既に同名のファイルが存在する場合は上書きされる。

(2) plotly.offline.iplot

この場合、nootbook セッション内で次のステップを実行する必要がある。

使用例を以下に示す。

是さえ押さえておけば、Plotlyを心置きなく自由に使用できるはず!!

Anacondaよ、さようなら

anaconda のインストールはもう諦めた。
暫くは、anaconda のpythonをイジッていたのだが
或る時から、動作が遅くてどうにもならない。
再インストールしようとアンインストールしたのが
ケチの付けはじめ。

最新版をダウンロードして、意気揚々インストールを
試みるも、最後の最後でERROR

Error内容

こんなんで、エラー内容が分かるか?
色々ググって対策を試みるも全て×(ダメ)

その都度、何度アンインストールとインストールを繰返したことか!
パソコンの調子までおかしくなってしまう程。
海外のサイトも含め調べたが、同様に悩んでいる人が多数いるものの
これといった対策は皆無。

やりたいことが有るので、これ以上コイツに関わるのはやめた。

もう選択肢は、python の単独インストール一択のみ。
必要なものは、一つずつインストールしていくしかない。
まず、jupyter だけは必要なので、個別にインストール。
これだけで、私的には anaconda と同じ様な環境に!
と言うか、返ってストレスなくサクサクと動く想定を超えた環境。

パッケージの管理も、”pip”で十分。
Numpy、Scipy、pandas ・・・ 問題なくインストールできている。

Anaconda よ、さらば!

tibble の桁表示について

tibble とは、tbl_df クラスが付与された改良版の data.frame のことで、これを表示した場合、各変数(列)のデータ型が表示されたり、1 画面に収まるようデータが見易く編集された形式で出力されます。
data.frame よりは、処理速度の面でも優れているとのことなので tibble を使ってみたが、平均値を出力すると次のように数値が丸められて小数点以下が表示されない。

本来の数値は、次の通りであるべきですが・・・

こうなってしまうのは、tibble の使用する pillar というパッケージが有効数字や欠損値などの表示形式を勝手にイジってしまうためとのことです(詳しくは、こちらを参照)。

見易さを重視するため、数値の有効桁数がデフォルトで 3 に設定されており、それを超える数値は小数点以下の桁が丸められてしまうようです。
それを示すのが下の事例です。

これではちょっと困るので、デフォルトの有効桁を変更します。この変更には、options を使用します。

または、標準の print.data.frame()(上の例を参照) や print.data.table() を使うこともできます。また、print.tbl_df() 関数を上書きすることも可能で、次の様な設定を .Rprofile にしておけば print.data.table()(または print.data.frame())がデフォルトで使用されるようになります。

tibble を使用する場合は、表示された数値にくれぐれも注意してください!!

Graphviz 周りの用語

色々な単語が出てくるので、整理しておく。

用語 内容
diagrammeR R におけるグラフ(Graphviz)描画のためのパッケージ
grViz diagrammeR のグラフ描画用の関数。Graphvizにはない @@ 等の機能が追加されている。
Graphviz グラフ描画の本家本元。
dot グラフ記述用の言語。dot 自体は有向グラフ描画用。他に無向グラフ用に NEATO などもある。
viz.js JavaScrit 用のライブラリ。
full.render.js JavaScrit 用のライブラリ。V 2.0 より前はviz.jsだけをインクルードするだけだったが、V 2.0 からはこのライブラリもインクルードしなければならない。

Viz.js – HTMLでGraphviz

前置きはさておき、ここでは「Viz.js」の使用方法を例を持って示していきます。

【js ライブラリの取得】

GitHubから、

  • full.render.js
  • viz.js

をダウンロードして、好みの場所に配置します。

【実行サンプル】

viz-examplesscript-tagをクリックしてディレクトリを開き、その中のno-worker.htmlを開らいてソースコードをコピーします。それを、テキストエディタに貼付け、保存します。

ここでは、「01-original.html」として保存しました。
これを実行すれば、次の様なグラフが表示されるハズです。

【改善 その1】

グラフ記述部分(以下「Dot」)「digraph { a -> b; }」を外出しにします。

更に、(1) を次のように書き換えて見ます。
残念ながら「SyntaxError: ” string literal contains an unescaped line break」
Dot内に「改行」が使えない模様。

【改善 その2】

複雑な Dot を記述する時に、改行やタブが使えないようでは話になりません。
そこで、新たな改善策。

script タグ内に Dot を単独で定義するようにしました。
それを HTML ソースとして入力すれば、改行や余分なスペースが無視されることを利用しています。
これで、Dot 内でも改行が使用できるようになりました。

【改善 その3】

ここまで来ると、Dot を外部ファイルにしたくなるのは当然の成り行き。
ついでに、jQuery と Bootstrap も導入し DOM の操作や style の改善をしておきましょう。

【サンプル集】

  1. Cluster
  2. Data Struct
  3. Crazy
  4. multi_layout

Graphvizのテスト

Graphvizがwordpressでも使えるらしいのでテストしてみます。プラグインには「TFO Graphviz」を使用します。

おお、素晴らしい!

TFO Graphviz 使用方法

ショートコードの一般形式は次の通り。

のリストは下表の通り。

options 説明
height=”<image_height>” イメージタグに height 属性を設定する。SVG に有効
href=”self|<URL>” 画像をクリックした時に表示する URL を指定する。デフォルト:href=””、self:同じウィンドウ、<URL:指定のURL
id=”<id>” 生成された画像をイメージマップにリンクするために使用する識別子を指定する。これを指定しない場合は、”tfo_graphviz_N”(N:1からの連番)が自動生成される。
imap=”yes|no”
imap=”yes|no”
lang=”<dot|neato|twopi|circo|fdp>” 使用する Graphviz インタープリタを指定する。デフォルトは dot
output=”<png|gif|jpg|svg>” 生成する画像フォーマットを指定する。デフォルトは png
simple=”yes|no” コードの周りに非常に基本的な DOT ラッパーが適用される。

このコードは、次のコードが生成される。

title=”<title>” 画像のタイトル。画像を参照するための alt および title 属性で使用する
width=”<image_width>” イメージタグに width 属性を設定する。

Ubuntu 18.04 にTeXlive2018をインストール

LaTeX のインストールについては、apt-get による様々な方法が説明されています。しかし、何れの方法をとっても、RStudio において R Markdown を PDF に変換できないのです。何かが足りないようではあるのですが、その何かが分からない。エラーログが、もう少しユーザフレンドリーであったらな~

そこで、最も確実なインストール方法として TeX Live ホームページの手順に従うことにしたものです。

手順

  1. インストーラのダウンロード
  2. インストーラによる TeXlive のインストール
  3. シンボリックリンクの作成

1.インストーラのダウンロード

TeX Live ホームページに行き、”download” をクリックする。

遷移したページの中から、「install-tl-unx.tar.gz (3mb)」をクリックしてダウンロードする。

ダウンロードしたファイルを解凍します。

2.インストーラによる TeXlive のインストール

TeXlive のインストールは、次のコマンドを実行するだけです。

これを実行すると、ズラズラとメッセージが表示され、最後に次のメッセージが表示され、待ち状態になります。

ここで、「i」を入力して、Enter キーを押下するとインストールが始まります。
時間はかかりますが、操作が単純で余分なことをせずにフルインストールができるのが、素晴らしい点です。

3.シンボリックリンクの作成

インストールが完了したら、”/usr/local/bin”以下にシンボリックリンクを作成します。

(注):「2018」の部分は、TeXLive のリリースバージョン(年)毎に異なります。
これにてTeXliveのインストールは完了です。

動作確認

(1) TeX 文書

次の文書を、”sample.tex” として保存します。

端末から、次のコマンドを入力し、PDF 文書が作成されるかを確認します。

(2) R Markdown

RStudio から次の R Markdown を入力し、knit します。

「mainfont」は、自分の環境に合わせ変更してください。日本語フォントを指定しないと、日本語部分が削除され「2018712」と表示されます。

latex_engine について

latex_engine: lualatex としても latex_engine: xelatex としても、問題なく動作しました。
しかし、これを指定しないとエラーで動作が停止しますので、必ず指定してください。

(参考サイト)

  1. TeX Live 2018 のインストール
  2. Ubuntu 14.04 LTSにTeXlive2015をインストール

-以上-