Python3超基礎(4)

機械学習、データ分析などで大量データを扱うときは、Pandasを使うのがセオリーらしい。
が、まだどうありがたいのかは、勉強不足で不明だが、とにかく徹底的にデータの解析をしてくれる。

http://pandas.pydata.org/pandas-docs/stable/index.html

とりあえず、PandasでCSVデータの読み込み

  • サンプルデータ
NoNameValue
1AAA1.01
2BBB0.003
3CCC2.04
4DDD13.04
5EEE9.9
6FFF0.45
7GGG21.02
8HHH0
9III8.2
10JJJ6.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
-->