Python で解析 2

“Advent Calendar 2013 - Python で解析!” の二日目。Pandas で DataFrame - 1

1. DataFrame の作成

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

$ ipython

以下、 ipython の画面。In が入力を表し、Out が出力。

In [1]: import pandas as pd

In [2]: df = pd.DataFrame([
   …:     [10, 20, 30, 40, 500],
   …:     [15,  25, 35, 45, 550],
   …:     [18, 23, 37, 44, 450]
   …: ])

In [3]: df
Out[3]:
    0   1   2   3    4
0  10  20  30  40  500
1  15  25  35  45  550
2  18  23  37  44  450

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

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

In [5]: df.median()
Out[5]:
0     15
1     23
2     35
3     44
4    500
dtype: float64

In [6]: df.sum()
Out[6]:
0      43
1      68
2     102
3     129
4    1500
dtype: int64

3. 縦横を入れ替える

In [7]: df.T
Out[7]:
     0    1    2
0   10   15   18
1   20   25   23
2   30   35   37
3   40   45   44
4  500  550  450

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

In [8]: df.T.mean()
Out[8]:
0    120.0
1    134.0
2    114.4
dtype: float64

In [9]: df.T.median()
Out[9]:
0    30
1    35
2    37
dtype: float64

In [10]: df.T.sum()
Out[10]:
0    600
1    670
2    572
dtype: int64

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

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

In [12]: df
Out[12]:
    a   b   c   d    e
0  10  20  30  40  500
1  15  25  35  45  550
2  18  23  37  44  450

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

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

In [13]: df['a']
Out[13]:
0    10
1    15
2    18
Name: a, dtype: int64
In [14]: df.a
Out[14]:
0    10
1    15
2    18
Name: a, dtype: int64

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

In [15]: df.b.mean()
Out[15]: 22.666666666666668

In [16]: df.b.median()
Out[16]: 23.0

In [17]: df['b'].sum()
Out[17]: 68

今回はこんなところで。