LogoMark.png

Python のバックアップ(No.2)


Python

https://www.python.org/

Pythonはさまざまな分野のアプリケーションで使われているインタープリタ型のプログラミング言語です。クリーンで読みやすい文法、手続き型のコードによる自然な表現、直感的なオブジェクト指向、事実上すべてのタスクをこなせる広範な標準ライブラリとサードパーティのモジュール、アプリケーションに組み込んでスクリプトインタフェースとして利用することが可能・・など様々な利点があります。

Google社においても C++、 java と並ぶ3大言語のひとつとして位置づけられていて、Googleが公開している人工知能のAPI TensorFlow も Python のライブラリのひとつとして位置付けられています。

開発環境を含めてオープンソースです。無償でダウンロード>インストールして利用することができます。


Python の現在

CONTENTS




はじめに

このページでは、一般的な Python プログラミングの導入について説明しています。データサイエンスの学習等で初めて Python を使う方には、このページに記載の環境を準備するよりも、GoogleColaboratory の利用をお勧めします。
GoogleColaboratory

各種配布元

公式サイト上でPythonを試す

公式サイト の画面上で黄色のボタンをクリックすると(左下図)、仮想コンソールが起動します。右下図のように、その動作を試すことができます。
pythonSC01.jpg pythonSC02.jpg

入門サイト

開発環境の準備

前提の確認

Pythonには、2系と3系があって、これらは互換性がありません。

様々な開発環境

以下のような開発環境があります。ローカルPC上で複数の開発環境を混在させるとシステムプログラムの衝突が生じるので、いずれかを選択することをお勧めします(GoogleColaboratory はクラウド環境なので、PCのローカル環境とは無関係に採用できます)。

以下、順に解説します。


Python の環境

Mac の Terminal

Macには標準で Python 2.7(Catalina以降は Python3)がインストールされているので、Terminal を起動すれば、すぐに体験することができます。開発に必要なのは、プログラムを書くためのテキストエディタのみです。あとは Terminal からコマンドを打てば動きます。以下、手順の例です。

以下のページに、もう少し具体的な説明を記載しています。
Python/Sample?


Python IDLE

公式サイトで配布されている標準的な開発環境(IDLE)です。ダウンロード・インストールすると(Win / Macとも)アプリケーションメニューに Pythonフォルダ が追加され、IDLEのダブルクリックで開発環境が起動します。配布元は以下。

Terminalで確認すると以下の場所に存在することがわかります。

$ whitch python3  ← Terminal でコマンドの所在を確認
/Library/Frameworks/Python.framework/Versions/3.8/bin/python3

ライブラリ等の追加は Terminal から pip3 コマンドを使って行う前提です。

ウインドウの中のプロンプト等は、Terminalで見えるものと同様ですが、ウインドウには専用のメニューが並びます。インタラクティブモード、スクリプトモード、同様に使えます。カレントディレクトリを意識することなく、普通にファイルを開いて走らせることができるので、Terminalの利用よりもハードルが下がります。


Anaconda

Anaconda はデータサイエンス向けの統合開発環境で、科学技術計算などを中心とした数多くのモジュールやツールが独自の形式でパッケージされています。ソースコードエディターはもちろん、Python 2系、3系を仮想環境を分けて利用できるなど、様々な活用が可能です(ディスク領域は1GB以上使います)。

IPython の環境

IPython(アイパイソン)は Python を対話的に実行するためのシェルで、Python の機能の一部(対話処理)に、対話を強化する各種機能を追加したもの・・というイメージです。統計処理(データ読む>分析する>結果をグラフで表示する)など、作業を逐次的に進めていくプログラムの開発に向いています。


Jupyter Notebook / Jupyter Lab

Jupyter Notebook / Jupyter Lab は、IPython というカーネルと、Notebook または Lab という Web UI をセットにした開発環境で、ブラウザ上でデータ処理とコメントなどを順次ノート形式で記録できるようにしたものです。ブラウザを動作基盤とした Webアプリケーションなので、環境に依存しない開発が可能です。

注).html拡張子 に対するアプリケーションの割付が「ブラウザ」になっていることが必要です。.html のダブルクリックでエディタが開くような割付設定を行なっていると、Notebookがうまく起動できないので注意して下さい。

Google Colaboratory

GoogleColaboratory とは、Googleの仮想マシン上で動くIPythonの実行環境で、Jupyter Notebook を利用します。Googleアカウントがあれば、ブラウザから誰でも無料で利用できます。
https://colab.research.google.com

記事を独立させました。> GoogleColaboratory

参考:Jupyter Notebookの公開について

分析の結果(JupyterNotebook)を他者に見せたい場合はどうするか・・
 JupyterNotebook のデータ(.ipynb)ファイルは、JSON 形式のテキストファイルなので、そのままだと意味不明の状態です。これを開発中のノート形式と同様に閲覧できるようにするには・・・





Python ツール・ライブラリ

ツール・ライブラリ等のインストール

Terminal からのインストールには、pip3(2系は pip)を使います。以下のように、コマンド入力はいたって簡単です。

$ pip3 install pygame ← ゲーム開発用のライブラリ
$ pip3 install pyopengl ← 3DCG用のグラフィックライブラリ
$ pip3 install jupyter ← jupyter notebook
$ pip3 install orange3 ← データマイニングツール Orange3


ライブラリ紹介


インストール済みライブラリの確認

以下のコマンドで確認できます

$ pip3 list
Package            Version
------------------ -----------
ipykernel          5.3.0
ipython            7.16.1
jupyter            1.0.0
jupyter-client     6.1.5
jupyter-console    6.1.0
jupyter-core       4.6.3
matplotlib         3.2.2
notebook           6.0.3
numpy              1.19.0
pandas             1.0.5
pip                20.1.1
 :


ライブラリ・パッケージ・モジュール

APPENDIX

Python 禅

Python 禅(The Zen of Python)は、Pythonプログラマが持つべき心構えを簡潔にまとめたものです。"Zen"は日本語の「禅」。Pythonインタプリタ環境で import コマンドを以下のようにタイプするとその文章を読むことができます。

$ python3
Python 3.8.2・・・
>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!