ざっくり「表計算」と言っていますが,段階ごとに表が違いますね.
収集のときの表は,
名前 | 性別 | 身長 | |
---|---|---|---|
0 | 薗田 | 男 | 172 |
1 | 鈴木 | 女 | 165 |
2 | 斎藤 | 男 | 180 |
みたいな表です.これを データフレーム と言います.すべての基本となる表です.
index
の列(縦に上から順に読んだデータ [0,1,2]
は各行(横)のデータを区別するための値になっています.
index
以外の列は各行の各変数 (variable) の値 (value) を表し,名前
, 性別
, 身長
の文字列()項目名を「変数 (variable) 」,「薗田」とか「男」とか「172」を「値 (value) 」と言います.
値 value
だけを取り出すと,行列になっています.これが所謂「data」本体です.
標本を収集するたびに1行ずつデータが増えます.
要約のときの表は,
(統計量) | 名前 | 性別 | 身長 |
---|---|---|---|
代表値 | 薗田 | 男 | 163.5 |
列ごとに 代表値 や 分布の特徴値(統計値) でデータを置き換えたものです.
分布の特徴(統計値)としては,例えば,平均値や,中央値,最頻値,分散,標準偏差,...など.
関係を調べるときの表は,
男 | 女 | |
---|---|---|
165 | 鈴木 | |
172 | 薗田 | |
180 | 斎藤 |
のように,
という形です.
これを 分割表 だとか,クロス集計表 といいます.
予測結果の正誤評価するときの表は,
男と予想 | 女と予想 | |
---|---|---|
実際に男 | 10 | 3 |
実際に女 | 5 | 5 |
これを 混同行列, Confusion Matrix と言います.
なにはともあれ,データを収集したときの表,データフレームですが,正しい書き方があります.
という規則に従います.これまで,何を列にするか行にするかを曖昧にしていたかもしれませんが,正しい書き方を学んでください.迷うときもあると思いますが…
たとえば,次の情報を友達数人から聞いたとします.
この質問項目を決めた時点(友達に実際に聞く前)で変数が決まり,表を作ることができます.上記の1〜4の質問項目それぞれが列を成し,項目名が変数です.変数が並ぶ行を「ヘッダ(Header)」と呼びます.
名前 | 性別 | 好きな数 | 誕生月 | セロリ好き度 | 身長 |
---|---|---|---|---|---|
誰かから情報を集めるたびに行が増えていき,表は縦に長くなっていきます.
名前 | 性別 | 好きな数 | 誕生月 | セロリ好き度 | 身長 |
---|---|---|---|---|---|
薗田 | 男 | 7 | 5 | とても嫌い | 172 |
鈴木 | 女 | 3 | 12 | 好き | 165 |
斎藤 | 男 | 4 | 10 | 嫌い | 180 |
どこかのホームページに公開されているコロナウイルス陽性者数の時系列などはpdfや画像などで公開されていますが,これらのデータをデータフレームに直すことをスクレイピング(scraping)と読んでいます.pdfや画像から罫線を読み取って,罫線で区切られる数字や文字列を認識して,データフレームに直します.
データフレームの保存は,表計算ソフトであるmicrosoft excelの保存ファイル(.xlsx
)でももちろん良いですが,エクセルはデータだけでなく計算式も保存できます.なので要約したり,関係性を調べたりもできます.というか,むしろそちらがエクセルなど表計算ソフトの本分です.
データフレームの保存だけなら,CSV形式(Comma-Separated-Values(コンマ区切り変数群),.csv
)が最も単純で昔から使われ続けています.
たとえば先ほどの
名前 | 性別 | 好きな数 | 誕生月 | セロリ好き度 | 身長 |
---|---|---|---|---|---|
薗田 | 男 | 7 | 5 | とても嫌い | 172 |
鈴木 | 女 | 3 | 12 | 好き | 165 |
斎藤 | 男 | 4 | 10 | 嫌い | 180 |
は,
名前,性別,好きな数,誕生月,セロリ好き度,身長
薗田,男,7,5,とても嫌い,172
鈴木,女,3,12,好き,165
斎藤,男,4,10,嫌い,180
のように項目(変数)をコンマで区切って書きます.ただし,コンマのすぐ後ろに空白をつけてはいけません.
直接CSVを書いてもいいですが,行ごとに列の頭を揃えられないのが難点です.
excel で書いて,excelで「名前をつけて保存」のときに「csv」を指定するとCSVで保存されます.
Pandas
は,データフレームを扱う「パッケージ」です.パッケージとは,モジュール(.py
ファイル)を集めたフォルダ(ディレクトリ)です.つまり,Pandasはデータフレームを扱うための,クラスおよびクラスメソッド,関数,定数が定義された多数のモジュールが集められたフォルダであり,データフレームを扱う上でほぼデファクトスタンダードなパッケージです.
というわけで,Pandasを読みに行けるようにダウンロード・インストールしましょう.
> poetry add pandas
自分が作るモジュールでpandasを読むときは
import pandas as pd
とします.pandasの別名もpdとすることが普通です.
「あれれ,pandasはパッケージだからfrom pandas
ではないの?」と思うかもしれませんが,
実は,パッケージフォルダのすぐ下に __init__.py
というファイルが存在しているならば,import パッケージフォルダ
は,その __init__.py
をimportしたことになり,__init__.py
の中で定義された関数や定数を呼び出すことができます.
(__init__.py
に何も書かれていなければ,何も呼び出されず無意味ですが)
poetry new k01
で k01
フォルダを作ったとき,k01
の下のパッケージとなるフォルダ k01
に __init__.py
というファイルが自動作成されていましたね.
なので,すでに k01
パッケージは from
の指定先フォルダとしてだけでなく,
import
の指定先にもなれます.
import k01
ただし,__init__.py
に何の定義も書かれていないので無意味です.
k01/__init__.py
の中に
```{python, file=’k01/init.py’} from k01 import myclass
Frac = myclass.Frac # myclass.pyのFracに k01.Frac という名札を付ける
などとしておくと,
```{.py}
from k01 import myclass
x = myclass.Frac(1,10)
print(x)
とやっていたことを,
import k01
x = k01.Frac(1,10)
と書けるようになります.
pandasに,CSVファイルをデータフレームにする read_csv
という関数があります.これを使います.