「Python プログラミング基礎その２」

九州大学 大学院システム情報科学研究院
情報知能工学部門
データサイエンス実践特別講座
備瀬竜馬, Diego Thomas, 正井克俊

復習2

CSV file format●CSV = comma separated values●File format specifications:●項目ごとにコンマ “,” で区切られたデータ●1行が一まとめのデータで、改行で行を識別●Example:

name, age, weight, height
Bob, 40, 80, 175
Taro, 35, 65, 170
・・・
3

Excel で csv ファイル
●Excel4

Excel で csv ファイル

列行5

Excel で csv ファイル
●CSV fileとして保存
フォルダの選択ファイル → “名前を付けて保存”
ファイルフォーマットの選択

csv（カンマ区切り）

適当に名前をつけて終了

6

ExelでCSVファイルを作ってみよう！
●Exelを開いて、次の内容を自分で書いてみよう！
●Bob, Taroに加えて、1行分、適当に自分で、データを書いて、CSVファイルとしてsaveしてみよう！
name, age, weight, height
Bob, 40, 80, 175
Taro, 35, 65, 170（ここに好きなデータを記載）

7

Fileのアップロード
クリック

クリック

右クリック

8

Fileのアップロード

クリック

ファイルを選択9Fileのアップロード: コマンド
from google.colab import files
files.upload()
クリック

ファイルを選択10

PythonによるCSVファイルの読み込み●CSVファイル読み込み用の道具をPython上で呼び出す

import pandas as pd11

CSVファイルの読み込み●CSVファイルを呼び出すおまじない

注）他のフォルダにファイルがある場合
pd.read_csv(“path名¥ファイル名”)
Windowsでは、¥¥とバックスラッシュ2つでないと動かない場合もある。

CSVファイルの中身のデータが格納読み込むCSVファイルのパス

読み込むCSVファイルの名前
以下を事前に行うことを忘れないように！
(1) import pandas as pd(2) “some.csv” をコードと同じフォルダに置く
12データの見方1●好きな行を見る●好きな列を見る↑0,1行目をみる↑０,1,2列目をみる
13

データの見方2●項目(index)を指定してみる↓項目を指定●項目を指定して好きな行を見る

どちらでもO.K.

行を指定して項目を指定

項目を指定して行を指定
14

データの見方2●項目(index)を指定してみる↓項目を指定●項目を指定して好きな行を見る

どちらでもO.K.

行を指定して項目を指定

項目を指定して行を指定

一個一個見てたらキリがない！

15データの可視化（プロット）●プロットには色んな方法があります●折れ線グラフ●ヒストグラム
●散布図
●etc.

16

はじめに
●今回はサンプルとして次の２つのデータを使ってみます●那覇，福岡，札幌の気温データ→ temperature_data.csv
http://www.data.jma.go.jp/gmd/risk/obsdl/index.php●体重身長データ（オーストラリア国立スポーツ研究所の男女202人のアスリートのデータ）→ height_weight.csv
http://www.statsci.org/data/oz/ais.html
17おまじないと準備●import pandas as pd●データの読み込み

ファイルの場所は各自置いた場所を指定しよう
18読み込んだデータの中身•「データフレーム」という形式で保存•

行列（縦が行，横が列）•

気温データは• 縦が時間• 横が地方
身長体重データは• 縦が人（サンプル）• 横が項目（性別，身長，体重）•19データの見方●好きな行をみる●好きな列をみる↑0,1,2行目をみる↑1,2列目をみる

20簡単な統計値を出す
●平均値

●分散

分散平均

●標準偏差21

まとめてみることもできます●統計量のまとめを表示

データの25%は～以下
データの50%は～以下
データの75%は～以下（上位25%は～以上）データの可視化（プロット）23

折れ線グラフ●折れ線グラフグラフの横軸が行の番号（index）でわかりにくい24

折れ線グラフ●折れ線グラフindexを date に変更

25

折れ線グラフ●折れ線グラフ右クリックすれば保存もできます26

ヒストグラム●ヒストグラム●那覇の気温の分布を見てみる

27

ヒストグラム（発展）●那覇，福岡，札幌の分布を比較したい

data.plot(kind=‘hist’)
data.plot.hist()
は同じ処理

binsは棒の数，alpha は透明度
28

Matplotlibを使った可視化●import matplotlib.pyplot as plt
リストもしくはnumpyのarray型を入力
pandas以外でも使えます。
csvデータは基本的にpandas の plotでも十分ですが、より高度な可視化（自由な可視化）をしたいときには便利（後ほど紹介）29

Numpy array への変換
Pandas の values を使うとnumpy の array型として抽出できる30

練習１：データの可視化●他の地方の分布も見てみよう●福岡、札幌、那覇それぞれのヒストグラムを作成●bins と alpha を変えて３地点の分布を比較してみよう●身長体重データでの統計値も見てみよう

31

散布図
●身長と体重はどんな関係がある？

32

散布図
●身長と体重はどんな関係があるか？
●性別でどんな違いがあるか？

33

項目同士の関係性を見るのに便利なプロット●項目がたくさんあるとき、まとめて関係をプロット●実際に実行してみましょう●図は右クリックで保存できます欠損値について●csv の中に空白（欠損）があると，NaN （Not a Number）というものが入る●サンプルファイルを読み込んでみてみよう

35

欠損値について●csv の中に空白（欠損）があると，NaN （Not a Number）というものが入る●欠損値のあるデータ（行）を取り除く

36

ベクトル表現とベクトル演算の関数化

37

ベクトル
●データの多くは数字の組，つまりベクトル！
●例：x=[62, 173]

●ベクトルで表現すると，●データ間の「距離」●類似度などが計算できました38

ベクトルと python●np.array を使うと色々な演算が楽●まず 「import numpy as np」を実行●例：39

ベクトルの演算:和●ベクトルの和（要素同士の和を取る）

𝒙𝑥1
𝑥2

𝒚𝑦1
𝑦2

𝑥1 + 𝑦1𝑥2 + 𝑦240ベクトルの演算:差●ベクトルの差（要素同士の差を取る）

𝒙𝑥1
𝑥2

𝒚𝑦1
𝑦2

𝑥1 − 𝑦1𝑥2 − 𝑦241ベクトルと数値の積●ベクトルと数値の積𝒙𝑥1
𝑠 × 𝑥2𝑠 × 𝑥1𝑠 × 𝑥242

練習２：2つのベクトル間の和と差を「プログラムで」計算させよう

36𝒙=,𝒚 =のとき 𝒙＋𝒚 , 𝒙 − 𝒚は？
5136𝒙 = 5 , 𝒚 = 1 のとき 𝒙＋𝒚 , 𝒙 − 𝒚は？
2243

データ「セット」●複数のベクトルを行列で表現

44

ユークリッド距離 (2)●2次元の場合

𝒙と𝒚の距離の二乗●3次元の場合

𝒙と𝒚の距離の二乗

𝒙𝑥1
𝑥2

𝒚𝑦1
𝑦2

𝒙𝑥1𝑥2
𝑥3

𝒚𝑦1
𝑦2𝑦3

要素の差の二乗

要素の差の二乗

要素の差の二乗
要素の差の二乗
要素の差の二乗ユークリッド距離 (3)●𝐷次元の場合

𝒙と𝒚の距離の二乗

𝒙𝑥1
⋮
𝑥𝐷

𝒚𝑦1
⋮𝑦𝐷

要素の差の二乗⋮
要素の差の二乗というわけで，何次元ベクトルでも距離は計算可能

もちろん1次元ベクトル(数値)間の距離も計算可能

𝑥1 − 𝑦1 2

演習１●那覇，福岡，札幌の気温データを読み込んで→ temperature_data.csv●各都市の365日分の気温を一つのベクトル（numpyarray型）として定義し、ベクトル間(那覇ー福岡、福岡ー札幌、札幌ー那覇)の和と差をそれぞれ求めよう（引き算の順序は問わない）。
●上記のベクトル間の距離も求めてみよう。
●求めた差のベクトルを折れ線グラフやヒストグラムで可視化してみよう。
●※）matplotlib.pyplot を利用する