データ解析でまずやることのメモ
データ解析をする際に,いきなり回帰したりクラスタリングしたりしない.まずはデータを見ることが重要.これをささっとやれるようにするためのメモ.あまり好きではなかった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