Posted at

データサイエンス初心者のメモ[1日目]

More than 1 year has passed since last update.


概要

共同研究のアルバイトでデータサイエンスっぽいことをすることになったので,忘れないようメモとして残すことにします.

企業さんから(詳しくは書けませんが)あるデータログを頂きました.それに対して処理を行っていきます.


jupyter-notebook

Jupyter-notebookを使おうと思います.

自分はanaconda環境を使用しているので,

conda install jupyter

でJupyter-notebookをインストール.使用したいディレクトリに移動して

jupyter notebook

でWebブラウザからPythonのプログラムを実行できるツールが立ち上がる.

画面右上にある[New]のボタンから[Python3]を選択して準備完了.

あとはセルにコードを書いて,[Shift]+[Enter]で実行可能.


パッケージ

Pythonを使ったデータ解析,操作でよく使用される(らしい)ライブラリは

pandas, matplotlib, seabornです.(他にももっとあると思う...)

それぞれデータ解析支援,グラフ描画,(おしゃれな?)グラフ描画を目的としています.

これらをインストールして望みます.

import pandas as pd

import matplotlib.pyplot as plt
import seaborn as sns

ちなみにseabornをなぜsnsと略すのか調べたら,テレビ番組The West WingのSamuel Norman Seabornというキャラクターからきているそう.(どうでもいい)(参考:Stack Overflow)


やってみた

とりあえずいただいたデータがどんな内容か知りたいので適当に触っていきます.


  • まずはデータの読み込みから,データはcsvファイルである程度整形(1行目にそれぞれのラベルがあったり...)されていたので,

data = pd.read_csv('hogehoge.csv')

で読み込みました.pandasを使えばpandasのDataFrame(2次元のデータ構造)として読み込めるそう.


  • 次に

data.describe()

これで各行に対する個数,平均,偏差,min,25%値,50%値(中央値),75%値,maxが出力できます.

この場合,欠損値(NaN)は除外されて計算されます.

詳しくはこちらを参照.


  • データの中身をちょっと知りたい場合は

data.head()

デフォルトでは先頭5件が表示されます.


  • 各行に対するヒストグラムは.histで見ることができます.

data.hist(bins=30)

plt.show()


  • 自分のデータには欠損値(NaN)があったため,

droped_data = data.dropna()

droped_data.describe()

これで個数が変わりました..dropna()では1つでもNaNを含んでいるとその列毎落としてくれます.


  • NaNを落としたデータで相関性を見ようと思います.

droped_data.corr()

sns.heatmap(droped_data.corr().values)

plt.show()

上ではそれぞれの行に対する相関性を見ることができます.+1に近ければ正の相関,-1に近ければ負の相関,0に近ければ無相関となります.

下では相関性をヒートマップにして表示しています.

自分のデータではこのようなヒートマップを得ることができました.

heatmap.png

デフォルトの場合,色が白に近いほど正の相関,黒に近いほど負の相関となります.


まとめ

それぞれの特徴に対する相関を調べました.次回は必要な特徴の選択や欠損値の処理に対して考えていこうと思います.


環境


  • Python 3.6

  • pandas 0.20.3

  • matplotlib 2.1.0

  • seaborn 0.8.0