第7章

プログラミングの基本
R と Python のプログラミングの基本構文を学習します。実際にコードを書いてプログラムを実行し、プログラミングにより行われていることを理解します。

R と Python の基本構文を理解する。

- 132 -

R/PYTHON の基本構文
四則演算
ここでは R と Python の 2 つの言語について、四則演算の実行方法をそれぞれ解説します。

■R 言語 四則演算 演算子一覧
算術演算

例

R の演算子R での書き方

実行結果

足し算(加算)3+5＋3+5

8

引き算(減算)

8-2

-

8-2

6

掛け算(乗算)

5×4

*

5*4

20

割り算(除算)25÷5/25/5

5割り算(除算)(切り捨て）

25÷3%/%

25 %/% 38割り算(剰余)(除算の余り)10 ÷ 3 は
3 あまり 1%%

10 %% 313^2^3^29べき乗

上記演算子以外に、括弧を使うことも出来ます。括弧の中に計算したい任意の数を指定することで計算結果を得ることができます。また、複数の関数が含まれた計算を一度に行ったり、セミコロン ; で区切ることで、複数の式をまとめて一行に書くこともできます。

以下四則演算子の例を示します。
足し算(加算)+演算子

引き算(減算)： -演算子

掛け算(乗算)：*演算子- 133 -

割り算(除算)： /演算子

割り算(除算)_切り捨て：//演算子

割り算(剰余)_除算の余り：%演算子

べき乗：**演算子■Python 四則演算 演算子一覧
算術演算例

Python の演算子

Python での書き方

実行結果

足し算(加算)3+5＋3+58

引き算(減算)

8-2

-

8-2

6

掛け算(乗算)

5×4

*

5*4

20

割り算(除算)25÷5/25/5

5

割り算(除算)(切り捨て）

25÷3//

25 // 38割り算(剰余)(除算の余り)10 ÷ 3 は
3 あまり 1%

10 % 313^2**

3 ** 29べき乗- 134 -データ型が、整数型 int 、浮動小数点型 float などの数値に対しては四則演算やべき乗の処理が行えます。
int と float は異なる型ですが、計算を行うことができ、 int と float の演算結果の型は float になります。
演算子を使う際には、記号の両側に値を記述します。 半角英数字入力が基本（全角は避ける）で、大文字と小文字は区別されます。また、文法的な意味はありませんが、 演算子の両側にひとつずつ空白を空けるとコードが読みやすくなります。 この空白は Python のコーディング規約で推奨されています。
＜参考 URL：PEP 8 -- Style Guide for Python Code＞
https://www.python.org/dev/peps/pep-0008/#should-a-line-break-before-or-aftera-binary-operator

以下四則演算子の例を示します。
足し算(加算)+演算子

引き算(減算)： -演算子

掛け算(乗算)：*演算子

割り算(除算)： /演算子

- 135 -

割り算(除算)_切り捨て：//演算子

割り算(剰余)_除算の余り：%演算子

べき乗：**演算子- 136 -

代入
代入とは、数学で使用される、式または関数において、その中に含まれている文字または変数を他の値で置きかえることを言います。Python や R 言語も同様に、変数に値を代入することで、オブジェクトに名前をつけることができます。
変数名に使える文字は、小文字の英字、大文字の英字、数字、アンダースコア(_)です。また、数字は名前の先頭には使えません。例えば、「A4」は使用できますが、「4A」はエラーになるので使用することができません。
代入する値には、データや計算結果が入り、また代入によって名前を付けたオブジェクトはその名前で参照することが可能です。

■R 言語 代入R 言語では、通常は変数に値を代入する場合以下の様に表記します。
変数名 <- 代入するもの（値）[<- ]の左辺に変数を、右辺に値を記述することで、変数に値が代入されます。
そのまま変数名を入力して実行すると、変数が表示され確認することができます。

例 1：x に 2 を代入

例 2：y に 5 を代入

例 3：z に x と y を足したものを代入- 137 -

R 言語 演算子は、他に「->」「=」「assign("変数名", 値)」も使用できます。また、()で囲むと代入と表示を同時に行うことができます。

■Python 代入
Python では、変数に値を代入する場合以下の様に表記します。
変数名 = 代入するもの（値）[=(イコール)]の左辺に変数を。右辺に値を記述することで、変数に値が代入されます。

print 関数を使用すると変数が表示され確認することができます。

例 1：x に 2 を代入

例 2：y に 5 を代入

例 3：z に x と y を足したものを代入- 138 -

Python 代入演算子は以下のものも使用できる。
例

Python の演算子

Python での書き方

a=a+b+=

a += ba=a-b-=

a -= ba=a*b*=

a *= ba=a/b/=

a /= b抽出
データの中から条件を指定して必要な部分だけ抜き出すことができます。R 言語と Python での代表的な抽出のコード例を示します。

■R 言語 抽出
「オブジェクト：data」には「第４章 機械学習(教師なし学習) 主成分分析のデータ shuseibun.csv」を読み込んでいます。

●data より抽出したい行番号と列番号を指定して抽出
オブジェクト名[抽出したい行番号,抽出したい列番号]
例：1 行目の 5 列目のデータを抽出●data より行番号が一致するデータを抽出
オブジェクト名[抽出したい行番号,]
例：1 行目のみを抽出- 139 -

※範囲を指定しても抽出できます
オブジェクト名[抽出したい行番号始まり：抽出したい行番号終わり,]
例：1 行目～3 行目を抽出●列番号で抽出
オブジェクト名[抽出したい列番号]
例：1 列目のみを抽出※範囲でも抽出できる
オブジェクト名[抽出したい列番号始まり：抽出したい列番号終わり]
例：1 列目～3 列目を抽出- 140 -

●ヘッダー名をキーに、比較演算子が一致するデータを抽出
文字列一致：オブジェクト名[オブジェクト名$ヘッダー名=="抽出したい条件",]
例：ヘッダー名「チャンネル名」が「チャンネル 13」の行を抽出※データフレームの変数とヘッダー名の区切りには「$」を使います。ヘッダー名は、クオートする必要はありません。数値比較の場合は比較演算子を使用します。（代表的な比較演算子は以下に記載しています。）キーに指定している「チャンネル 13」は文字列なので、ダブルクオート「“」で囲ってください。行を抽出したいので、最後にカンマ「,」が必要です。

●数値を比較して抽出 オブジェクト名[オブジェクト名$ヘッダー名＞比較したい数値,]
例：ヘッダー名[ケーキ]の値が 0 の行を抽出●複数の条件が一致するデータを抽出
比較演算を[ & ]記号で繋げると抽出できます。
例：ケーキが 20 以上、食レポが 30 より小さいデータ●ソートして表示する
例：ヘッダー名「スイーツ」を昇順にソートして抽出- 141 -※降順にしたい場合は、「> data[ order( -data$スイーツ ), ]」とヘッダー名を指定する際にオブジェクトの前に「-」をつける。

R で使える論理演算子
a=b 等しい（イコール）

a == ba≠b ノットイコール（異なる）

a != ba<b 未満(小なり)a<ba≦b 以下(小なりイコール)

a <= ba>b 大きい(大なり)a>ba≧b 以上(大なりイコール)

a >= b

R で使える論理演算子
a かつ b （論理積）a&ba もしくは b （論理和）a|ba 以外 （否定）！a■Python 抽出
ｄｆには「第４章 機械学習(教師なし学習) 主成分分析のデータ shuseibun.csv」を使用しています。

●df より抽出したい行番号と列番号を指定して抽出（pandas の iloc アトリビュートを使用し抽出します。）行や列は 0 行目・0 列目から始まります。
例：1 行目の 5 列目のデータを抽出●df より行番号が一致するデータを抽出（コロンを用いて抽出できます）
例：1 行目のみを抽出- 142 -

※範囲を指定しても抽出できます
例：1 行目～3 行目を抽出●数値を比較して抽出
例：ヘッダー名[ケーキ]の値が 0 の行を抽出●複数の条件が一致するデータを抽出
例：ケーキが 20 以上、食レポが 30 より小さいデータ- 143 -

●ソートして表示する
例：ヘッダー名「スイーツ」を昇順にソートして抽出- 144 -

Python で使える論理演算子
a=b 等しい（イコール）

a == ba≠b ノットイコール（異なる）

a != ba<b 未満(小なり)a<ba≦b 以下(小なりイコール)

a <= ba>b 大きい(大なり)a>ba≧b 以上(大なりイコール)

a >= bPython で使える論理演算子
a かつ b （論理積）a&ba もしくは b （論理和）a|ba 以外 （否定）~a

代表値の算出代表値とは、グループを代表する値（グループの中心の値）です。主に平均値、中央値、最頻値の 3 つを指します。

平均値： 全てのデータを足しあげて、その合計をデータの個数で割り算した値
最頻値： 一番多く出現している値（データの中で最も頻度が高い値）
中央値： データを大きい順に並べて、ちょうど真ん中にくる値。

左右対称のきれいな正規分布ではこれら 3 つの値は等しくなり、歪んだ分布だと数値にも偏りが生じ等しくなりません。分析や解析を行う場合は、取得したデータがどのような分布なのかをチェックする必要があります。
R 言語と Python それぞれの代表値を確認する演算子を次に示します。
「第４章 機械学習(教師なし学習) 主成分分析のデータ shuseibun.csv」のデータを使用します。

- 145 -

■R 言語 代表値の算出
R 言語では、次の関数を使用することで、データの代表値を求めることができます。

平均値

mean()

中央値

median()

最頻値

table() ・mfv()※「オブジェクト：data」には先の sample データを読み込みます。
例：スィーツの平均値を表示

例：スイーツの中央値を表示

例：スイーツの最頻値を表示
Table 関数を使用して、最頻値を求めることができます。
最頻値だけを表示するには、操作が必要です。

Modeest パッケージをインストールし mfv 関数を使用すると一回で求めることができます。

- 146 -

■Python 代表値の算出
Python では、次の関数を使用することでデータの代表値を求めることができます。
平均値

mean()

中央値

median()

最頻値mode()※「df」には先の sample データを読み込みます。
例：スィーツの平均値を表示

例：スイーツの中央値を表示

例：スイーツの最頻値を表示

numpy パッケージの「describe」関数を使用すると、データの基本統計量を確認できます。 以下の順で基本統計量が出力されます。
1.データの個数（count）
2.平均（mean）
3.標準偏差（std）
4.最小値（min）
5.1/4 位値（25%）
6.中央値（50%）
7.3/4 位値（75%）
8.最大値（max）- 147 -

- 148 -集計
R 言語と Python での代表的なデータ集計のコード例を示します。

■R 言語 集計
R 言語では、以下の演算子を使用することで、データ集計が行えます。

平均(因子)

ave(x)

5 数要約

fivenum(x)4 分位偏差IQR(x)

最大値max(x)平均mean(x)中央値

median(x)最小値

min(x)

クォンタイル点

quantile(x)範囲range(x)不偏標準偏差sd(x)合計値

sum(x)

不偏分散

var(x,y)

重み付け平均weighted.mean(x)また、summary 関数を使用することで、【最小値・第１四分位・中央値・平均値・第３四分位・最大値】については、指定したデータについてデータの概要を個別に演算子を実行せずとも一気に求めることができます。
例：summary 関数をしようして、データの概要を確認する。

- 149 -

■Python 集計
Python では、次の演算子を使用することで、データ集計を行います。

データ数

count()

平均値

mean()

標準偏差

std()

最小値

min()

第 1 四分位(25%点)

quantile(0.25)

中央値(50%点)

median()

第 3 四分位(75%点)

quantile(0.75)

最大値

max()

合計値

sum()

分散値

var()

最頻値

mode()

歪度

skew()

尖度kurt()- 150 -最大値を取る項目名

idxmax()

最小値を取る項目名

idxmin()Python のパッケージには、「decsribe」という便利な関数があり、上記の集計内容は「decsribe」関数を使うことで、一気に求めることができます。
例：decsribe 関数を使用して、データの概要を確認する。

他に集計時には、以下の演算子も使用する場合があります。
（これらは、「decsribe」の中には入っていません。）

合計値

sum()

分散値

var()

最頻値

mode()

歪度skew()

尖度kurt()

最大値を取る項目名

idxmax()

最小値を取る項目名

idxmin()- 151 -

可視化およびグラフ作成■Python 可視化およびグラフ作成
Python での可視化に使われるパッケージは以下の通りです。
-Matplotlib（Python の可視化に使われる標準的なパッケージ）-Pandas の plot 関数（Matplotlib の wrapper、シンプルなコードで pandas.DataFrame を可視化）-seaborn（Matplotlib の wrapper、統計的なデータを可視化しやすくしたパッケージでグラフを作成）

ここでは、標準的なパッケージの Matplotlib を使用してのコードの例を記載します。
例：棒グラフ- 152 -

例：ヒストグラム

例：散布図- 153 -

例：折れ線グラフ- 154 -

Matplotlib のグラフを指定する主な関数
描画の種類

関数名

棒グラフ

plt.bar

ヒストグラムplt.hist

散布図

plt.scatter

折れ線グラフplt.plot

円グラフ

plt.pie- 155 -