データ解析でまずやることのメモ

データ解析をする際に,いきなり回帰したりクラスタリングしたりしない.まずはデータを見ることが重要.これをささっとやれるようにするためのメモ.あまり好きではなかったpythonだけど,pandas, numpy, scipyなどなどに触れると便利だと気づく・・・悔しい(笑).

  • データのインポート(CSV

まずはデータを用意しないと始まらない.ここで覚えておくことは,ヘッダの扱い.もしもヘッダがない場合はheader=Noneを指定する.headerを別途指定するときはnamesで指定.特定のカラムをインデックス(行番号とかデータ番号みたいな意味)にしたいならindex_colを指定する.

iris = pandas.read_csv('iris.csv')
iris = pandas.read_csv('iris.csv', header=None)
iris = pandas.read_csv('iris.csv', names=['sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'class'])
iris = pandas.read_csv('iris.csv', index_col=('sepal_length'))
  • 欠損値の処理

データ処理の前に下準備.データに欠損値がある場合は除去したり,定数で埋める.前後の値から補間とかもあるみたい.行ごと削除か,列ごと削除かをaxisで指定する.0:行,1:列.

iris.dropna(axis=0) # drop rows that has at least one NA value.
iris.dropna(axis=1) # drop columns that has at least one NA value.
iris.fillna(0)      # fill NA with a constant, 0 in this example.
  • 平均,分散

さて,いよいよデータ解析だ.まずは各行ごとの平均,分散とかを確認したい.Rだとsummary()だ.pandasにも同様の関数(メソッド)describe()がある.

iris.describe()
  • 特定の行の分布を見る

次にやるのはある行を見てみることかな.取り敢えず散布図とヒストグラムを描く.

import matplotlib.pyplot as plt
iris['sepal_length'].hist()
plt.show()
  • ある行とある行の関係を見る

相関行列

iris.corr()

箱ひげ図(by=xxxでどの行に対して見るかを入力する)

iris.boxplot(by=u'species')

散布図行列(seabornを使うとより綺麗)

import seaborn as sns
sns.pairplot(iris[['sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'class']])
plt.show()
  • おまけ

++ 正規化

T.B.D