本章では、このあとに学ぶデータサイエンス実践において、最小限必要と思われるPythonプログラミングの知識について学びます。 Pythonプログラミングについては、インターネット上にもたくさんの情報がありますので、 深く学んだり、別視点からの情報を得たいと思った場合は、最後に挙げているリンク集やインターネット検索を参考にして、ぜひ調べてみてください。
まず、プログラミングを初めて学ぶ人達のために、プログラミングの概要について説明します。 プログラミングとは、アルゴリズムと呼ばれるような、特定の問題を解決するための方法や手順を、コンピュータ上で実行出来るようにするための作業のことです。 プログラミングにより記述されたテキストファイルは、ソースコードと呼ばれています。
どのようなアルゴリズムでも、処理の流れは「順次」「分岐」「反復」の3つの構造の組み合わせで構成されています。 このような処理の流れを制御構造と呼びます。 各制御構造の役割は以下のとおりです。
日常生活に潜む、様々なアルゴリズムのうち、「ペットボトルの蓋を開ける」という手順を例に、各制御構造をイメージ出来るようにしてみましょう。 「ペットボトルの蓋を開ける」という処理の流れを以下のように書き下してみます。各処理の行末に、対応する制御構造を記載しています。
だいぶ簡略化した説明でしたが、何となくイメージ出来ましたでしょうか? このように日常的に何気なく行っている行動の中にも、順次・分岐・反復といった処理の組み合わせによる、様々なアルゴリズムが存在しています。 プログラミングを駆使することによって、あらゆる物事に対して、コンピュータを用いた自動化が可能となり、現在の私達の便利な生活があるといっても過言ではありません。
例として取り上げた「ペットボトルの蓋を開ける」というアルゴリズムを、Pythonというプログラミング言語によって実装するためには、 どういった基礎知識が必要なのか、順番に紹介していきたいと思います。
Pythonプログラミングについて、インターネットを検索すれば、たくさんの情報を得ることが出来ますが、 ここでは初めてプログラミングする方にとって、必要最小限と思われる項目に絞って、紹介しています。 大した量ではないので、ぜひ手を動かしながら実践して学んでいきましょう。 サンプルプログラムを実際に打ち込みながら学ぶ方法は、「写経」と呼ばれていて、プログラミングを効率よく学ぶ方法の一つとされています。
なお、スクリーンリーダーを用いて、Google Colab上にてPythonプログラミングをするための基本的な操作方法等については、前章の colabを使ったプログラミングを体験しよう を参考にしてみてください。
printというPythonが標準的に備えた関数(関数については後述)を用いることにより、プログラムの途中結果などを出力することが出来ます。 「こんにちわ」というメッセージを出力するプログラムを書いてみましょう。 なお、データとして扱いたい文字列については、プログラム自体の文字列と区別するために、ダブルクォーテーション「”」で前後を囲む必要があります。
print("こんにちわ")
シャープに続く文字列により、プログラム中にコメントを書くことが出来ます。 あとでプログラムの意味を思い出すためにも、適宜コメントを書いておくことをオススメします。 本ページのサンプルコードでは、print文により出力されるであろう内容を、コメントなどで記載しておきます。
print("こんにちわ") # 「こんにちわ」と表示される
アルゴリズムを実装する際、その処理が進む過程で変化していくような情報(データ)を読み書きするための仕組みが必要です。 Pythonプログラミングでは、変数、リスト、辞書といった仕組みが主に使われます。
変数とは、取り扱うデータ(例えば、蓋が外れているかどうかの状態)の入れ物のことで、読み書きする対象となります。 リスト型変数とは、複数の変数をまとめることの出来るタイプの変数です。 辞書型変数とは、複数の変数をキーと呼ばれるラベルをつけて管理することの出来るタイプの変数です。 以下、具体例を見ていきましょう。
変数には、=によって様々な数値や文字列を代入することが出来ます。 また、同じ変数名を呼び出すことによって、格納した値を読み出すことが出来ます。
x = 1
print(x) # 1
x = "hello"
print(x) # hello
リストには、複数の値や変数をまとめて格納することが出来ます。
a = [1, 2, 3]
print(a) # [1, 2, 3]
辞書には、複数の値や変数を、キーと呼ばれる名前付きで格納することが出来ます。
d = {"cat": "neko", "dog": "inu"}
print(d) # {'cat': 'neko', 'dog': 'inu'}
値や変数は、それら同士で算術演算をすることが出来ます。
x = 1
y = 2
print("xたすyは", x + y) # 足し算
print("xひくyは", x - y) # 引き算
print("xかけるyは", x * y) # 掛け算
print("xわるyは", x / y) # 割り算
関数とは、数学の関数のように与えられた値(引数)を元に何らかの計算や処理を行い、結果を呼び出し元に返す処理のことです。 同じような処理のまとまりがある場合、関数を適切に用いることにより、とても簡潔なプログラムを書くことが出来ます。
def sum(a, b): # 関数の定義
return a + b # 関数が返す値
answer = sum(1, 2) # 関数の呼び出し
print(answer) # 3
if文は、変数の値などに応じて、処理を分岐させることが出来ます。
x = 1
if x == 1: # 変数xの値が1のときは、次の行が実行される
print("xは1")
else: # 変数xの値が1ではなかったときは、次の行が実行される
print("xは1ではない")
for文は、リストや辞書の中身に応じて、処理を繰り返すことが出来ます。
for i in [1, 2, 3]: # in以降の複数の値が、変数iに格納されて、次の行が繰り返し実行される
print(i) # 1, 2, 3を順番に表示
アルゴリズムの一例として取り上げた、ペットボトルの蓋開けプログラムを、今まで習った内容を応用して、実装してみましょう。
futa = 0 # 蓋を回した回数をカウントする変数
for i in range(10): # 繰り返し処理
futa = futa + 1 # 蓋を回した回数を一つカウントアップ
print(f"蓋を{futa}回、回しました") # 途中経過の出力。f文字列という仕組みで、変数を文字列に含める書き方をしています
if futa == 4: # 蓋が空いたかどうかの確認。今回は4回で空いたことにする。
break # 反復処理から抜ける
print("蓋が外れました") # 終了メッセージ
Pythonが流行している大きな要因に、世界中の人々が作った膨大なプログラムを、 部分的に再利用出来るような外部ライブラリの豊富さが挙げられます。 例えば、各種数学的な仕組みを提供するnumpyという外部ライブラリを試してみましょう。
import numpy
average = numpy.mean([1, 2, 3]) # 平均値
print(average) # 2
データサイエンスでよく用いられる外部ライブラリには、以下のようなものがあります。
本コンテンツで利用しているGoogle Colabでは、上記のものを含め、いくつかデータサイエンス向けの外部ライブラリが予めインストールされていますが、 もしインストールされていない環境で利用しようとする場合、pipという仕組みでインストールする必要があります。 詳細については、最後に挙げるリンク集などを参考にして、調べてみてください。
本章では、データサイエンス実践に必要な最小限のPythonプログラミングの知識について学びました。 プログラミングの基本的な概念であるアルゴリズムとプログラミング、制御構造(順次、分岐、反復)について理解しました。 また、Pythonの基本的な構文、変数、リスト、辞書、算術演算、関数、if文、for文などの基本的な知識を習得しました。 さらに、Pythonでのアルゴリズムの実装方法を学び、具体的なアルゴリズムの例を通じて理解を深めました。 最後に、Pythonの強力な特性である外部ライブラリの利用について学び、データサイエンスでよく用いられる外部ライブラリについて紹介しました。 はじめは色々と躓くことが多いかと思いますが、エラーメッセージをインターネットで検索して解決策を見つけたり、 詳しい人に質問してみたりして、少しずつ出来ることを増やしていくと良いでしょう。