こんにちは!
データサイエンティストのウマたん(@statistics1012)です。
元々大学院の研究でRを使っていたのですが、企業に入ってからはPythonを使うことが多くなりました。
やはりアカデミックの場ではRが使われることが多いのですが、実務の場ではより広範な範囲を抑えているPythonを使っているケースが多いです。
そんな経験もふまえて、この記事ではRとPythonの違いを徹底比較していきたいと思います。
以下の動画でも解説していますのでチェックしてみてください!
目次
Pythonの特徴
まずはじめにPythonの特徴についてカンタンにおさえておきましょう!
Pythonは、1991年に開発された言語であり、非常に分かりやすくコードがシンプルであることが特徴的な言語です。
C言語やJavaなどに比べると初心者の敷居が低いプログラミング言語と言えます。
ただ敷居が低いからといって、応用範囲が狭いわけではありません。
データ分析の文脈で使われることは確かに多いですが、単純なデータ分析以外にもできることの幅は広く様々なことが可能です。
WEBスクレイピング
データベース操作
API連携
Webアプリケーション開発
API連携やWebアプリケーション開発を行えるのでエンジニアに人気な言語でもあります。
AIやデータサイエンスの技術を組み込んだWebアプリケーションを作成する場合はマストでマスターしたい言語ですね!
また、Pythonはディープラーニングの実装に必要なライブラリが多数備わっていて、Rとの差別化ポイントになっています
Rの特徴
続いて、Rの特徴について見ていきましょう!
Rは1995年に開発された言語で、統計解析専門の言語になっています。
機械学習手法・統計解析まわりのライブラリはそろっており、データ分析において利用されるシーンが多いです。
先ほどPythonはデータ分析以外にも出来ることが多いと述べましたが、RはPythonのように幅広い利用は出来ずデータ分析がメインになっております。
一方でビジュアル化や統計解析に関しては非常に簡単に実装でき結果も分かりやすく優位性があります。
結局PythonとRってどっちがいいの?
さて、PythonとRの特徴についてそれぞれ述べてきました。
正直、どちらの言語も一長一短でどっちが確実に優れているとは言えません。
ただ、個人的には現在Pythonをほぼ使っているので、Pythonを使っておけばまず間違いないとは思っています。
ただ時と場合によってはもちろんRの方が優秀なケースもあるのでやはり使い分けが大事なんですけどねー!
どんなシーンにPythonとRのどちらが有用か簡単に見ていきましょう!
データ分析以外の汎用性であればPython!
先ほどもお話しした通り、Pythonはサーバサイド言語として使うことのできる優秀な言語です。
結局Webアプリケーションに組み込んだり、API連携など、サーバーサイド言語として利用する際はPythonが有用です。
そのため、エンジニアはPythonを使用することが多いです。
大規模データを扱うならPython!
Rだとメモリを食いやすいため、大規模データを扱う際はPythonが向いています。
また処理速度的にもPythonが優れているケースが多く、データ量が多い時はPythonを使うことをオススメします。
ディープラーニングを実装するならPython!
ディープラーニングを実装するならPythonが必須!
Rにも一部ディープラーニングを実装するライブラリはありますが、Pythonの方が豊富にそろっています。
またディープラーニングを実装するとなると必然的に大規模データになり処理が重くなるのでRよりもPythonの方がよくなりますね。
簡潔な記述ならR!
ここまでは圧倒的にPythonの方が良さそうに思えますが、Rは簡潔な記述が強みです。
簡単な統計的検定を行う際や回帰分析などの統計解析の枠組みで行う解析の実装と可視化はRの方が簡単に行うことができます。
そのため慣れている人は簡単な統計解析はRで行うという場合は多いみたいです。
予測はPython、説明はR
機械学習と統計学にはスタンスの違いがあります。
機械学習は予測精度を追究し、統計学は現状構造の説明を追究する。
先ほどのディープラーニングをはじめとした最新の手法群はPythonの方が早い段階でパッケージ化されて使えるようになる印象があります。
一方でRは統計学的スタンスに立っているので、現状のデータを簡単に把握することが出来ます。
機械学習的スタンスと統計学的スタンスの違いからPythonとRを見ていただけると違いが分かりやすいかもしれません。
PythonとRでの実装を見てみよう!
それでは実際にPythonとRでの実装を見ていきましょう!
データ分析のデータセットとして超定番のirisデータを使っていきます。
irisデータとはあやめの種類を分類したデータで目的変数は3カテゴリーの質的変数、説明変数は花びらの幅とか4つです。
サンプルは150個で、分類しやすいデータなのでどんな手法でも割と簡単に分類できるんですが、PythonとRでそれぞれ書いてみるとどうなるでしょう??
手法はランダムフォレストという決定木をアンサンブル(バギング)した手法を使用していきます。
まずはRから!
#ライブラリの読み込み
library(randomForest)
#irisデータの読み込み
data<-iris
ndata<-nrow(data)
#学習データと予測データに分割
ridx<-sample(ndata,ndata*0.5)
data.learn<-data[ridx,]
data.test<-data[-ridx,]
#randomforest
forest<-randomForest(Species~.,data=data.learn)
pred.forest<-predict(forest,newdata=data.test,type="class")
table(pred.forest,data.test[,5])
最終的に予測に対しての実測値をマトリックスで表した表が返ってきます。
pred.forest setosa versicolor virginica
## setosa 29 0 0
## versicolor 0 25 1
## virginica 0 2 18
まあそれなりの精度で当てられるわけなのですが、これをPythonで実装すると以下のようになります。
# ライブラリの読み込み
from sklearn.ensemble import RandomForestClassifier
from sklearn import datasets
from sklearn.metrics import confusion_matrix
from sklearn.model_selection import train_test_split
# irisデータの読み込み
iris = datasets.load_iris()
# 特徴量とターゲットの取得
data = iris['data']
target = iris['target']
#学習データをテストデータを分割
train_data,test_data,train_target,test_target = train_test_split(data,target,test_size=0.5)
#モデル学習
model = RandomForestClassifier(n_estimators=100)
model.fit(train_data, train_target)
# 混合行列を表示
pred_data = model.predict(test_data)
confusion_matrix(test_target, pred_data)
基本的にそれほど変わらないのですが、Pythonの方は可視化する際にライブラリをインポートしていますが、Rは標準で備わっていますね。
また、Rは目的変数を含んだデータフレーム型でデータセットを持っておりそのままモデル構築時に目的変数を指定していますが、Pythonは目的変数(ターゲット)と説明変数が別々に格納されております。
PythonとRをそれぞれ勉強する方法
PythonとRの違いについて徹底的に見てきましたが、実際それらをどのように勉強していけばよいでしょうか?
それぞれの勉強方法についておさえておきましょう!
Pythonのオススメ勉強法
Pythonは色々なサービスが展開していて学べるところはたくさんありますが・・・
まずは、以下のUdemyのPythonを学べるコースをご受講してみるのがオススメです!
僕自身が講師を努めており、非常に分かりやすくまとめているつもりです!
また、PyQというサービスもオススメ!Python特化のオンライン学習サービスで、ひたすらPythonコーディングを行うのにオススメです。
データサイエンスの理論まわりはあまり深く扱っていません。
ただUdemyやPyQは個人で進めることになるので、なかなかモチベーションも続きません。
僕自身なかなかお尻に火がつかない人間でプログラミングスクールに通ってPythonを勉強した経験もあります。
完全独学で勉強するのに自身のない人はぜひプログラミングスクールに通ってみることをオススメします!
僕自身は、テックアカデミーというスクールに通ったことがありますがメンターのクオリティが高いのでおすすめです!
しかしプログラミングスクールは高い・・・!ということで他と比べて圧倒的に安く学べるデータサイエンススクールを当メディアで運営しています。
その名もスタビジアカデミー(スタアカ)!
例えば以下の内容をミッチリ学んでいきますよー!!
・BigQuery上でSQL、Google Colab上でPythonを使い野球の投球分析
・世界最大手小売企業のウォルマートの実データを用いた需要予測
・ビジネス・マーケティングの基礎を学んで実際の企業を題材にしたマーケティングプランの策定
・Webサイト構築してデータ基盤構築してWebマーケ×データ分析実践して稼ぐ
興味のある方は是非チェックしてみてくださーい!
ご受講お待ちしております!
世の中には他にもたくさんPythonを学べるスクールはあります。以下の記事で比較していますのであわせてチェックしてみてください。
そしてある程度Pythonの素地が出来上がった後は、データ分析コンペティションのKaggleに挑戦してみることをオススメします!
Kaggleでは企業から提供されるデータを基にお題に沿って精度の高いモデルを構築していきます。
Pythonの勉強法については以下の記事でまとめていますので是非チェックしてみください!
Rのオススメ勉強法
正直Rに関しては研究時に論文を読んだり、実際に先行研究のRコードを眺めたりしながら勉強していたので明確な勉強法を伝えるは難しいのですが、以下の書籍が比較的分かりやすくオススメです!
Rを学べるサービスはあまりないんですよね・・・
Rのおすすめ勉強書籍については以下の記事でまとめています。
PythonとRの違い まとめ
PythonとRの違いについて徹底的に比較してきましたが、結局どちらも一長一短で使い分けるべきだよーってことです。
一概には言えませんが、アカデミックの世界ではRを使っている方が多く、ビジネスの世界ではPythonを使っている方が多い印象です。
最近はだいぶPythonに偏重してしまっていますが、たまにはRも使ってみるかなーと書きながら思いました。
そうなんです。
結局はいくらRが使えてもPythonが使えてもデータから何も生み出せなければ意味がない。
あまり手段にこだわりすぎず、目的を見失わないようにしたいですね!(自戒)
データサイエンティストへの勉強法について以下の記事でまとめていますので是非こちらもあわせてチェックしてみてください!