学部の授業でターミナルを触ったことはあるけどよく分からないという人が,言語処理100本ノックを進めるにあたって黒い画面で躓かないレベルにまで到達するための資料:
- UNIX/Linux 環境でのコマンドライン操作に慣れる…前の基礎知識 - Qiita
- jlevy/the-art-of-command-line: Master the command line, in one page
書籍で体系的に学ぶのであれば,大角『新しいLinuxの教科書』が良いらしい.
学部で C や Java を学んだのであれば,プログラミングの基礎はある程度身に付いていると思われるので,体系的に学ぶよりは,いわゆるチートシートやクイックリファレンス的な資料を見ながらとにかく書いてみるのが良い:
あるいは,オンラインコースウェア等で基礎をさっと流すのもアリ:
基礎的な文法を一通り理解したら,この先 Python をどこまで詳しくなってどういうコードを書きたいかによって学習プランが変わる.
Python はあらゆるプログラミング言語の中でもサードパーティ製のライブラリが非常に豊富なので,既存のライブラリを組み合わせるだけで(自分はほとんどコードを書かなくても)アイデアを実現できることが多い.まずは有名どころのライブラリを存在だけでも把握しておくだけで,実装のための選択肢は勿論,アイデアにも幅が出てくる.
- vinta/awesome-python: A curated list of awesome Python frameworks, libraries, software and resources
- Python の便利ライブラリ総まとめ
- awesome-xxx シリーズは Python に限らず有益
- bakfoo/awesome-pysci
- Python の科学スタックまとめ
- python - 機械学習の「朱鷺の杜Wiki」
基本的にここに載せてるようなライブラリを使いながら,Python の使い方で詰まったら周りの詳しい人に聞くか,適宜ググるかして対処しましょう.
一般的な "良い" コードを書くための啓蒙記事や書籍は山ほどあるが,一つだけ挙げるとすれば『リーダブルコード』はやはり外せない.分かりやすい変数名の付け方,ロジックの単純化など,Python に限らない一般的なコーディングにおける原則を豊富な例と共に紹介している.
ここから出発し,徐々に Python らしさを意識していこう.他の言語の例に漏れず,Python にもコーディング規約というものがある.最も広く使われている規約は Python 公式が提案する PEP 8 である.主に syntax レベルでの良い書き方を提示している.どんなプロジェクトであれ,この規約から大きく逸脱することはまず無く,PEP 8 をベースに,プロジェクトに合わせたいくつかの改変がなされる程度である(例:Google Python Style Guide).
Python らしい syntax に馴染んできたら,次は Python 特有の機能について深く知ろう.オススメの勉強法は Python 標準ライブラリリファレンスの全てのページに目を通すことだが,一部の人以外には多少無茶な話だと思うので,Python のエッセンスが詰まった書籍を紹介しておく:
ここに挙げたような書籍を読み込み,実際のコードに落とし込む訓練を繰り返し積んでいくと良い.
と思う人は僕よりできる可能性が高いので特にアドバイスは無いが,Python 標準ライブラリリファレンス,言語リファレンス,CPython(Python の C 言語実装)を深掘りしていけばいいんじゃないですかね....
と思う人も一定数いるのでオススメ書籍及び Web ページを載せておく.一通り眺めてみて自分にあっていると思うもので進めていくと良いかもしれない.
- Pythonを書き始める前に見るべきTips - Qiita
- Java などのオブジェクト指向型プログラミング言語の知識がある程度必要
- 消えた「細かすぎて伝わりにくい、Pythonの本当の落とし穴10選」 - Qiita
- Python に慣れてきたら
言わずもがな.
敢えて Python 以外のセクションに配置しているのは,これらのライブラリを Python と同じ感覚で扱うと痛い目を見ることが多いからである.
Jupyter notebook は,コード断片を対話的に実行しながら,文書の形にまとめ上げていくことができるツールである.2017年現在,Python で機械学習やデータ分析に取り組む場合には必須のツールと言っても過言ではない.Jupyter notebook の真の実力は,以下に述べるライブラリ群と組み合わせた時に発揮される.
Python で科学計算をするための全ての基盤となるライブラリ.具体的には,高速な配列処理能力を提供する.
NumPy の上に設計されたライブラリで,より高レベルなデータ構造と関数を提供する.pandas と Jupyter notebook の組み合わせが極めて強力で,データの読み込み,加工,高度な計算,可視化まで,notebook 上で対話的かつシームレスに実行できてしまう.
- 『Pythonによるデータ分析入門』
- pandas 開発者による NumPy, pandas, matplotlib, SciPy へのイントロダクション
- コンテンツの大半は pandas の基礎の説明に割かれている
Jupyter notebook 上での可視化のための低レベルな API を提供する.ほとんどの用途では pandas や他の高レベルライブラリで事足りるが,図の細かい調整のために使うことがあるため,基礎を把握しておく必要はある.
NumPy の上に構築された,科学計算のための高レベルなパッケージ群.よくテストされており,内部で NumPy を効果的に利用しているため計算速度にも信頼を置ける.
『リーダブルコード』に追加で: