View
1.454
Download
2
Category
Preview:
Citation preview
"データ分析"の波乗り遅れた気がしてる人のための
Python×データ分析の超基礎の基礎_v1.0
~Pythonもデータ分析もまったくの素人なやつが、
データ分析に入門する前の超基礎の基礎を完全素人目線でまとめてみた~
@afroscript
自己紹介
■名前:
木下 雄策(27歳・福岡出身) @afroscript10
■略歴:
九州大学大学院で宇宙の研究
2013年 レバレジーズ入社
■今のお仕事:
日本のエンジニア業界を最強にすること!! ・エンジニア特化型Q&Aサイト【teratail】のDevRel担当
・年に50回くらいイベントやってます
■その他
・Gs'ACADEMY2期生/WebGLスクール3期生
・LIGブログ「0エンジニアから0.5エンジニアへ」連載中
・元アフロ、フリースタイルバスケットボーラー
・最近は、Web3DやWebVRが好き
そんな1ヶ月前の僕みたいな人のために、完全に素人目線からPython×データ分析の超基礎の基礎を
まとめてみました:)
どんなライブラリ使うの??
どんな環境でやるの??
そもそもデータ分析って何するの?
●そもそもデータ分析って何なんだろう?
●Pythonでデータ分析するのに最低限必要そうなもの
●データ分析のための超基礎の基礎ワード
●データの可視化基礎の基礎
・箱ひげ図
・ヒストグラム
・散布図
●代表的な分析手法 → 今後勉強すべき分析手法
・その1:仮説検定(それって本当に関連性あるの?) ・その2:ロジスティック回帰分析(どの要素が結果にコミットしたの?) ・その3:クラスター分析(なんかいい具合にグループ分けしてくれるやつ) ・その4:決定木(機械学習の第一歩)●まとめ
目次
■「データ分析」=「データ」+「分析」
●「データ」とは?
→複数の事実や事象、資料、数値の集まり
●「分析」とは?
→ある物事を分解して、それを成立させている成分・要素・側面を
明らかにすること
●「データ分析」とは?
※参考:wikipedia
そもそもデータ分析って何?(完全素人目線)
■「データ分析」=「データ」+「分析」
●「データ」とは?
→複数の事実や事象、資料、数値の集まり
●「分析」とは?
→ある物事を分解して、それを成立させている成分・要素・側面を
明らかにすること
●「データ分析」とは?
→複数の事実や事象、資料、数値の集まりを分解して、
それを成立させている成分・要素・側面を明らかにすること
そもそもデータ分析って何?(完全素人目線)
■「データ分析」=「データ」+「分析」
●「データ」とは?
→複数の事実や事象、資料、数値の集まり
●「分析」とは?
→ある物事を分解して、それを成立させている成分・要素・側面を
明らかにすること
●「データ分析」とは?
→複数の事実や事象、資料、数値の集まりを分解して、
それを成立させている成分・要素・側面を明らかにすること
→「データの準備」と「分解方法」と「結果の考察」がざっくり必要そうな感じ
そもそもデータ分析って何?(完全素人目線)
■とりあえず「Python」を入れる(今回は3.5.2使った) https://www.python.org/downloads/ ※「Download Python 3.5.●」をクリック
Pythonでデータ分析するのに必要なもの(1/4)
■とりあえず「Python」を入れる(今回は3.5.2使った) https://www.python.org/downloads/ ※「Download Python 3.5.●」をクリック
■次に「ANACONDA」を入れる(Win/Macどっちもやったけど、やっぱMacがよさげ) →Pythonの主要ライブラリを一括でインストールできるってゆう、
なんだか便利な素敵パッケージ
https://www.continuum.io/downloads ※「Download for ●●」をクリック
Pythonでデータ分析するのに必要なもの(1/4)
■こんなライブラリを使います(ANACONDAにすでに含まれているもの)●「NumPy」(ナムパイ/ナンパイ) →データ整理に必要な関数がいっぱい。
array(配列)とかrandom(乱数)とか使う感じ
Pythonでデータ分析するのに必要なもの(2/4)
■こんなライブラリを使います(ANACONDAにすでに含まれているもの)●「NumPy」(ナムパイ/ナンパイ) →データ整理に必要な関数がいっぱい。
array(配列)とかrandom(乱数)とか使う感じ
●「Pandas」 →データ解析を支援する機能がいっぱい入ったライブラリ。
SeriesやDataFrameとかのデータ型使える
Pythonでデータ分析するのに必要なもの(2/4)
■こんなライブラリを使います(ANACONDAにすでに含まれているもの)●「NumPy」(ナムパイ/ナンパイ) →データ整理に必要な関数がいっぱい。
array(配列)とかrandom(乱数)とか使う感じ
●「Pandas」 →データ解析を支援する機能がいっぱい入ったライブラリ。
SeriesやDataFrameとかのデータ型使える
●「SciPy」(サイパイ) →Science+Python。多分NumPyよりももっと科学寄りなことまできるっぽい
Pythonでデータ分析するのに必要なもの(2/4)
■こんなライブラリを使います(ANACONDAにすでに含まれているもの)●「NumPy」(ナムパイ/ナンパイ) →データ整理に必要な関数がいっぱい。
array(配列)とかrandom(乱数)とか使う感じ
●「Pandas」 →データ解析を支援する機能がいっぱい入ったライブラリ。
SeriesやDataFrameとかのデータ型使える
●「SciPy」(サイパイ) →Science+Python。多分NumPyよりももっと科学寄りなことまできるっぽい
●「matplotlib」 →PythonやNumPyのためのグラフ描画ライブラリ
Pythonでデータ分析するのに必要なもの(2/4)
■こんなライブラリを使います(ANACONDAにすでに含まれているもの)●「NumPy」(ナムパイ/ナンパイ) →データ整理に必要な関数がいっぱい。
array(配列)とかrandom(乱数)とか使う感じ
●「Pandas」 →データ解析を支援する機能がいっぱい入ったライブラリ。
SeriesやDataFrameとかのデータ型使える
●「SciPy」(サイパイ) →Science+Python。多分NumPyよりももっと科学寄りなことまできるっぽい
●「matplotlib」 →PythonやNumPyのためのグラフ描画ライブラリ
●「beautifulsoup4」 →WebからとってきたHTMLファイルのデータや表データを取り扱う
(僕はまだほとんど使ってないです )
Pythonでデータ分析するのに必要なもの(2/4)
■その他こんなライブラリを使う
(ANACONDAに入ってないので別途インストールする)
●「Seaborn」 →matplotlibよりも美しいグラフが描画できると言われているライブラリ
Pythonでデータ分析するのに必要なもの(2/4)
■その他こんなライブラリを使う
(ANACONDAに入ってないので別途インストールする)
●「Seaborn」 →matplotlibよりも美しいグラフが描画できると言われているライブラリ
●「html5lib」 →WebからとってきたHTMLファイルのデータを取り扱う?
(僕まだほとんど使ってない)
Pythonでデータ分析するのに必要なもの(2/4)
■その他こんなライブラリを使う
(ANACONDAに入ってないので別途インストールする)
●「Seaborn」 →matplotlibよりも美しいグラフが描画できると言われているライブラリ
●「html5lib」 →WebからとってきたHTMLファイルのデータを取り扱う?
(僕まだほとんど使ってない)
※ライブラリのインストール方法 (ターミナルから下記どちらかのコマンドで ) conda install *インストールするライブラリの名前 * ←ANACONDA入ってる場合に使える pip install *インストールするライブラリの名前 *
Pythonでデータ分析するのに必要なもの(2/4)
■IPython notebook(Jupyter)●ターミナルから下記コマンドで起動(PythonとANACONDAが入ってたら起動する) $ ipython notebook
Pythonでデータ分析するのに必要なもの(4/4)
■IPython notebook(Jupyter)●ターミナルから下記コマンドで起動(PythonとANACONDAが入ってたら起動する) $ ipython notebook
●すると、下記のようなのがブラウザで立ち上がるので、ここで作業していく。
Pythonでデータ分析するのに必要なもの(4/4)
■IPython notebook(Jupyter)で新しいファイルを作成
●「NEW▼」から「Python [Root]」をクリックすると、ファイルが生成される
Pythonでデータ分析するのに必要なもの(4/4)
■IPython notebook(Jupyter)で新しいファイルを作成
●「NEW▼」から「Python [Root]」をクリックすると、ファイルが生成される
Pythonでデータ分析するのに必要なもの(4/4)
●こんな画面
■IPython notebook(Jupyter)で新しいファイルを作成
●「NEW▼」から「Python [Root]」をクリックすると、ファイルが生成される
Pythonでデータ分析するのに必要なもの(4/4)
●こんな画面(※「Control+Enter」or「 Shift+Enter」で実行結果を返してくれる)
■基礎用語をひとまず並べてみる
●最大値
●最小値
●代表値
┗平均値
┗中央値(メディアン)→小さい順に並べた真ん中のデータの値
┗最頻値(モード)→最も多く出てくるデータの値
データ分析のための超基礎用語(1/4)
■基礎用語をひとまず並べてみる
●最大値
●最小値
●代表値
┗平均値
┗中央値(メディアン)→小さい順に並べた真ん中のデータの値
┗最頻値(モード)→最も多く出てくるデータの値
●四分位点
データ分析のための超基礎用語(1/4)
■基礎用語をひとまず並べてみる
●最大値
●最小値
●代表値
┗平均値
┗中央値(メディアン)→小さい順に並べた真ん中のデータの値
┗最頻値(モード)→最も多く出てくるデータの値
●四分位点→小さい順に並べて四等分してたときの境界線
データ分析のための超基礎用語(1/4)
■基礎用語をひとまず並べてみる
●最大値
●最小値
●代表値
┗平均値
┗中央値(メディアン)→小さい順に並べた真ん中のデータの値
┗最頻値(モード)→最も多く出てくるデータの値
●四分位点→小さい順に並べて四等分してたときの境界線
●箱ひげ図(plot box)
●分散(標準偏差)●ヒストグラム(度数分布図)●散布図
データ分析のための超基礎用語(1/4)
■基礎用語をひとまず並べてみる
●最大値
●最小値
●代表値
┗平均値
┗中央値(メディアン)→小さい順に並べた真ん中のデータの値
┗最頻値(モード)→最も多く出てくるデータの値
●四分位点→小さい順に並べて四等分してたときの境界線
●箱ひげ図(plot box)→最小値、第1四分位点、中央値(第2四分位点)、 第3四分位点、最大値をプロットした図
●分散(標準偏差)→データの「ひろがり」「ばらつき」を表す。
●ヒストグラム(度数分布図)●散布図
データ分析のための超基礎用語(1/4)
■基礎用語をひとまず並べてみる
●最大値
●最小値
●代表値
┗平均値
┗中央値(メディアン)→小さい順に並べた真ん中のデータの値
┗最頻値(モード)→最も多く出てくるデータの値
●四分位点→小さい順に並べて四等分してたときの境界線
●箱ひげ図(plot box)→最小値、第1四分位点、中央値(第2四分位点)、 第3四分位点、最大値をプロットした図
●分散(標準偏差)→データの「ひろがり」「ばらつき」を表す。
●ヒストグラム(度数分布図)●散布図
データ分析のための超基礎用語(1/4)
図で説明していきます!
■最大値/最小値/代表値(平均値/中央値/最頻値)/四分位点/箱ひげ図のイメージ
データ分析のための超基礎用語(2/4)
※参考:http://www.kousotu.com/lect_math/d03.php
■最大値/最小値/代表値(平均値/中央値/最頻値)/四分位点/箱ひげ図のイメージ
データ分析のための超基礎用語(2/4)
※参考:http://www.kousotu.com/lect_math/d03.php
小さい順に並べておく
■最大値/最小値/代表値(平均値/中央値/最頻値)/四分位点/箱ひげ図のイメージ
データ分析のための超基礎用語(2/4)
※参考:http://www.kousotu.com/lect_math/d03.php
●中央値(小さい順の真ん中のデータの値 ) →今回は「6」
■最大値/最小値/代表値(平均値/中央値/最頻値)/四分位点/箱ひげ図のイメージ
データ分析のための超基礎用語(2/4)
※参考:http://www.kousotu.com/lect_math/d03.php
●中央値(小さい順の真ん中のデータの値 ) →今回は「6」●最頻値(最も多く出てくるデータの値 ) →今回は「4」と「9」
■最大値/最小値/代表値(平均値/中央値/最頻値)/四分位点/箱ひげ図のイメージ
データ分析のための超基礎用語(2/4)
※参考:http://www.kousotu.com/lect_math/d03.php
●中央値(小さい順の真ん中のデータの値 ) →今回は「6」●最頻値(最も多く出てくるデータの値 ) →今回は「4」と「9」●四分位点
→小さい順に並べて四等分したときの境界線
小さい方から順に第 1、第2、第3四方分位点と呼ぶ
(第2四分位点=中央値となる )
■最大値/最小値/代表値(平均値/中央値/最頻値)/四分位点/箱ひげ図のイメージ
データ分析のための超基礎用語(2/4)
※参考:http://www.kousotu.com/lect_math/d03.php
●中央値(小さい順の真ん中のデータの値 ) →今回は「6」●最頻値(最も多く出てくるデータの値 ) →今回は「4」と「9」●四分位点
→小さい順に並べて四等分したときの境界線
小さい方から順に第 1、第2、第3四方分位点と呼ぶ
(第2四分位点=中央値となる )
<箱ひげ図>
■最大値/最小値/代表値(平均値/中央値/最頻値)/四分位点/箱ひげ図のイメージ
データ分析のための超基礎用語(2/4)
※参考:http://www.kousotu.com/lect_math/d03.php
●中央値(小さい順の真ん中のデータの値 ) →今回は「6」●最頻値(最も多く出てくるデータの値 ) →今回は「4」と「9」●四分位点
→小さい順に並べて四等分したときの境界線
小さい方から順に第 1、第2、第3四方分位点と呼ぶ
(第2四分位点=中央値となる )●箱ひげ図
→最小値、第1四分位点、中央値 (第2四分位点)、 第3四分位点、最大値を左のようにプロットした図
<箱ひげ図>
■最大値/最小値/代表値(平均値/中央値/最頻値)/四分位点/箱ひげ図のイメージ
データ分析のための超基礎用語(2/4)
※参考:http://www.kousotu.com/lect_math/d03.php
●中央値(小さい順の真ん中のデータの値 ) →今回は「6」●最頻値(最も多く出てくるデータの値 ) →今回は「4」と「9」●四分位点
→小さい順に並べて四等分したときの境界線
小さい方から順に第 1、第2、第3四方分位点と呼ぶ
(第2四分位点=中央値となる )●箱ひげ図
→最小値、第1四分位点、中央値 (第2四分位点)、 第3四分位点、最大値を左のようにプロットした図
→なんかいろいろ見えてくる便利な図!
<箱ひげ図>
■分散(標準偏差)/ヒストグラム(度数分布表)
データ分析のための超基礎用語(3/4)
※参考:http://www.ikpi.co.jp/knowledge/valuation/valuation_file100.htmlhttps://www1.doshisha.ac.jp/~mjin/R/63/fig01.PNG
●ヒストグラム(度数分布表)
■分散(標準偏差)/ヒストグラム(度数分布表)
データ分析のための超基礎用語(3/4)
※参考:http://www.ikpi.co.jp/knowledge/valuation/valuation_file100.htmlhttps://www1.doshisha.ac.jp/~mjin/R/63/fig01.PNG
●ヒストグラム(度数分布表) →データがどう分布するかを分かりやすく可視化する方法の中で、
最も直感的かつ手っ取り早いグラフ 。
■分散(標準偏差)/ヒストグラム(度数分布表)
データ分析のための超基礎用語(3/4)
※参考:http://www.ikpi.co.jp/knowledge/valuation/valuation_file100.htmlhttps://www1.doshisha.ac.jp/~mjin/R/63/fig01.PNG
●ヒストグラム(度数分布表) →データがどう分布するかを分かりやすく可視化する方法の中で、
最も直感的かつ手っ取り早いグラフ 。
※注意:値の大小とその頻度だけを見るものなので、
時系列での順番や値同士の関係性は表せない
■分散(標準偏差)/ヒストグラム(度数分布表)
データ分析のための超基礎用語(3/4)
※参考:http://www.ikpi.co.jp/knowledge/valuation/valuation_file100.htmlhttps://www1.doshisha.ac.jp/~mjin/R/63/fig01.PNG
●ヒストグラム(度数分布表) →データがどう分布するかを分かりやすく可視化する方法の中で、
最も直感的かつ手っ取り早いグラフ 。
※注意:値の大小とその頻度だけを見るものなので、
時系列での順番や値同士の関係性は表せない
●分散(標準偏差)
■分散(標準偏差)/ヒストグラム(度数分布表)
データ分析のための超基礎用語(3/4)
※参考:http://www.ikpi.co.jp/knowledge/valuation/valuation_file100.htmlhttps://www1.doshisha.ac.jp/~mjin/R/63/fig01.PNG
●ヒストグラム(度数分布表) →データがどう分布するかを分かりやすく可視化する方法の中で、
最も直感的かつ手っ取り早いグラフ 。
※注意:値の大小とその頻度だけを見るものなので、
時系列での順番や値同士の関係性は表せない
●分散(標準偏差) →データの「ひろがり」「ばらつき」を表す値 。
【小】
【大】
【中】
■分散(標準偏差)/ヒストグラム(度数分布表)
データ分析のための超基礎用語(3/4)
※参考:http://www.ikpi.co.jp/knowledge/valuation/valuation_file100.htmlhttps://www1.doshisha.ac.jp/~mjin/R/63/fig01.PNG
●ヒストグラム(度数分布表) →データがどう分布するかを分かりやすく可視化する方法の中で、
最も直感的かつ手っ取り早いグラフ 。
※注意:値の大小とその頻度だけを見るものなので、
時系列での順番や値同士の関係性は表せない
●分散(標準偏差) →データの「ひろがり」「ばらつき」を表す値 。
「分散」が大きければデータは散らばってるし、
小さければデータは平均値付近に集まってる。
分散の平方根をとったものが標準偏差
【小】
【大】
【中】
データ分析のための超基礎用語(4/4)
※参考:https://upload.wikimedia.org/wikipedia/ja/d/d5/%E6%95%A3%E5%B8%83%E5%9B%B3.pnghttp://nekopuni.holy.jp/wp-content/uploads/2013/10/3.gifhttp://cdn-ak.b.st-hatena.com/entryimage/264461267-1440996366_l.jpg
普通のやつ
■散布図(散布図最強説もあるとかないとか。。。)
データ分析のための超基礎用語(4/4)
※参考:https://upload.wikimedia.org/wikipedia/ja/d/d5/%E6%95%A3%E5%B8%83%E5%9B%B3.pnghttp://nekopuni.holy.jp/wp-content/uploads/2013/10/3.gifhttp://cdn-ak.b.st-hatena.com/entryimage/264461267-1440996366_l.jpg
普通のやつ 色つけたやつ
■散布図(散布図最強説もあるとかないとか。。。)
データ分析のための超基礎用語(4/4)
※参考:https://upload.wikimedia.org/wikipedia/ja/d/d5/%E6%95%A3%E5%B8%83%E5%9B%B3.pnghttp://nekopuni.holy.jp/wp-content/uploads/2013/10/3.gifhttp://cdn-ak.b.st-hatena.com/entryimage/264461267-1440996366_l.jpg
普通のやつ 色つけたやつ
■散布図(散布図最強説もあるとかないとか。。。)
データ分析のための超基礎用語(4/4)
※参考:https://upload.wikimedia.org/wikipedia/ja/d/d5/%E6%95%A3%E5%B8%83%E5%9B%B3.pnghttp://nekopuni.holy.jp/wp-content/uploads/2013/10/3.gifhttp://cdn-ak.b.st-hatena.com/entryimage/264461267-1440996366_l.jpg
普通のやつ 色つけたやつ5次元散布図 !?(色、球の大きさ、色の変化とかつけたやつ )
■散布図(散布図最強説もあるとかないとか。。。)
■箱ひげ図の書き方
→seabornライブラリのboxplot関数を使う
データの可視化基礎の基礎(箱ひげ図1/3)
#必要なライブラリ等の importfrom numpy.random import randnimport matplotlib.pyplot as pltimport seaborn as sns
#ブラウザ内に画像を埋め込むための命令です
%matplotlib inline
#正規分布に従う乱数を 100個用意
data1 = randn(100)
#箱ひげ図の描画
sns.boxplot(data=data1)
■箱ひげ図の書き方
→2つ同時に描画はこんな感じ
データの可視化基礎の基礎(箱ひげ図2/3)
data2 = randn(100) + 2
#箱ひげ図の描画
sns.boxplot(data=[data1,data2])
■箱ひげ図の書き方
→ヴァイオリンプロットってのもある
データの可視化基礎の基礎(箱ひげ図3/3)
#ヴァイオリンプロットってのもある
sns.violinplot(data=[data1,data2])
■ヒストグラム(度数分布図)の書き方
→matplotlibライブラリのpyplotモジュールのhist関数を使う
データの可視化基礎の基礎(ヒストグラム1/3)
#ライブラリの importfrom numpy.random import randnimport matplotlib.pyplot as plt
#ブラウザ内に画像を埋め込むための命令です
%matplotlib inline #正規分布に従う乱数データを 100個生成
dataset1= randn(100)
#ヒストグラムを描画
plt.hist(dataset1)
■ヒストグラム(度数分布図)の書き方
→normed=Trueを指定して正規化できる
データの可視化基礎の基礎(ヒストグラム2/3)
#縦軸の値を、総面積を 1としたときの面積比に
してくれる
plt.hist(dataset1, normed=True)
■ヒストグラム(度数分布図)の書き方
→正規化すると重ねて比較するときに便利
データの可視化基礎の基礎(ヒストグラム3/3)
#2つ目のデータを80個用意
dataset2 = randn(80)
#normed = Trueしておくと2つ重ねたときに便利
plt.hist(dataset1, normed=True, alpha=0.5, bins=20)plt.hist(dataset2, normed=True, alpha=0.5, bins=20, color='indianred')
#alpha=0.5で透明度も調整してる
#bins=20は分割数
■散布図の書き方
→matplotlibライブラリのpyplotモジュールのplot関数を使う、("o")を指定
データの可視化基礎の基礎(散布図1/2)
#必要なライブラリ /モジュールを importimport matplotlib.pyplot as pltfrom numpy.random import randn#ブラウザ内に画像を埋め込むための命令です
%matplotlib inline
x = randn(100)y = randn(100)
plt.plot(x,y,"o")#"o"はアルファベトの "オー"#「.」でも可能(点が小さくなる )
■散布図の書き方
→色を変えたり、重ねたりも可能(でも本当はplt.figure()を使うっぽい)
データの可視化基礎の基礎(散布図2/2)
x0 = randn(100)y0 = randn(100)
x1=randn(100)y1=randn(100)
#roはredの丸
plt.plot(x0,y0,"ro")#goはgreenの丸
plt.plot(x1,y1,"go")
■仮説検定(t検定/カイ二乗検定) →A/Bテストの効果検証などに使える
■ロジスティック回帰分析
→合格/不合格など1or0で結果が表せるものや、
コンバージョン率など0〜1の範囲で結果が表せるものの原因追求などに使える
■クラスタリング
→なんかいい具合にデータをグルーピングしてくれる
■決定木
→機械学習の勉強の第一歩。
発展させて、SVMやランダムフォレストを学ぶとよいらしい
次に学ぶべき分析手法
https://www.udemy.com/python-jp/
キャンペーンで安くなってたこれもよかったです。
■Python×データ分析で必要なもの
・ANACONDA(NumPy、Pandas、ScuPy、matplotlib、IPythonあたり)
■データ分析の前に基礎ワードを覚えよう
・中央値/最頻値/四分位点/分散etc...
■可視化の基礎
・箱ひげ図/ヒストグラム/散布図
■今後勉強すべき分析手法
・仮説検定/ロジスティック回帰分析/クラスタリング/決定木
まとめ
Recommended