このエントリーをはてなブックマークに追加

Advent Calendar 2013 - 2

Python で解析! - DataFrame - 1

環境構築はできたということで、 Pandas の中心となる DataFrame を取り上げる。

1. DataFrame の作成

DataFrame は、Excel の表、あるいはデータベースのテーブルのようなもの。ipython を使って試してみる。

$ ipython

ipython が起動したら、データの準備をする。

import pandas as pd

df = pd.DataFrame([
   [10, 20, 30, 40, 500],
   [15,  25, 35, 45, 550],
   [18, 23, 37, 44, 450]
])
    0   1   2   3    4
0  10  20  30  40  500
1  15  25  35  45  550
2  18  23  37  44  450

2. 平均値、中央値、合計値

基本的な統計量を求めてみる。まずは平均値。

df.mean()
0     14.333333
1     22.666667
2     34.000000
3     43.000000
4    500.000000
dtype: float64

次は中央値。

df.median()
0     15
1     23
2     35
3     44
4    500
dtype: float64

最後は合計値。

df.sum()
0      43
1      68
2     102
3     129
4    1500
dtype: int64

3. 縦横を入れ替える

行列の入れ替えは簡単にできる。

df.T
     0    1    2
0   10   15   18
1   20   25   23
2   30   35   37
3   40   45   44
4  500  550  450

4. さらに、平均値、中央値、合計値

行列を入れ替えた上で、まずは平均値を。:

df.T.mean()
0    120.0
1    134.0
2    114.4
dtype: float64

次は中央値。

df.T.median()
0    30
1    35
2    37
dtype: float64

最後に合計。

df.T.sum()
0    600
1    670
2    572
dtype: int64

5. カラム名付きの DataFrame の作成

カラム名付きの DataFrame を作成してみる。

df = pd.DataFrame({
   'a': [10, 15, 18],
   'b': [20, 25, 23],
   'c': [30, 35, 37],
   'd': [40, 45, 44],
   'e': [500, 550, 450]
})
    a   b   c   d    e
0  10  20  30  40  500
1  15  25  35  45  550
2  18  23  37  44  450

定義時の表記と縦横が入れ替わっていることに注意。

6. カラム名で列データにアクセス

せっかく名前を付けたので、カラム名を使ってアクセスしてみる。

df['a']
0    10
1    15
2    18
Name: a, dtype: int64

プロパティとしてアクセスすることもできる。

df.a
0    10
1    15
2    18
Name: a, dtype: int64

7. そしてカラム毎の平均値、中央値、合計値

まずは、平均値。

df.b.mean()

22.666666666666668

中央値も。

df.b.median()

23.0

最後は合計値。

df['b'].sum()

68

今回はこんなところで。