未経験からデータ分析を仕事にするまでに役に立った教材をまとめていく

こんにちは。現在、私はPythonやらJuliaやらを使ってデータ分析をしているのですが、最近、自分の所属部署にも新入社員が入ってきて、後進の育成をする立場になりました。そこで、「このページにあるやつが良かったよ」と言って済ませられるように、データ分析を仕事にするまでに実際に役に立ったなと思う教材・参考になったサイト・書籍等を、これまでの経験をもとにまとめていきます。

私自身、プログラミングも統計学も全く知らない状態から独学してきたので、「データ分析を仕事にしたいけどなんのスキルもない！」という悩みのある初学者の参考になればと思います。

- 注1: 日本語と英語が読めるのが前提条件になります
- 注2: ググって1分で解決できる問題については掲載してません
  + 例えばjupyterのインストール方法とか 

## Python

- [Kaggle Learn](https://www.kaggle.com/learn)
  + 機械学習コンペサイトのKaggleが提供している、機械学習に最低限必要な知識セット
  + 何もわからない当時、ここがいちばん役に立った
- [Learn Python - Sololearn](https://play.google.com/store/apps/details?id=com.sololearn.python)
  + 様々なプログラミング言語を独学できるSololearnのPython版のスマホアプリ
  + スマホに入れて空き時間や通勤電車の中でポチポチ勉強してた
  + 早押しクイズのようなちょっとしたゲーム要素もあるので楽しい
- [書式指定文字列の文法 - Pythonドキュメント](https://docs.python.org/ja/3/library/string.html#formatstrings)
  + `str.format()`の書式指定文字列に関するPythonの公式ドキュメント
  + 最初の方は検索で上の方に出てくるブログ記事を参考にしていたけれど、結局いちばん参考になったのは公式だった
  + 公式ドキュメントしか勝たん
- [正規表現HOWTO - Pythonドキュメント](https://docs.python.org/ja/3/howto/regex.html)
  + Python公式が用意している`re`モジュールのチュートリアル
  + 正規表現そのものの入門としてもおすすめ
  + 公式ドキュメントしか勝たん(2回目)

## Pandas

- [pandasに関する情報 - note.nkmk.me](https://note.nkmk.me/pandas/)
    + データ分析でいちばんお世話になるPandasのことについては、ここがかなり役に立った
  + 正直、Pythonに関する個人ブログの中ではいちばん役に立ったと言っても過言ではない
  + ただし、ブログ記事の常として情報が古くなりがちなので、公式リファレンスも確認しよう
- [Group by: split-apply-combine](https://pandas.pydata.org/pandas-docs/stable/user_guide/groupby.html)
  + Pandas公式のドキュメントのひとつ
  + `pandas.groupby`の使い方のみならず、データ集計ストラテジーとしてのSplit-Apply-Combineという考え方を学べたと思う

## Matplotlib

- [Pyplot tutorial - Matplotlib documentation](https://matplotlib.org/stable/tutorials/introductory/pyplot.html)
  + グラフ描画ライブラリのMatplotlibが提供している公式チュートリアルの1つ
  + いろいろなチュートリアルがあるけど、個人的にはここから始めるのが良いと思う
- [早く知っておきたかったmatplotlibの基礎知識、あるいは見た目の調整が捗るArtistの話 - Qiita](https://qiita.com/skotaro/items/08dc0b8c5704c94eafb9)
  + 「`ax.plot()`と`plt.plot()`って何で似たようなものが2つあるの？」って疑問を解決するきっかけになったQiita記事
  + この記事を読んだあとからかなり見た目の調整がラクになったと思う
- [matplotlibで日本語 - Qiita](https://qiita.com/yniji/items/3fac25c2ffa316990d0c)
  + Matplotlibでの日本語フォントの使い方
  + いまでも結構見に行く
- [Gallery - Matplotlib documentation](https://matplotlib.org/stable/gallery/index.html)
  + Matplotlib公式ドキュメントのプロット例集 
  + Matplotlibに限らず、グラフライブラリを使うときはギャラリーを眺めて「おっ、これいいやんか」って思うものを探すのが大事だと思った
- [Search - Matplotlib documentation](https://matplotlib.org/stable/search.html)
  + Matplotlib公式リファレンスの検索ページ
  + 以下の一文を見てから何度codexって打ったか知らない

    > If you want to limit your search to working code examples, include the keyword "codex" in your search

## Linux

- [The Linux Command Line by William Shotts](https://www.linuxcommand.org/tlcl.php) 
  + 仮にWindowsやMacしか使わないとしても、Linuxコマンドラインについて学習しておいて損はないと思う。
    + 少なくともこれを読んで以降は黒い画面にポチポチとコマンドを打つことに過度な恐怖心を抱かなくなった気がする
- [Linux基本コマンドTips - @IT](https://www.atmarkit.co.jp/ait/series/3065/)
  + よくわからないlinuxコマンドをググったらたいていこの連載のどれかがヒットする
  + `man`とか`info`でわからないときに何度も助けられた
- [インストールガイド - ArchWiki](https://wiki.archlinux.jp/index.php/%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%82%AC%E3%82%A4%E3%83%89)
  + 潰してもいいPCを一つ持っているなら、Arch Linuxをインストールして遊んでみるのもおすすめ
  + 正直Arch Linux入れて遊ぶような人間なら十分自走できると思うが……
  
## Git
- [Learn Git Branching](https://learngitbranching.js.org/?locale=ja)
  + Gitのコマンドとその結果を視覚的なモデルで確認しながら学べる最高のチュートリアル
  + gitってなんなん？refってなに？中でどんな動きしてんの？って疑問を抱いている全人類におすすめだと思う
  + ggって最初の方に出てくる「サルでもわかる」に挫折した身だけど、これのおかげでGitの利用に困らなくなった

## 統計学

- [統計学の基礎 - 裳華房](https://www.shokabo.co.jp/mybooks/ISBN978-4-7853-1525-2.htm)
  + 仮説検定や区間推定までの統計学の基礎がコンパクトにわかりやすくまとまった良書だと思う
  + 大学の教養過程の教科書だったのでたまたま本棚にあったけど、今では買ってよかったと心の底から思う(講義はすぐにサボったので学生時代はろくに開かなかったけど…)
  + 東京大学出版会の赤本よりもこっちを読んだほうがいいまである
- [多変量解析法入門 - サイエンス社](https://www.saiensu.co.jp/search/?isbn=978-4-7819-0980-6&y=2001)
  + 重回帰分析や主成分分析などの分析法が数学を使って理解できる
  + しかも必要な数学が高校数学+α程度なので、微積の単位を落とした人間でもギリついていけた
  + 個人的には、分析結果の妥当性を判断する基準だったり、式変形の解説が丁寧だったり、必要な線形代数のまとめが入っていたりするので「かゆいところに手が届く」一冊だと思う
- [時系列分析と状態空間モデルの基礎 - プレアデス出版](http://www.pleiades-publishing.co.jp/pdf/pdf08.html)
  + ARIMAとかSARIMAとかカルマンフィルタとかいった時系列モデルのいろはを具体例と簡単なRのコードをつけて解説
  + とても読みやすくわかりやすい。Rの入門書としてもおすすめできる。
  + サンプルコードをPythonに翻訳できればさらに良い勉強になる
- [データ解析のための統計モデリング入門 - 岩波書店](https://www.iwanami.co.jp/book/b257893.html)
  + 一般化線形モデルの解説としてだけでなく、現象を数理モデルに落とし込む際のこころがけなども教えてくれる良書中の良書
  + いちばん役にたった本と言っても過言ではない
  + Rのサンプルコードつきなのですぐに実行できる
- [Introduction to survival analysis - lifelines documentation](https://lifelines.readthedocs.io/en/latest/Survival%20Analysis%20intro.html)
  + pythonの生存時間解析ライブラリであるlifelinesの公式ドキュメントの一部
  + 仕事で生存時間解析をしているので、lifelines自体をよく使うのだけど、ライブラリの使い方にとどまらず生存時間解析そのものの概念についても充実しているのでとてもよい
- [User Guide - statsmodels documentation](https://www.statsmodels.org/stable/user-guide.html)
  + Pythonの統計分析ライブラリといえばstatsmodels
  + 正直、最初はこれを読んでもちんぷんかんぷんだった
  + 統計モデリング、多変量解析、時系列分析に詳しくなればなるほど、statsmodelsのありがたさがわかってくる気がする

## 機械学習
- [Introduction to Julia - JuliaAcademy](https://juliaacademy.com/p/intro-to-julia)
  + 正直機械学習はJuliaでやったほうが捗ると思ってる。Juliaに入門しよう！
  + 私が学習したときよりもコミュニティが大きくなったので、これに限らず色々とわかりやすい教材があるかも
- [Data Science Tutorials in Julia](https://alan-turing-institute.github.io/DataScienceTutorials.jl/)
  + Juliaでの機械学習ライブラリ`MLJ.jl`のチュートリアル的なもの
  + 機械学習とJuliaをほとんど知らなかったとしても、機械学習モデルの作り方やその評価方法について順を追ってやさしく学べる。
  + `MLJ.jl`が結構簡単に使えるので、環境構築とかフレームワークの使い方とかいう些末なところよりも、機械学習モデルをどう作るかとか、パイプラインをどう構築するか、パラメタはどう調整するかといった面白い部分にフォーカスしやすい
- [Basics - Flux](https://fluxml.ai/Flux.jl/stable/models/basics/)
  + Juliaの深層学習用ライブラリ`Flux.jl`のチュートリアルの一部
  + Juliaならではの仕組みを使って、自分の手でイチからニューラルネットワークを構築できるのでたのしい。
  + `Flux.jl`が気に入ったらhttps://github.com/FluxML/model-zoo を眺めてみるのもいいと思います。