- 統計解析については R >> Python
- その他についてはPython >> R言語
- Jupyter notebook で PythonとRを組み合わせて使うスタイルがおすすめ
R | Python | |
---|---|---|
環境 | RStudio, jupyter | jupyter, etc |
データ整形 | dplyr(tidyverse) | pandas |
統計 | いろいろ | scipy.stats, statsmodels |
グラフ | ggplot2 | seaborn, plotnine(ggplot-like) |
Rの特徴
- tidyverse(dplyr, ggplot)の使い勝手がよい
- 統計パッケージは充実しておりドキュメント,本も豊富
- それ以外の言語機能、パッケージについてはpythonより数段おちる?特に文字列処理など?
- そもそもR言語の設計いまいち感を感じる。
Pythonの特徴
- 文字列処理しやすい. 前処理に向いている.
- グラフライブラリ seabornが有名だけど、ggplotと比較するとかなり使い方に癖がある.
- 通常の統計解析はRより数段おとる
Jupyter notebook環境構築
手元の環境が汚れるのがいやなので、Dockerを使っている.
https://github.com/jupyter/docker-stacks/ をベースに必要なパッケージを追加している
official/Dockerfile
FROM jupyter/datascience-notebook
USER root
# .ipython/profile_default/startup/01-startup.ipy でデフォルトでロードされるモジュールを定義
ADD 01-startup.ipy /home/jovyan/.ipython/profile_default/startup/
RUN chown jovyan:users -R /home/jovyan/.ipython
RUN apt-get update && \
apt-get install -y --no-install-recommends \
fonts-ipafont graphviz libgraphviz-dev graphviz-dev pkg-config -y --no-install-recommends && \
rm -rf /var/lib/apt/lists/*
RUN pip install --upgrade pip
USER $NB_UID
# Jupyter notebook extensions <https://github.com/ipython-contrib/jupyter_contrib_nbextensions> の設定
RUN pip install jupyter_contrib_nbextensions
RUN jupyter contrib nbextension install --user
RUN pip install tensorflow==1.10.0 numpy==1.14.5 pandas
RUN pip install openpyxl pymc3 plotnine pyarrow opencv-python keras plydata networkx --upgrade
RUN pip install sympy
RUN pip install scikit-misc graphviz
RUN pip install redis
RUN pip install xlsxwriter
RUN pip install flask flask-wtf flask-bootstrap
# fontList.jsonを消しておくと、フォント変更後にmatplotlib.font_manager._rebuild() する必要がない。<https://qiita.com/yniji/items/3fac25c2ffa316990d0c>
RUN rm .cache/matplotlib/fontList.json
RUN jupyter nbextension enable tox2/main
RUN jupyter nbextension enable nbextensions_configurator/tree_tab/main
.ipython/profile_default/startup/01-startup.ipy
import pandas as pd
import numpy as np
import seaborn as sns
import scipy.stats as stats
import matplotlib
from matplotlib import pylab as plt
from IPython.display import display, HTML
import statsmodels.api as sm
from statsmodels.formula.api import ols
from rpy2.robjects import r as R
%load_ext rpy2.ipython
%matplotlib inline
docker-compose.yml
version: '2.3'
services:
official:
restart: always
build: official/.
container_name: myjupyter
ports:
- "8888:8888"
- "5000:5000"
volumes:
- ~/projects/myjupyter:/home/jovyan/myjupyter
- ~/.keras:/home/jovyan/.keras
command: "start-notebook.sh --NotebookApp.token=''"
links:
- redis
redis:
restart: always
image: redis
volumes:
- ~/tmp/redis:/data
command: redis-server --appendonly yes
一時ファイルのキャッシュとしてredisを使うのでdocker-composeで一括管理している
データ解析の基本的な流れ
- pythonで
- excel, csvのロードと匿名化
- 前処置
- 適宜、DataFrameはpickleしlocalのredisにセーブしておく
- jupyter notebookで
- rpy2をつかってRとpythonで相互にデータやりとりできる
- データ整形、集計 (pandas, dplyr)
- グラフ(plotnine, ggplot2)
- 統計解析
Rpy2
RをIPython Notebookから使うhttps://oku.edu.mie-u.ac.jp/~okumura/stat/ipynb.html
Jupyterで1つのノートブック内にRとPythonを共存させる https://qiita.com/tanakarian/items/609b550c4b18e5a4b925
上記とおり、"%R -i", "%R -o", "%%R" だけで相互にデータやりとりできる
Comments
comments powered by Disqus