変わりモノがいい!

変わりモノには価値がある・・・ハズ?

Pythonを効率的に学ぶにはどうすれば良い?(前編)

Pythonって今までのプログラム言語とチョット違う。

Pythonというと機械学習やAI用の言語というイメージが強いですが、Pythonはそれ以外の領域でも十分に良さを発揮できる言語と思います。 プログラム言語というとC、Java、Ruby他非常に多くのものがありますが、それらのものともチョット違うかなと感じています。 よく言われているPythonの特徴は、
・少ないコード量で簡単にプログラムが書ける。
・コードが読みやすい。
というものがあります。 このこともあって2019年の人気ランキングでは1位になっています。

f:id:ken2017:20200326103305p:plain

僕が実際に使って見て感じた、良さ、は、以下のものです。
・Pythonはスクリプト言語で文法が簡単である。 ⇒ とっつき易い 
・実用的なライブラリが豊富にある。 ⇒ データセットができれば高度な機能も動く
・開発環境が充実している。 ⇒ Jupyter notebookなど良い環境が無料で使える
こうやってっみるといいことばかりに思えますが、実際に使いこなそうとすると当然ながらそれなりのハードルがあります。 また、ライブラリーが豊富なことから本質的なことを理解できていなくても高度な機能が使えるわけで、このデメリットも起きる可能性もあります。 Pythonに触れて思うのは、こういう良いツールを使わない手はないわけで、どうやれば本当の意味で使いこなせるようになるのか、時間をかけないで使えるようになるのか、ということでした。 ということで、先の記事に書いたように膨大な数の書籍を買って兎に角やってみる、という原始的な取り組みから始めました。 言っていることとやっていることが違うだろ、という声も聞こえますが、やっちゃいました。 それが2年前ですね。 当時のことを思い出しながら、どうやったらより効率的にPythonを学ぶことができたかな、ということを書いてみたいと思います。

Pythonの本から学んだことは?

Pythonの本を沢山買ったと書きましたが、その本から学んだことは、Pythonを効率的に学ぶ方法、というか力をどこに入れるべきか、ということを感覚的に掴んだかなということです。 すなわち、
・ 基礎構文は目を通すだけで充分
  何らかのプログラム言語を習得していれば多くの時間は不要ですね。
・一番重要なことはscikit-learnなどに入っているライブラリを使えるようになること
・このためには、データセットの作成が重要で、その意味でpandasの理解が必須
・pandasを使うためにはNumpyの理解が必須
・処理を行うためにはデータの入力と結果の出力が必要でファイル管理の理解が必要
・Pythonを適用するお題にはそもそも試行錯誤しないといけないお題が多いので
 処理結果の見えるかが重要、ということで、matplotlibなどの理解が必要
となります。
以上のことから、学ぶ順番は、
基礎構文を眺め ⇒ Numpyを徹底的に理解し ⇒ pandasを使えるようになり ⇒ データのセット、データの保存のためのファイル入出力を学び ⇒ scikit-learnを使う演習を幾つか経験し ⇒ その中でmatplotlibに慣れる。
ということになります。 ここまでに必要な書籍は下の2冊ですね。

 

Numpyとは?

NumpyとはPythonの拡張モジュールの一つで、数値計算ライブラリが入っています。 Numpyを使うことで行列の積や逆行列、行列式、固有値などを簡単に算出できます。 Pythonは機械学習を扱うわけで機械学習には膨大なデータの取り扱いが必須であり、すなわち大量のベクトル(=配列)の演算が得意なNumpyの出番になります。 ベクトル計算と聞いただけでアレルギー反応が出てきそうですが、自分で手計算でやるわけではないのでご安心を。 Numpyを使うためには、配列の生成 ⇒ 配列の操作(並べ替え) ⇒ 配列の結合 ⇒ 配列に対する演算(四則演算、行列演算 他)となり、これらを理解できればNumpyが使いこなせるということになります。 実際にPythonを学んだ経験から言うとNumpyを意識して真面目に取り組んでいたらもっと効率的にPythonを使えるようになっただろうなと思います。 それぐらいNumpyは重要です。 僕がお世話になったQiitaにもNumpyの使い方が書かれています。 ご参考

qiita.com

pandasとは?

 pandasはPythonのライブラリの1つでcsvファイルなどの基本的なデータファイルを読み込み、追加や、修正、削除、など様々な処理をすることができるデータ構造をを備えています。 Pythonの学び始めのころ僕が悩んだのは、Numpyとpandasの違いが何か?ということでした。 どちらも配列を扱うわけで、両者が良く似ているように見えたからです。 Python初心者のために両者の違いを記載すると、
Numpyは計算が速い! ということで多次元配列の数値データ処理が得意であり、これ用と言っても過言ではないです。 というのも、多次元配列の数値データ以外のデータ型を処理するための関数を持っていないのです。
pandasは扱えるデータ型の種類が多い! CSV、SQL、エクセル等なんでも対応できる。 数値データであろうが時系列データであろうが文字列でーたであろうが扱えます。 万能ですね。 両者の特性を生かした使い方が必要です。 そういう意味で、pandasに対する理解もNumpyに負けず劣らず大切なことです。 僕がお世話になったQiitaにもpandasの使い方が書かれています。 ご参考

qiita.com

 反省、その一

Pythonを始めた時、基礎構文の理解に時間を使いすぎ、大切なNumpyやpandasにちゃんとした時間を割り当てていませんでした。 背景には、Numpyが行列をベースにしていたことでアレルギーというか拒否反応がでたように思います。 若かったら違っていたかな、と言い訳を考えてもしかたないですね、若いころから苦手だったので、それが思い出されたのでしょうね。 その反省を込めて今回記事を書いている次第です。 前編はNumpyとpandasを書きました。 後編では、ファイル管理とmatplotlibを書こうといます。 それではまた。

(参考広告)

 

 

プライバシーポリシー お問い合わせ