上級マクロ経済学

第3回 pytonの導入と基礎

Author

荻巣嘉高

1 Pythonの導入

プログラミング言語

  • コンピュータに計算の指示を出すために、コンピュータが理解できるように指示文を書きます。
  • 経済分野のデータ分析でよく利用されるのは、
    • Matlab
    • Stata
    • R
    • Python
    • Fortran
    • Julia

なぜPython?

  • 無料
  • 基本的なことなら十分できる
  • コードが読みやすい
  • 応用先が豊富
    • データ解析
    • 数値解析
    • AI開発
    • アプリケーション開発
  • ライブラリの開発が盛ん

ライブラリ

いろんな操作を自分でわざわざコーディングしていたら大変です。

  • ある一連の操作を実行してくれるコードを、世界中の人たちが作成・公開してくれています。
    • これらがモジュールと呼ばれます。
  • モジュールを集めたものがパッケージ
  • パッケージを集めたものがライブラリ
    • 統計分析を行うもの(statsmodels)
    • グラフ描写を行うもの(matplotlib)

ライブラリのイメージ

モジュール
データ
回帰係数
分散と共分散
標準誤差
残差
決定係数
分析結果

Pythonの実行

  • Pythonのファイルは「.py」という拡張子で保存されています。

  • Pythonはそれなりに使いやすいですが、

    • 1つのテキストファイルを作って
    • いちいちそれをコマンドラインで実行して

    という作業を行うのは面倒です。

  • アプリケーション内でコードを書いて、アプリケーション内で実行するようなものもあります。

    • Spyderなど

Jupyter Notebook

  • 最近ではより便利なNotebook形式のファイルを使ったりする。
    • 拡張子が「.ipynb」のファイルです。
  • 例えば、Jupyter Notebookは1つのファイルの中でpythonコードの実行ができます。
  • この講義では、notebook形式のファイルを用います。
    • Google Colaboratory
    • Jupyter Notebook
    • Jupyter Lab

2 基本的な演算と操作

四則演算

Notebookを開いてください。 セルに次のコードを入力してみてください。

足し算(10+2

10 + 2
12

引き算(10-2

10 - 2
8

掛け算(10\times 2

10 * 2
20

割り算(10\div 2

10 / 2
5.0
  • 半角が基本です。
  • 半角スペースは無視されます。
  • 全角スペースにも注意。
  • 「1行に1つの処理」が基本。

乗算

乗算はアスタリスク(*)を2つ

2^3

2**3
8

\sqrt{9} = 9^{1/2} = 9^{0.5}

9**(1/2)
3.0

かっこに注意。

9**1/2
4.5

これは実質 9^1 \div 2 を計算していることになっている。

剰余

割った後の余り(剰余)を計算するためには、%を使う。 10 \mod 2 = 0 10 \mod 3 = 1 10 \mod 4 = 2

10 % 2
0
10 % 3
1
10 % 4
2

条件式

いくつかの条件式が使えます。

  • 正しいとTrue、正しくないとFalseが帰ってくる。
  • 条件式の例は以下に。(コメントアウトについては後述)
# リストに入っているかどうか
test_list = [0,1,2,3]
3 in test_list # test_listに3が入っている
True
# 等価
3 == 4 # 3と4が等しい
False
3 == 3 # 3と3が等しい 
True
3 > 2 # 3が2より大きい
True
3 <= 2 # 3が2以下
False
3 >= 2 # 3が2以上
True
# 数字と文字の比較
3 == "3"
False
3 == str(3)
False
"3" == str(3)
True
# 真偽(bool)値比較
True == True
True
# 真偽(bool)値比較
True == 1
True
# 真偽(bool)値比較
True == 0
False
# 真偽(bool)値比較
False == False
True
# 真偽(bool)値比較
False == 0
True

変数と結果の保持

a = 10+2 
b = 10*2 
a
12
a = 10+2 
b = 10*2 
b
20
a = 10+2 
b = 10*2 
a, b
(12, 20)
a = 10+2 
b = 10*2 
a*b+60
300

変数のルール

  • Pythonですでに使われていないもの
    • Pythonではいくつかの関数が用意されている
    • “+”や”-“、”^“などもダメ。演算と勘違いされる。
  • スペースを含まない。
    • “ogisu yoshitaka”という変数は作れない。
    • こういうケースではスペース部分を”_“(アンダーバー)で置き換えたりする。
    • “ogisu_yoshitaka”という変数は作れる。
ogisu_yoshitaka = 10+2
ogisu_yoshitaka
12

Notebookの出力

  • Notebookでは、基本的に、一番最後の入力結果が出力される。
a = 10+2 
b = 10*2 

a
b
20
  • print関数を使えば、途中の結果も出力できる。
a = 10+2 
b = 10*2 

print(a)
b
12
20

コメントアウト

コード内でコメントを残せる。 Pythonでは、“#”以降が処理されない。

a = 10+2 
b = 10#+2 

a,b
(12, 10)
  • コメントアウトを使ってメモを残すことを癖にするべき。
a = 10+2 # 10に2を足している
b = 10*2 # 10に2をかけている

a,b
(12, 20)
a = 10+2 # 10に2を足している
b = 10*2  10に2をかけている

a,b

これはエラーになる(2行目で処理がストップする)。

長いコメントアウト

コメントが長い場合は、“““、あるいは’’’で始まりと終わりを囲えばOK

"""
ここでは
すきほうだい
c = 2+1
できるぜ
"""

'''
こっちでも
OK
'''

a = 10+2 # 10に2を足している

a #, c
12

文字列

“あるいは’で囲えば文字列を扱える。

a = 10+2
b = "おぎす"

print(a) # 変数のaの値を出力
print("a") # aを文字として出力
print(b) # 文字列の入っている変数bを出力
12
a
おぎす
  • 文字列を足すと、次のようになる。
myname = "おぎす"
text = "わたしの名前は" + myname + "です。"

print(text)
わたしの名前はおぎすです。

文字と数字

  • 文字列と数字は足せない。
    • 整数の数字はint型
    • 実数の数字はfloat型
    • 文字列はstr型
  • 「strとint」、「strとfloat」の演算は定義されていない。
    • 文字列に数値を入れたい場合は、“str”という関数を使って、数値を文字列に変換する。
myname = "おぎす" # str型
age = 20 # int型

text0 = "わたしの名前は" + myname + "です。"
#text1 = "わたしの年齢は" + age + "です。" # エラーを吐く。
text2 = "わたしの年齢は" + str(age) + "です。" # エラーを吐かない。

print(text0)
print(text2)
わたしの名前はおぎすです。
わたしの年齢は20です。

Pythonリスト

変数などを集めたものとして、リストを作ることができる。

a = 10+2
b = 10*2

test_list0 = [12, 20]
test_list1 = [a,b]

print(test_list0)
print(test_list1)
[12, 20]
[12, 20]

Pythonリストの参照

リストの第i要素には、次のようにアクセスできる。

  • Pythonのカウントは、0から始まることに注意
test_list3 = [12, 20, 30, 40, 50]

print(test_list3[3]) # 4番目の要素を参照
print("4番目の要素は、"+str(test_list3[3])+"です。") 
40
4番目の要素は、40です。
  • このときのiインデックスという。
  • そのインデックスで表される値(上の例では40)を第i要素とよぶ。

スライス参照

  • 要素は、「ここからここまで」と指定できる。
  • この場合、[1:3]のように指定。
    • だたし、上限値は含まれないことに注意。
test_list3 = [12, 20, 30, 40, 50]

print(test_list3[1:4]) # 第1要素から第3要素を参照
[20, 30, 40]
  • 「第何要素以降」、「第何要素より前」もできる
test_list3 = [12, 20, 30, 40, 50]

print(test_list3[1:]) # 第1要素以降
[20, 30, 40, 50]
test_list3 = [12, 20, 30, 40, 50]

print(test_list3[:3]) # 第3要素より前
[12, 20, 30]

後ろからの参照

一番後ろの要素を[-1]で参照できる。

test_list3 = [12, 20, 30, 40, 50]

print(test_list3[-1]) # 一番後ろの要素
50
test_list3 = [12, 20, 30, 40, 50]

print(test_list3[-2]) # 後ろから2番目の要素
40
test_list3 = [12, 20, 30, 40, 50]

print(test_list3[-2:]) # 後ろから2番目以降の要素
[40, 50]
test_list3 = [12, 20, 30, 40, 50]

print(test_list3[:-1]) # 一番後ろの要素より前の要素
[12, 20, 30, 40]

まとめ

  • 基本的な演算やリストは覚えておかないといけません。
  • プログラミングは、基本的には、習うより慣れろです。
  • 次回は以下のトピックス。
    • if文
    • for文
    • 関数