R 終了時のワークスペース保存確認を表示しない

R を終了するときに、ワークスペースを “>RData” に保存するかどうかを尋ねられます。
いろいろなサイトを当ってみても、「保存しない」のが一般的なようだ。
しからば、そのダイアログを出さないようにしてしまいましょう。

R Console の場合

R console のショートカット→右クリクック→プロパティ
表示されたプロパティの「リンク先」に、図のように “–no-save” を追加する。

RStudio の場合

RStudio を開き
Menu の “Tools” → “Global Options…” で Options を開き
次の個所を

以下のように変更する。

以上

Jupyter Notebook の初期ディレクトリ

パソコンも windows 10 になり、どうしてもインストールができなかった Anaconda が使えるようになったので jupyter notebook を起動すると、Edge が起動し”C:Users\ユーザ名” が初期ディレクトリとして開かれる。

これを、Chome で初期ディレクトリとして “G:\python” に変更するため

として、
~/.jupyter/jupyter_notebook_config.py
を作成し、以下のように変更。

これで、「スタートメニュー → Anaconda3(64bit) → Jupyter Notebook」
で起動すると、ブラウザは Chrome になったものの、ディレクトリは依然として元のまま変更されない。
これを、コマンドプロンプトから起動すると、指定通り G ドライブに切り替わっている。

これは、起動コマンドの問題だろうと推測できるので、
「スタートメニュー → Anaconda3(64bit) → Jupyter Notebook」を右クリックし、
「その他 → ファイルの場所を開く」
そのフォルダ内の「Jupyter Notebook ショートカット」を
「右クリック → プロパティ」
でプロパティの「リンク先」を見ると

吃驚するほど長いが、環境変数 “%USERPROFILE%/” が怪しいのでググってみると、これが初期ディレクトリを指定しているものらしい。
一応、バックアップのためリンク先をエディタに張り付けた後、リンク先から直接
“%USERPROFILE%/” 部分を削除

これで、 “G:\python” が初期ディレクトリとして開かれるようになりました!

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