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
今回はこんなところで。