機械学習、データ分析などで大量データを扱うときは、Pandasを使うのがセオリーらしい。
が、まだどうありがたいのかは、勉強不足で不明だが、とにかく徹底的にデータの解析をしてくれる。
http://pandas.pydata.org/pandas-docs/stable/index.html
とりあえず、PandasでCSVデータの読み込み
- サンプルデータ
No | Name | Value |
1 | AAA | 1.01 |
2 | BBB | 0.003 |
3 | CCC | 2.04 |
4 | DDD | 13.04 |
5 | EEE | 9.9 |
6 | FFF | 0.45 |
7 | GGG | 21.02 |
8 | HHH | 0 |
9 | III | 8.2 |
10 | JJJ | 6.6652 |
No,Name,Value
1,AAA,1.01
2,BBB,0.003
3,CCC,2.04
4,DDD,13.04
5,EEE,9.9
6,FFF,0.45
7,GGG,21.02
8,HHH,0
9,III,8.2
10,JJJ,6.6652
import pandas as pd
data = pd.read_csv("data01.csv",index_col=0)
データの全ダンプ
>>> data
Name Value
No
1 AAA 1.0100
2 BBB 0.0030
3 CCC 2.0400
4 DDD 13.0400
5 EEE 9.9000
6 FFF 0.4500
7 GGG 21.0200
8 HHH 0.0000
9 III 8.2000
10 JJJ 6.6652
index_col
で指定した列情報?
>>> data.index
Int64Index([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], dtype='int64', name='No')
>>> data.index.values
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], dtype=int64)
>>> data.columns
Index(['Name', 'Value'], dtype='object')
>>> data.columns.values
array(['Name', 'Value'], dtype=object)
data.shape
は(行、列)を返す。インデックス指定した列はカウントしてない模様
>>> data.shape
(10, 2)
data.describe()
は表の基本情報
- count 行数
- mean 平均
- std 標準偏差
- min 最小値
- 25% 25%分位数
- 50% 50%分位数(中央値)
- 75% 75%分位数
- max 最大値
>>> data.describe()
Value
count 10.000000
mean 6.232820
std 6.979817
min 0.000000
25% 0.590000
50% 4.352600
75% 9.475000
max 21.020000
列データを出力
>>> data['Name']
No
1 AAA
2 BBB
3 CCC
4 DDD
5 EEE
6 FFF
7 GGG
8 HHH
9 III
10 JJJ
Name: Name, dtype: object
>>> data['Value']
No
1 1.0100
2 0.0030
3 2.0400
4 13.0400
5 9.9000
6 0.4500
7 21.0200
8 0.0000
9 8.2000
10 6.6652
特定の列、行の値
>>> data['Name'].values[6]
'GGG'
>>> data['Value'].values[2]
2.04
範囲の抽出
>>> data[1:3]
Name Value
No
2 BBB 0.003
3 CCC 2.040
>>> data[:4]
Name Value
No
1 AAA 1.010
2 BBB 0.003
3 CCC 2.040
4 DDD 13.040
>>> data[4:]
Name Value
No
5 EEE 9.9000
6 FFF 0.4500
7 GGG 21.0200
8 HHH 0.0000
9 III 8.2000
10 JJJ 6.6652