教育データ分析入門(基礎)第1回¶

1.4 Pythonの基礎¶

1.4.1 数値演算1¶

In [3]:
# プログラミング言語は、人間が命令を書いて、コンピュータがその命令を評価します(出力もします)。
# 以下の例では"12 + 12"という命令を人間が書いてPythonがそれを評価し、出力しています。
# "12 + 12"と入力し、Shift+enterしてみましょう。

12 * 12 + 2
Out[3]:
146

Pythonでは以下の数学演算子が使えます(他にもあります)。

優先順位 演算子 説明 例 評価の値
1 ** 累乗 2 ** 3 8
2 * 掛け算 3 * 5 15
3 / 割り算 22 / 8 2.75
4 // 整数の割り算 22 / 8 2
5 % 剰余 22 % 8 6
6 + 足し算 12 + 12 24
4 - 引き算 12 - 2 10

1.4.2 文法エラー¶

In [4]:
# 以下のように命令を間違うとPythonは命令を評価できず、エラーを出力します。
# 間違いがありそうなところが"^"で示されます。
# "SyntaxError:"の後ろにエラーの種類が示されます。

12 /
  Cell In[4], line 5
    12 /
        ^
SyntaxError: invalid syntax

1.4.3 変数への代入¶

In [5]:
# 以下の文はaという変数に3という値を代入しています。
a = 3
In [6]:
# a = 3を実行したあとに以下のコマンドを入力すると"a"に代入された値が出力されます。
a
Out[6]:
3
In [7]:
# 変数同士の演算も可能です。
# 以下の例ではaに3を、bに7を、a * bの結果をcに代入し
# cを出力しています。
a = 5
b = 7
c = a * b
c
Out[7]:
35
In [8]:
# もちろん変数には文字列も代入できます。
# 文字列は""で囲みます。

a = "good"  # a = goodはダメ!
a
Out[8]:
'good'
In [9]:
# 文字列は以下のように連結ができます。
a = "Robert"
b = "Plant"
a + b
Out[9]:
'RobertPlant'
In [10]:
# 文字列は以下のように複製ができます。
a * 3
Out[10]:
'RobertRobertRobert'

正しい変数名と正しくない変数名

正しい変数名 正しくない変数名
good good-thing (ハイフンは使えない)
goodThing good thing (スペースは使えない)
good_thing 2thing (数字から始めてはいけない)
_good 22 (もちろん、数字だけもダメ)
GOOD good_$ing (特殊な記号は使えない)

1.4.4 数値の演算2¶

In [11]:
a = 12
b = 3

# 割り算
a/b
Out[11]:
4.0
In [12]:
# 剰余
a % b
Out[12]:
0
In [13]:
# 結果を変数に代入
ab = a * b
In [14]:
# aにbを足し入れる
a += b

1.4.5 関数とメソッド¶

In [15]:
# 関数
# 小数点以下を切り捨てる関数は
a = 2.5
round(a)

# 命令文と考えたら、roundが命令(動詞)で()内に目的語を書く感じ。
# 「aの小数点以下を切り捨てろ」みたいな。
# ()内に「目的語」の後ろに「どうやって」を表す副詞みたいな表現が入るときもある。
Out[15]:
2
In [16]:
# メソッド
# 関数と同じ命令だけど、「文法」が少し違う
# 大文字を小文字にするメソッドは

a = "I LOVE YOU MORE THAN ANYTHING IN THE WORLD."
a.lower()

# .(ドット)の前が「目的語」でその後ろに命令(動詞)を書く。
# ()の中に「どうやって」を表す副詞みたいな表現が入るときもある。
Out[16]:
'i love you more than anything in the world.'

1.4.6 リスト(配列)¶

In [17]:
# 変数(オブジェクト)を要素として持つデータ構造。順番を保持する。

# 整数のリスト
M = [2,3,4,5]

# もちろん少数も
N = [2.0,5.4,8.9,3.3]

# リストの代入
L = M

# 空のリストの作成
L = []

1.4.7 授業で扱った計算1¶

In [18]:
L = [12,25,32,65,44,89,35]

### データの個数
L_count = len(L)

### データの総和
L_sum = sum(L)

### 平均値(データの個数を総和で割る)
L_ave = L_sum / L_count

1.4.7 パッケージ¶

  • これまで使ってきたlen()などは組み込み(ビルトイン)関数と呼ばれ、
  • デフォルトで使えるものでした。
  • デフォルトではない関数を呼び出して使えるようにするには以下のように書きます。
  • また、関数が集まったものをパッケージと呼びます。
In [19]:
# numpyをnpという名前でimportする(これでnumpy以下の関数はすべて使える)
import numpy as np

# とするとnp.xxでnumpyの関数が使えるようになる
np.sqrt(2)
Out[19]:
1.4142135623730951
In [20]:
# 特定の関数をimportするとき
from numpy.random import *

# 乱数の発生
L = rand(100) 
# import numpy as npと書いてたら
# L = np.random.rand(100)
  • numpyは数値計算のパッケージ
  • 平均値や分散も以下のように求められる。
In [21]:
L = [12,25,32,65,44,89,35]
np.average(L)
Out[21]:
43.142857142857146
In [22]:
np.var(L)
Out[22]:
581.5510204081633
  • 分散は平均値と個々の値の差を2乗しているので
  • ルートすると元の単位に戻る。
  • これを標準偏差(Standard Deviation)と呼びます。
In [23]:
np.std(L)
Out[23]:
24.11536896686765

1.4.8 授業で扱った計算2¶

In [24]:
L = [12,25,32,65,44,89,35]
# 中央値
import numpy as np
np.median(L)

# 第一四分位数
from scipy import stats
stats.scoreatpercentile(L,25)

# 第三四分位数
from scipy import stats
stats.scoreatpercentile(L,75)
Out[24]:
54.5

練習問題¶

以下のデータの平均値、中央値、分散、標準偏差、第一四分位数、第三四分位数、四分位範囲を求めなさい。

L = [56,57,92,73,65,24,17,37,91,79,132]