Student-Business

プログラミング・フィリピン留学・海外旅行など自分の体験を記事にしています

プログラミング

Pythonでデータ分析入門のための本・参考書を独学した僕がまとめてみた

2017/04/25

Unsplash / Pixabay

データ分析ってかっこいい、可視化ってめちゃくちゃおもしろい。そう思って、データ分析・解析に関して僕は学ぼうと思いました。

最初は、実はプログラミング自体初心者でR言語から始めたのですが、後にPythonでデータサイエンスを学び始めました。(R言語の記事は後で書く予定なのでしばしお待ちを!)

ともあれ、学習の大きな壁として立ちはだかったのが、「統計学の理論的な知識とPythonで実際にコードを打つことの違い」です。おそらくデータ分析学習者の皆さんがこれに悩まされている、あるいは、悩まされることになるでしょう。統計学を数学的にゴリゴリ勉強してもコードは書けるようにならないし、逆に、コードばっかり書いてても実際に有意義な分析は出来ないですよね。

だからこそ、データ分析の学習はものすごく辛い!

そして、だからこそ今回このような学習記録を記事にしまとめて、自分の足元を固めるとともに、初学者の一助となれば良いなと考えました。

Photo 8-20-16, 16 37 08

Python・R・統計の書籍一部紹介

 

今回は、僕がPythonでデータ分析をやった手順ごとに参考書を紹介していきたいと思います。

はじめにやったこと

まずは、Pythonの基礎がないといけないと思ったので、Pythonの基礎を学びました。(詳しくは以下のページを参照してください。)

参考 ド素人学生がPython独学!上達の軌跡・参考書を詳しくまとめてみた。

正直なところ、Pythonについて全く知らないとデータ分析どころの話ではありません。入門的な本をやっておけば問題ないので、一冊やっておくと後々スムーズです!

また、データ分析は難しくて分からないところが今後出てくるので、そう言った際はこのサイトで質問するとしっかり回答してくれるので、忘れずに登録しておくと役立ちます。
参考エンジニアのためのQ&Aサイト【teratail】

実際にデータ分析の学習をやる手順

まずはデータ分析を全体的に速習

625078_b756_3

今までは本ベースで学習してきたのですが、Udemyのオンライン講座で動画を説明を聞きながら、コードを見て、自分でも真似してみることでデータ分析における基礎が最速で身につくことを発見。

僕自身、オンライン講座を利用するのは初めてでしたが、「データ分析と言っても何をやっていいかわからない、まずはコードを書きながら学びたいという人」にはドンピシャの講座でした。

有料講座なのですが、「基礎的なコードの書き方→実践的なデータ分析を通して復習→機械学習についても学習」と全20時間以上の動画で学べます。(僕は終わらせるのに5日くらいかかりました。)いい情報は金出してでも買って自己投資にする時代の訪れとそれは容易になっているのを感じました。(←少額の癖に偉そう)

▼Udemyのこの講座では、Pyhonと統計学の基礎が良い塩梅で学べます!

このコースの良かった点は、こんな感じです。

  • 世界で2万人以上が利用かつ高評価している
  • 東大卒の方が、日本語版で解説してくれている
  • Pythonスタートブック」の著者が作成した講座
  • ハイクオリティのコースで、20時間以上100を超える動画で解説
  • 基礎的なコードを学んだ後、実際のデータ解析を通して学べる
  • 割引中で本一冊程度の料金だが、その何倍の価値もある

以下で、一冊目として紹介する本「Pythonによるデータ分析入門」のみでもライブラリーの使い方などがわかるのですが、情報量が多いので終わらせるのに苦労します。そして、どちらかというと実用的なコードを書きながら読み進める方が、身につきます。

なので、この「Python&データサイエンスオンライン講座」を学びながら、「Pythonによるデータ分析入門」でPythonの知識(ライブラリーに関する)を肉付けして強化、さらに同時に三冊目の本の「マンガでわかる統計学+そのシリーズ」で数学的基礎知識の理解を深めるといったように、併用するのが好ましいです。

友人にデータ分析の勉強の仕方を聞かれた際は、とりあえずこの方法を教えるのですが、今の所誰からも文句は来てません笑 また、このサイトの紹介で1日0〜数人程度、講座をやり始めてくださっています。二月にこっそり紹介し始めたのですが、月別でみると下の画像のように推移してます。

udemy推移

Python&データサイエンスオンライン講座」内の機械学習の章では、「ロジスティック回帰・SVM・ナイーブベイズ分類・ランダムフォレスト」を用いたデータ分析もやります。僕もこれらをよく知らなかった時にやり、それを用いた分析ができるようになりました。ですが、数学的な部分も勉強する必要はやはり感じました。(ちなみに、講義内で参考資料として提示される別動画は、英語ですが日本語字幕で見れます。丁寧な説明なので、見ておくことをお勧めします。)

最初の、numpy, pandas, seabornの使い方の部分は大変ですが、実践データ解析・機械学習の章で、伏線回収のように使用していきますので、なかなか楽しいです。

データサイエンティストの登竜門とも言えなくはないので、考慮してみてください。

英語版は、2016年8月時点で4万人以上!

英語版は2016年8月時点で4万人以上!日本語版の存在を知ってるだけで差がつく

>>>Python&データサイエンスオンライン講座

さて、次はお待ちかねの参考書に関して書いていきます。

1冊目 最初はこの本で決まり

初学者で右も左もわからないので、「データ分析」とタイトルにあって必携本に見える本を、まずは選びました。

安定のオライリーから出ている本ですね。Pythonを使ってデータ分析をするときに必須となる外部ライブラリである、「NumPy、pandas、matoplotlib」について詳しく載っています。

やってみた感じとしては、「上記のライブラリーを用いて書きたいコードは難なくかけるようになった」といった感じです。

IPythonの使い方から入るのですが、これが非常に学習を効率化してくれます。自分の打ったコード+アウトプットした結果を簡単にノートにまとめられるようにしてくれます。勉強して打ったコードと結果を後で見直せるので大変便利。

この本は、一回流して読めば大体のやり方は分かるのでサクッと終わらせましょう。一回では全部覚えられないと思いますが、そもそも覚える必要はなくて、どこに何が書いてあるか把握して後で参照できるようにするのが大きな目的だと僕は思います。

内容に関しては、個人的に8章以降はプロットしたりして楽しかったです。

10章の時系列データ・11章での金融と経済データへの応用では、応用的なことをやるのでおそらく皆さんも分析の楽しさを垣間見ることができます。

ただ、7章まではデータ整形やらファイル操作的なもので、データの弄り方を学ぶことになり、少し辛抱が必要です。最初の方のIPython関連の章は、基礎的な使い方を覚えたら読み飛ばして4章のNumpyから始める方が、おそらく効率がいいので参考にしてください。

ライブラリはエクササイズとかやると、覚えやすいです。

Numpyの場合:http://www.labri.fr/perso/nrougier/teaching/numpy.100/

※もし統計の知識が必要な人がいれば、先に3冊目に記載した本をやるといいかもしれません。(統計の知識がない状態でも読めました。)

2冊目 とりあえず実践的な本

1冊目の内容はデータがある前提でそれを操作するといった感じでした。つまりは、データ分析のツールの使い方を学び終えたわけです。

その為、2冊目以降はやりたい分野の勉強をすることになると思います。自然言語処理や機械学習をやるのもいいかもしれません。

ただ、そうすると「データ分析」と少しかけ離れてしまうと思われます。それなので、「データ分析」というイメージと繋がり、実用的な本としてこれを選びました。けど、当初はあまり実用的ではありませんでした。(僕の知識が足りていなかったので

Pythonを使って学べて、単純に数学の知識をほとんど必要としないというのも買う決めてになりました。

本来、「データ分析」をするなら統計学の知識が必要となります。僕も3冊目以降に勉強を始めました。(R言語はPythonと比較して数学の知識を知らないでも、ライブラリ等を活用してデータ分析ができてしまうのですが、pythonは書籍自体に難解な統計の知識が出てきたりします。)

この本の内容に関しては、ウェブのデータマイニングの基礎から実践までを、Twitter・Facebook・Google+・GitHub・LinkedInをマイニングしながら学べます。比較的身近なサービスで馴染みのあるものが多かったので、とても楽しみながら勉強することができました。LinkedInとGoogle+は自分自身があまり使ってないのですが、コードを読んでデータマイニングを学ぶことができました。

しかし、より実用的なことを勉強したいなら以下の2冊はかなり良書でオススメです。正直な所上記の「入門ソーシャルデータ」よりこちらを選んだほうが絶対いいと後から気付きました。(難易度は高いので、予備知識を持っている方、実務でバリバリ使う向けです。それ以外の方は、先に以下で紹介する統計学の参考書で学びましょう。)

しかし、四角く囲って載せたこれらの本は予備知識が必要で、少し難解な統計の知識を用います。コード+簡単な数学的知識の説明で構成されます。ただ、1冊目のPythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理さえ読んでおけば読むことはできます。

確率・統計の知識とプログラミング(Python)の知識を一冊でまとめあげてくれている超良書なのですが、3・4冊目で紹介する本での基本的な統計の知識ではカバーしきれないほど幅広い知識への橋渡しとなります。ですので、全部を理解しようとするよりは、「結局ライブラリーを用いて簡単なコードで実装するので深い理解は必要ない」と割り切って読むのが吉です。

統計勉強のための道筋

統計の勉強の際には、是非このwikipediaにある表を参考にして、今自分が何を勉強しているのか確認してください。でないと、知識の海で溺れる羽目になります。

3・4冊目で紹介する本は、上の表で言うところの「標本調査・要約統計量・統計的推測・相関」らへんの基礎が学べます。

それを終えれば、あとは「統計的推測」の欄にある知識をさらに深めていく必要が出てきたり、より機械学習に近い「モデル・回帰・分類・教師なし」などの勉強をしていくことになります。ただ、これらを数式を追って理解するのはかなり大変なので、理論的な勉強というよりは、使い方・コードの書き方を学んでいく人がほとんどだと思います。

先ほど述べたIPythonデータサイエンスクックブック ―対話型コンピューティングと可視化のためのレシピ集は、「統計的推測」に加えて、「標本調査・要約統計量・相関」以外の欄にある統計の知識を、実装用のコードとともに拾い読みする感じの本です。

3冊目 統計の知識も必要

めちゃくちゃ分かりやすくて統計学を学んだことのない人にお勧めです。これを最初にやることで、統計学がどういうものかの概要が掴めます。

Amazonでの評価を見て頂くと分かりますが、人気に裏付けされていて、統計学勉強の確実な第一歩になります。統計学を、幅広く、分かりやすく、さらっと読めるので、楽しみながら読んでみてください。続編であるマンガでわかる統計学 回帰分析編マンガでわかる統計学 因子分析編も基礎知識としてデータ分析で絶対に必要なものです。

4冊目 統計の知識を基礎レベルにする

この記事を読んでくれている方は、統計学を専攻したいわけではないと思います。ただ、最低限データ分析に必要な知識を固める、あるいは、何かしらのPythonの本を読むためには、必要な統計学の知識の基礎を固める必要があるでしょう。

そこで読んでほしいのがこの一冊です。この本は、統計学の基礎の本なので時間はかかりますが、大学初学年程度の数学の知識で読み進めることができます。(文系の女子インターン生も少し苦労はしてましたが読んでいました。)

ただ、難易度に関しては諸説ありまして、

  • 基礎というには難しく、1冊目には読む本ではない
  • 東京大学が出しているが、理系の方なら読める平易さ

とよく言われています。

Python&データサイエンスオンライン講座」と「マンガでわかる統計学+そのシリーズ」をすでにやった方は、おそらくもう基礎的な統計の知識とコードの書き方はわかっていると思うので、どのように「統計学入門 (基礎統計学)」での知識を実際に活用できるのかなど考えて読んでみると豊かな学びが得られるので参考にしてください。

文房具をしっかり活用できていますか?

おすすめ勉強効率が高まる便利でおすすめな文房具を紹介!暗記にも役立つ!

勉強が辛い時こそ、運動すると勉強に還元される不思議!

おすすめ運動だけで、集中力倍増!意識は高いけど勉強ができない人への最高のサプリ

この本を読む際に参考にしたい情報

1、確率分布に関して良く分からず調べると必ず行き着くサイト

高校数学の美しい物語:http://mathtrain.jp/purple_list

確率分布らへんの式変形やその意味がわからなかったら、このサイトを読むと目からウロコです。僕は数式の変形だけ見せられても理解できない時があるのですが、このサイトでその部分が見事にカバー出来ました。

2、統計学を学べるオンライン書籍

オンラインで無料で読める統計書22冊:http://id.fnshr.info/2013/08/11/online-stat-books/

オンラインで無料で読める統計書プラス32冊:http://id.fnshr.info/2016/08/15/online-stat-books-2/

以下でも使った統計本を紹介しているのですが、統計本はいろいろな本を読みあさる方が理解が深まる場合が多々あります。そういう時には、上記のサイトで紹介している本を読みあさると非常に勉強になります。無料で読めますが、質は非常に高いです。

ここまでで学んだこと

Python&データサイエンスオンライン講座

手元にデータがあった際に、どのようにnumpy, pandas, matplotlib, seaborn, scikit-learnを用いて簡単に学んだ。ただ、これだけではデータ分析をしたというにはまだ足りない。

▶︎統計・機械学習の知識、pyhonで実装するためのコードの書き方などの知識の補強が必要!

マンガでわかる統計学+そのシリーズ」+「統計学入門 (基礎統計学)

統計の基礎は理解できた。ただ、5冊目で紹介する「自然科学の統計学 (基礎統計学)」などでより高度なことを学習しないと、身も蓋もない。

また、「Python&データサイエンスオンライン講座」では機械学習の内容が簡単にあり、機械学習の方がデータ分析の醍醐味だと分かった。

▶︎何かしらの本で理論的な側面、Udemyの講座で実装の仕方を学ぶ必要があるという状態。(学習法は後述)

Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理

numpy, pandas, matplotlibらへんのコードの書き方を忘れていたら、これを辞書的に参照してコードを書くといい。

できるようになったこと

ここまでの勉強で、他の人の公開しているコードを見ていろいろできるようになりました。人によっては、実務を通しながら、機械学習云々も学んでいけばいいでしょう。そうでない方は、以降の記事が参考になると幸いです。

機械学習の学習を始める

統計の勉強について今まで書いてきました。ただ、統計!統計!なんて言って学んで、機械学習の勉強もしないと、元も子もありません。機械学習といってもいわゆる統計学から派生した手法もたくさんあります。それなので、発展的な統計の勉強をしながら、機械学習について一から学びました。

機械学習の理論の勉強は大変ですので、僕は理論とpythonでの実装を同時進行で学習しますが、ほとんどの方はコードだけを叩きまくってとにかく作った方が早いかもれません。

書きかけですが、以下の記事で詳しく書いていく予定です。

Pythonで機械学習するための本・参考書と勉強方法など独学した手順でまとめ(随時更新)

5冊目 統計の知識を深める

ちなみに姉妹本で出ているこの本もオススメです。上記の赤本の内容は、いわゆる統計学の入門書として紹介されている内容なので、他の本で代替可能なものです。(質は高いので、他の本より断然オススメであることは上で述べた通りです。)しかし、この青本とも言われる姉妹本は、少し高度な統計的手法について紹介しています。

ある程度のレベルに達した方へのバイブル本となる一冊で、「完備十分推定量、UMVUE、有効推定量、指数型分布族、最強力検定、尤度比検定」といった内容が述べられています。

赤本までの知識に少し知識の肉付けしただけで、仕事をしているデータサイエンティストはたくさんいますが、それは、その後に学ぶべき統計学の知識を得られる本が少なかったり、極端に難しい数学の展開がなされているせいであったりもします。

そういった方に、ぜひ読んでほしい一冊がこの青本です。赤本よりだいぶ難易度は上がりますが、確実に視野を広めてくれる一冊であり、他の人と差をつけられる一冊でもあります。

しかし、ここまでの記事でこの本良さそうだなと思った人、少しお待ちください。この自然科学の統計学という本、解説が丁寧でない部分もかなりあります。コミュ障の僕も、最初に読んだときは難しくて挫折仕掛けました。SlideShareや輪読、勉強会などに参加しようかと考えたほどです。ですが、良くも悪くもそのような機会は得られませんでした。一段階上のレベルなので、この本を勉強している人が圧倒的に少ないためでしょう。

じゃあ、どうやって読破できたの?と疑問に思うでしょう。そんな方は、ぜひ「一般化線形モデル入門 原著第2版」を読んでみてください。

この本は、全身全霊を持っておすすめできる超良書です。タイトルは、一般化線形モデルとちょっと難しそうですが、回帰モデルから一般化線形モデルまで体系だって学べるので、赤本→一般化線形モデル入門(青本)→緑本とうまく橋渡ししてくれます。

しかも、ただ橋渡ししてくれるだけではありません。赤本での理解を深めた上で、青本を読む力を養った上で、緑本に繋げてくれるのです。

分散分析、t検定、重回帰、ロジスティック回帰、名義・順序ロジスティック回帰、対数線形モデル、ポアソン回帰、一般化推定方程式・多段階モデルなんてものの名前と原理の基礎は学んだけど、それぞれいつ使えばいいんだと思っている方も多いですよね?

そういった方はぜひこの本で、それぞれの適用できるタイミングを学びながら、一般化線形モデルの学習に繋げると良いでしょう。なぜ、この本を誰も紹介しないんだと甚だ疑問ですが、読んだ人の9割は絶賛することになるでしょう。

(統計学の勉強で挫折する方が減少するよう、この本が紹介される風潮ができることを願います。)

6冊目 統計の知識を基礎レベルにする

少しプログラミングから離れた本ばかり紹介していますが、この本もものすごくお勧めです。この本は、一冊で実務で必要となるポイントを押さえてくれています。

統計の知識とPythonを用いたコードを書けるようには、ここまでの時点でほとんどの方がなっていると思います。しかし、実務でデータ分析をする際には、まずはデータをどのように解釈して、どのような手法で分析するのかなどを判断しなくてはなりません。

そう言った際に、統計の知識をどう適応できるかの指針となる一冊になるでしょう。

僕は6冊目に読みましたが、マンガでわかる統計学を読んだあとにやるといいかもしれません。

中途半端なところですが、統計とPythonの勉強に関してまとめるのに少し時間がかかりそうなので、需要がありそうなら追記しようと思います。ただ、ここまでやれば自分でやることが明確にわかると思いますよ。

あとでやりたい本

本書は現在注目を集めている「集合知(collective intelligence)」をテーマにした書籍です。機械学習のアルゴリズムと統計を使ってウェブのユーザが生み出した膨大なデータを分析、解釈する方法を、基礎から分かりやすく解説します。本書で紹介するのは「購入・レンタルした商品の情報を利用した推薦システム」、「膨大なデータから類似したアイテムを発見し、クラスタリングする方法」、「数多くの解決策の中から最適なものを探し出す方法」、「オークションの最終価格を予想する方法」、「カップルになりそうなペアを探す方法」、「遺伝的プログラミング」など。del.icio.us、eBayなどが公開しているWeb APIを使用した解説も本書の大きな特徴です。本書のサンプルコードは可読性に優れたPythonを使用していますが、他の言語のプログラマでも理解しやすいようにアルゴリズムを解説しています。日本語版ではYahoo!日本語形態素解析Webサービスを利用した日本語テキスト処理について加筆しました。

かなりおもしろそうだけど、今は積み本が多すぎるので買うのは自重している本。

-プログラミング

おすすめ記事

giftcard 1
Amazonのギフトカードが格安で買えるサービスが発足!密林での買い物がよりお得に!

最近始まったギフトカードの個人間取引ができるサービス「ギフル」ってご存知ですか? ...

71-iFIHKV6L._SL1500_ 2
【Aukey PL-WD06】スマートフォン用カメラレンズなら旅行で風景写真が綺麗にとれる!

いい写真を撮りたくて、一眼レフやコンデジを買いたいと思う方は多いでしょう。しかし ...

StockSnap / Pixabay 3
【在宅ワーク】在宅で記事を書くライターになり1文字1円以上の収入を得る方法

最近、文章を書く力・文章構成力にオシャレさを見出してきました。 文章を書くのにも ...

2 4
初心者のためのWebデザイン独学の方法と参考書を現役エンジニアに聞いてみた

今回は、htmlとcssといったWebデザインに関してどうやって学べば良いかを、 ...