# 【5分で分かる】PythonとRの違いをデータサイエンティストが徹底比較！結局どっちがいいの？

> 本記事では、データ分析の言語として非常によく使われるPythonとRのどっちを使いべきなのか、何が違うのか、という議論をしていきたいと思います。昔Rを使っていて最近はPythonばっかり使っている人間がPythonとRの違いを徹底比較して…

- URL: https://toukei-lab.com/python-r
- 公開: 2022.11.29 / 更新: 2024.12.16
- サイト: スタビジ（https://toukei-lab.com）

:::talk{who="umatan"}
本記事では、データ分析の言語として非常によく使われるPythonとRのどっちを使いべきなのか、何が違うのか、という議論をしていきたいと思います。昔Rを使っていて最近はPythonばっかり使っている人間がPythonとRの違いを徹底比較していきますので是非理解してくださいね！
:::

こんにちは！

データサイエンティストのウマたん([@statistics1012](https://twitter.com/statistics1012?lang=ja))です。

元々大学院の研究でRを使っていたのですが、<mark>企業に入ってからはPythonを使うことが多くなりました。</mark>

やはりアカデミックの場ではRが使われることが多いのですが、実務の場ではより広範な範囲を抑えているPythonを使っているケースが多いです。

:::talk{who="robotan"}
なんとなーく使っているけど、Pythonの違いってRの違いって結構曖昧だよなー・・・
:::

:::talk{who="umatan"}
そうだよねー、PythonにはPythonの良さがRにはRの良さがあるからそこを徹底的に比較していくよ！
:::

そんな経験もふまえて、この記事ではRとPythonの違いを徹底比較していきたいと思います。

以下の動画でも解説していますのでチェックしてみてください！

::youtube{#kUz_r6aQTtU}

## Pythonの特徴

![Python](/wp-content/uploads/2017/12/python-screenshot.png)

まずはじめにPythonの特徴についてカンタンにおさえておきましょう！

Pythonは、<mark>1991年に開発された言語であり、非常に分かりやすくコードがシンプルであることが特徴的な言語</mark>です。

C言語やJavaなどに比べると**初心者の敷居が低いプログラミング言語**と言えます。

ただ敷居が低いからといって、応用範囲が狭いわけではありません。

データ分析の文脈で使われることは確かに多いですが、<mark>単純なデータ分析以外にもできることの幅は広く様々なことが可能</mark>です。

:::box{title="Pythonで出来ること"}
**WEBスクレイピング**\
**データベース操作**\
**API連携**\
**Webアプリケーション開発**
:::

API連携やWebアプリケーション開発を行えるのでエンジニアに人気な言語でもあります。

<https://toukei-lab.com/python-webapp>

<mark>AIやデータサイエンスの技術を組み込んだWebアプリケーションを作成する場合はマストでマスターしたい言語ですね！</mark>

また、Pythonは[ディープラーニング](/deep-learning-study)の実装に必要なライブラリが多数備わっていて、Rとの差別化ポイントになっています

<https://toukei-lab.com/python-can>

## Rの特徴

![R](/wp-content/uploads/2017/12/r.png)

続いて、Rの特徴について見ていきましょう！

Rは**1995年に開発された言語で、統計解析専門の言語**になっています。

機械学習手法・統計解析まわりのライブラリはそろっており、<mark>データ分析において利用されるシーンが多い</mark>です。

先ほどPythonはデータ分析以外にも出来ることが多いと述べましたが、RはPythonのように幅広い利用は出来ずデータ分析がメインになっております。

一方で<mark>ビジュアル化や統計解析に関しては非常に簡単に実装でき結果も分かりやすく優位性があります。</mark>

:::talk{who="umatan"}
Rはビジネスよりも学術的な方で使われるイメージがあるね！
:::

## 結局PythonとRってどっちがいいの？

![python](/wp-content/uploads/2019/08/Admin-amico-min.png)

さて、PythonとRの特徴についてそれぞれ述べてきました。

:::talk{who="robotan"}
なんとなーくそれぞれの特徴は分かったけど、結局どっちがいいの？
:::

:::talk{who="umatan"}
曖昧な表現になってしまうけど、シーンによってやっぱり使い分けることが重要かな！
:::

正直、**どちらの言語も一長一短でどっちが確実に優れているとは言えません。**

ただ、個人的には現在Pythonをほぼ使っているので、<mark>Pythonを使っておけばまず間違いないとは思っています。</mark>

ただ時と場合によってはもちろんRの方が優秀なケースもあるのでやはり使い分けが大事なんですけどねー！

どんなシーンにPythonとRのどちらが有用か簡単に見ていきましょう！

### データ分析以外の汎用性であればPython！

先ほどもお話しした通り、<mark>Pythonは**サーバサイド言語**として使うことのできる優秀な言語です。</mark>

:::talk{who="umatan"}
データ分析だけじゃないのがPythonの魅力だよ！！
:::

結局Webアプリケーションに組み込んだり、[API連携](/api)など、サーバーサイド言語として利用する際はPythonが有用です。

そのため、エンジニアはPythonを使用することが多いです。

### 大規模データを扱うならPython！

Rだとメモリを食いやすいため、<mark>大規模データを扱う際はPythonが向いています。</mark>

また処理速度的にもPythonが優れているケースが多く、データ量が多い時はPythonを使うことをオススメします。

:::talk{who="umatan"}
ログデータなどを扱う時は数億レコードの解析もザラだからね！
:::

### ディープラーニングを実装するならPython！

ディープラーニングを実装するならPythonが必須！

Rにも一部ディープラーニングを実装するライブラリはありますが、Pythonの方が豊富にそろっています。

:::talk{who="umatan"}
そうなんだよー、ディープラーニング系はPythonが必須・・・
:::

また<mark>ディープラーニングを実装するとなると必然的に大規模データになり処理が重くなるのでRよりもPythonの方がよくなりますね。</mark>

### 簡潔な記述ならR！

ここまでは圧倒的にPythonの方が良さそうに思えますが、Rは簡潔な記述が強みです。

簡単な[統計的検定](/%E6%A4%9C%E5%AE%9A)を行う際や[回帰分析](/%e5%9b%9e%e5%b8%b0%e5%88%86%e6%9e%90)などの統計解析の枠組みで行う解析の実装と可視化はRの方が簡単に行うことができます。

そのため慣れている人は簡単な統計解析はRで行うという場合は多いみたいです。

:::talk{who="umatan"}
Python偏重になってしまっていて、あまりRとの使い分けは出来てないんだけどね・・
:::

### 予測はPython、説明はR

**機械学習と統計学にはスタンスの違いがあります。**

<mark>機械学習は予測精度を追究し、統計学は現状構造の説明を追究する。</mark>

:::talk{who="umatan"}
機械学習と統計学の違いは結構大事！
:::

先ほどのディープラーニングをはじめとした最新の手法群はPythonの方が早い段階でパッケージ化されて使えるようになる印象があります。

一方で<mark>Rは統計学的スタンスに立っているので、現状のデータを簡単に把握することが出来ます。</mark>

機械学習的スタンスと統計学的スタンスの違いからPythonとRを見ていただけると違いが分かりやすいかもしれません。

<https://toukei-lab.com/machinelearning-statistics>

## PythonとRでの実装を見てみよう！

![pc python](/wp-content/uploads/2019/08/Work-time-amico-min.png)

それでは実際にPythonとRでの実装を見ていきましょう！

データ分析のデータセットとして超定番のirisデータを使っていきます。

:::talk{who="umatan"}
irisデータは分かりやすいからよーく登場するよ！！
:::

irisデータとはあやめの種類を分類したデータで目的変数は3カテゴリーの質的変数、説明変数は花びらの幅とか4つです。

サンプルは150個で、<mark>分類しやすいデータなのでどんな手法でも割と簡単に分類できるんですが、PythonとRでそれぞれ書いてみるとどうなるでしょう？？</mark>

:::talk{who="umatan"}
どんな手法でも比較的分類しやすいから精度比較をする上ではあまり不適切かなー！
:::

手法は[ランダムフォレスト](/%e3%83%a9%e3%83%b3%e3%83%80%e3%83%a0%e3%83%95%e3%82%a9%e3%83%ac%e3%82%b9%e3%83%88)という[決定木](/%E6%B1%BA%E5%AE%9A%E6%9C%A8)を[アンサンブル](/ensemble)（バギング）した手法を使用していきます。

まずはRから！

```python
#ライブラリの読み込み
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])
```

最終的に予測に対しての実測値をマトリックスで表した表が返ってきます。

```python
 pred.forest  setosa versicolor virginica
##   setosa         29          0         0
##   versicolor      0         25         1
##   virginica       0          2        18
```

まあそれなりの精度で当てられるわけなのですが、これをPythonで実装すると以下のようになります。

```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をそれぞれ勉強する方法

![studies book](/wp-content/uploads/2020/07/Nerd-amico-min.png)

PythonとRの違いについて徹底的に見てきましたが、**実際それらをどのように勉強していけばよいでしょうか？**

それぞれの勉強方法についておさえておきましょう！

### Pythonのオススメ勉強法

Pythonは色々なサービスが展開していて学べるところはたくさんありますが・・・

まずは、以下のUdemyのPythonを学べるコースをご受講してみるのがオススメです！

:::box
[**・【初学者向け】データ分析コンペで楽しみながら学べるPython×データ分析講座**](https://www.udemy.com/course/python-data/?referralCode=06466D9A805A034B1A97)\
**[・【実践】ビジネスケースとつなげてPythonで出来ること5つを学べる3日間集中コース](https://www.udemy.com/course/python-can/?referralCode=2CBAD21040FF57199084)**
:::

僕自身が講師を努めており、非常に分かりやすくまとめているつもりです！

また、[PyQ](https://af.moshimo.com/af/c/click?a_id=1419635\&p_id=1166\&pc_id=1793\&pl_id=20541\&guid=ON)というサービスもオススメ！Python特化のオンライン学習サービスで、ひたすらPythonコーディングを行うのにオススメです。

データサイエンスの理論まわりはあまり深く扱っていません。

<https://toukei-lab.com/pyq-review>

::button[PyQ公式を見る]{href="https://af.moshimo.com/af/c/click?a_id=1419635&p_id=1166&pc_id=1793&pl_id=17949&url=https%3A%2F%2Flanding.pyq.jp%2Fml%2F"}

::button[価格・プランを比較する]{href="https://af.moshimo.com/af/c/click?a_id=1419635&p_id=1166&pc_id=1793&pl_id=17949&url=https%3A%2F%2Fpyq.jp%2Fpricing%2F%23personal"}

ただUdemyやPyQは個人で進めることになるので、なかなかモチベーションも続きません。

僕自身なかなかお尻に火がつかない人間でプログラミングスクールに通ってPythonを勉強した経験もあります。

<mark>完全独学で勉強するのに自身のない人はぜひプログラミングスクールに通ってみることをオススメします！</mark>

僕自身は、[テックアカデミー](/techacademy-review)というスクールに通ったことがありますがメンターのクオリティが高いのでおすすめです！

しかしプログラミングスクールは高い・・・！ということで他と比べて圧倒的に安く学べるデータサイエンススクールを当メディアで運営しています。

その名も[スタビジアカデミー（スタアカ）](https://toukei-lab.com/achademy/)！

例えば以下の内容をミッチリ学んでいきますよー！！

:::box
**・BigQuery上でSQL、Google Colab上でPythonを使い野球の投球分析**\
**・世界最大手小売企業のウォルマートの実データを用いた需要予測**\
**・ビジネス・マーケティングの基礎を学んで実際の企業を題材にしたマーケティングプランの策定**\
**・生成AIのAPIを使ってチャットボットやAIエージェントを作る**
:::

興味のある方は是非チェックしてみてくださーい！

:::box
**[業界最安級のデータサイエンス特化スクール：スタビジアカデミー](https://toukei-lab.com/achademy/)**
:::

ご受講お待ちしております！

世の中には他にもたくさんPythonを学べるスクールはあります。以下の記事で比較していますのであわせてチェックしてみてください。

<https://toukei-lab.com/python-school>

そしてある程度Pythonの素地が出来上がった後は、[データ分析コンペティション](/data-competition)のKaggleに挑戦してみることをオススメします！

[Kaggle](https://www.kaggle.com/)では企業から提供されるデータを基にお題に沿って精度の高いモデルを構築していきます。

<https://toukei-lab.com/kaggle>

Pythonの勉強法については以下の記事でまとめていますので是非チェックしてみください！

<https://toukei-lab.com/python-learn>

### Rのオススメ勉強法

正直Rに関しては研究時に論文を読んだり、実際に先行研究のRコードを眺めたりしながら勉強していたので明確な勉強法を伝えるは難しいのですが、<mark>以下の書籍が比較的分かりやすくオススメです！</mark>

::product[Rによるやさしい統計学]{url="https://www.amazon.co.jp/dp/4274067106?tag=statistic08-22&linkCode=ogi&th=1&psc=1" image="https://m.media-amazon.com/images/I/412G0HB7AnL._SL160_.jpg" amazon="https://www.amazon.co.jp/dp/4274067106?tag=statistic08-22&linkCode=ogi&th=1&psc=1" rakuten="https://af.moshimo.com/af/c/click?a_id=858168&p_id=54&pc_id=54&pl_id=616&url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2FR%25E3%2581%25AB%25E3%2582%2588%25E3%2582%258B%25E3%2582%2584%25E3%2581%2595%25E3%2581%2597%25E3%2581%2584%2F%3Ff%3D1%26grp%3Dproduct"}

Rを学べるサービスはあまりないんですよね・・・

Rのおすすめ勉強書籍については以下の記事でまとめています。

<https://toukei-lab.com/%E5%8E%B3%E9%81%B810%E5%86%8A%EF%BC%81%E3%83%87%E3%83%BC%E3%82%BF%E8%A7%A3%E6%9E%90%EF%BC%88r%E3%83%BBpython%EF%BC%89%E3%81%AE%E5%8B%89%E5%BC%B7%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AA>

## PythonとRの違い　まとめ

PythonとRの違いについて徹底的に比較してきましたが、<mark>結局どちらも一長一短で使い分けるべきだよーってことです。</mark>

一概には言えませんが、**アカデミックの世界ではRを使っている方が多く、ビジネスの世界ではPythonを使っている方が多い**印象です。

最近はだいぶPythonに偏重してしまっていますが、たまにはRも使ってみるかなーと書きながら思いました。

:::talk{who="robotan"}
あんまり違いが分かっていなかったので勉強になったよ！
:::

:::talk{who="umatan"}
まあ結局はRもPythonも手段だからね！目的を見失わないようにしようね！
:::

そうなんです。

結局は<mark>いくらRが使えてもPythonが使えてもデータから何も生み出せなければ意味がない。</mark>

**あまり手段にこだわりすぎず、目的を見失わないようにしたいですね！（自戒）**

データサイエンティストへの勉強法について以下の記事でまとめていますので是非こちらもあわせてチェックしてみてください！

<https://toukei-lab.com/data-scientist>