こんにちは!
データサイエンティストのウマたん(@statistics1012)です。
Pythonを使う上で必ず使用する超重要ライブラリ「Pandas,Numpy,Matplotlib」。
個人的に最も使うライブラリはPandasですが、Numpyもシーンによっては使うことがありますねー!
そんなNumpyについて解説していきつつ、どのような場面でどのように使うのか簡単に見ていきます!
Numpyの使いどころをしっかりおさえておきましょう!
以下の動画でも詳しく解説していますので是非チェックしてみてください!
Numpyとは
引用元:Numpy公式
PandasとNumpyって何が違うの??という疑問を持たれる方も多いと思いますが・・・実はPandasはNumpyを拡張して使いやすくしたライブラリなんです。
そのため、ほとんどの前処理はPandasで完結することが多く、Pandasの方が扱いやすいです。
Numpyはndarray配列型のみしか扱えず中の要素は数値データでないといけません。
一方でPandasはDataframe型であり、要素は数値でも文字列でもバラバラでよいため実データを扱うのに長けています。
しかしその分演算処理はNumpyの方が速く、煩雑な行列計算に用いられることがあります。
高次元データの逆行列を求める時には大量の要素を持つ行列の演算を行うのでNumpyを使った方が演算が早くなります。
このように、基本的にはPandasを扱うシーンが多いものの、ここぞという場面・演算処理にはNumpyを使うことも少なくありません。
Numpyの使い方
それでは、Numpyの使い方について簡単に見ていきましょう!
まずは、Numpyをインポートします。
import numpy as np
これでNumpyが使えるようになります。
配列を作成する
Numpyを使って配列を作っていきましょう!
配列と似た型にリスト型があります。
リスト型はPythonに標準で組み込まれているもので要素は文字列でも数値でもバラバラで問題ありません。
一方Numpyで扱う配列型は1次元の配列から多次元配列(行列)型まで扱うことができ、中の要素は数値型で一致していないといけません。
実際に色々と触ってみて理解する方が早いので、配列を作って計算などをしてみましょう!
Numpyの配列型は以下のように生成することができます。
np.array([ 1,2,3 ])
array([ 1, 2, 3 ])
これが配列型!
Rangeで指定することもできます。
np.array(range(1,4))
array([ 1, 2, 3])
2次元の配列(行列の形)にしたい場合は以下のようにすれば大丈夫!
np.array([[ 1,2,3],[4,5,6]])
array([[ 1, 2, 3],
[4, 5, 6]])
これで2行×3列の2次元配列が出来上がりました。
行×列を確認するにはshapeを使ってみましょう!
A = np.array([[ 1,2,3],[4,5,6]])
A.shape
(2, 3)
以下のようにすると3行×2列の2次元配列が出来上がります。
np.array([[ 1,2],[3,4],[5,6]])
array([[ 1, 2],
[3, 4],
[5, 6]])
簡単ですね!
配列の操作
続いて出来上がった配列の操作方法についていくつか見ていきましょう!
2行×3列の配列を3行×2列に変換してみましょう!
reshapeを使うことで行数列数を変換することができます。
A = np.array([[ 1,2,3],[4,5,6]])
A.reshape(3,2)
array([[ 1, 2 ],
[3, 4],
[5, 6]])
この時、明示的に行と列を指定しなくても片方だけ指定して残りを-1にすることで適切な形に変換してくれます。
A.reshape(-1,2)
array([[ 1, 2 ],
[3, 4],
[5, 6]])
続いて、要素を追加してみましょう!
B = A.reshape(-1,2)
np.append(B,[[7,8]],axis=0)
array([[ 1, 2 ],
[3, 4],
[5, 6],
[7, 8]])
行が追加されました!
列方向へ追加する時は以下のように記述します。
np.append(B,[[7],[8],[9]],axis=1)
array([[ 1, 2, 7],
[3, 4, 8],
[5, 6, 9]])
できましたね。
続いて配列の特定要素を抽出してみましょう!
B = np.array([[ 1,2],[3,4],[5,6]])
array([[ 1, 2],
[3, 4],
[5, 6]])
この2次元配列の要素を抽出してみましょう。
B[0]
array([ 1, 2])
1行目の要素を抽出できました。
B[0][ 1 ]
2
1行目2列目の要素を抽出できました。
配列演算
配列演算について見ていきましょう!
シンプルに各要素に対して数値(スカラー値)を足し合わせることが可能。
B = np.array([[ 1,2],[3,4],[5,6]])
B+2
array([[3, 4],
[5, 6],
[7, 8]])
スカラーをかけることも可能。
B = np.array([[ 1,2],[3,4],[5,6]])
B*3
array([[ 3, 6],
[ 9, 12],
[15, 18]])
多次元配列同士の足し算も形が一緒であれば可能です。
B = np.array([[ 1,2],[3,4],[5,6]])
B+B*3
array([[ 4, 8],
[12, 16],
[20, 24]])
また2次元配列の行列積は以下のように求めることができます。
A = np.array([[ 1,2,3],[4,5,6]])
B = np.array([[ 1,2],[3,4],[5,6]])
np.dot(A,B)
array([[22, 28],
[49, 64]])
この場合、A(2行×3列)の行列とB(3行×2列)の行列の積で2行×2列の新たな行列が出来上がっていることが分かります。
Numpyを使えば、要素数の多い行列計算も高速で行うことができるんです!
乱数作成
続いてNumpyを使って乱数を作成してみましょう!
np.random.rand(3,2)
array([[0.20511798, 0.83910969],
[0.51645229, 0.56680067],
[0.95699065, 0.02719675]])
np.random.randでは0以上1未満の一様乱数を返します。
この時引数に要素数を指定することができます。今回は3,2と指定したので、3行2列の2次元配列が返されました。
np.random.randn(3,2)
array([[ 0.18444559, 0.92656196],
[-2.17690245, 1.26435454],
[ 0.06724962, 0.63178107]])
randnとすることで、標準正規分布に従う乱数が返されます。
np.randomを使えば、他にも二項分布やベータ分布に従う乱数を生成することができます。
統計量算出
最後に統計量の算出について見ていきましょう!
総和や平均など統計量を算出することができます。
A = np.array([1,2,3,4,5])
np.sum(A)
15
配列の総和が返ってきます。
np.mean(A)
3.0
配列の平均が返ってきます。
np.max(A)
5
配列の最大値が返ってきます。
np.std(A)
1.4142135623730951
標準偏差が返ってきます。
デフォルトでは、標本分散を基にした標準偏差になっています。
不偏分散を基にした標準偏差を算出したい場合は以下のように引数を追加します。
np.std(A,ddof=1)
1.5811388300841898
2次元配列の場合も計算可能であり、行レベルで算出するか列レベルで算出するか指定して計算します。
B = np.array([[ 1,2 ],[3,4],[5,6]])
np.mean(B,axis=0)
array([3., 4.])
この場合、列レベルで平均を出します。
B = np.array([[ 1,2 ],[3,4],[5,6]])
np.mean(B,axis=1)
array([ 1.5, 3.5, 5.5])
こうすると行レベルでの算出になります。
以上、Numpyの使い方あれこれでした!
Numpy まとめ
何気なく使っているNumpyはどんなライブラリなのか、どのような場面で使うのかについて見てきました!
Pythonにおけるデータ分析には非常に重要なNumpy!
Numpy含めPythonの勉強は、実際にデータ分析を行う上で非常に重要です。
ただ目的のないNumpy勉強は正直意味がないしモチベーションは続きません。
自分で進められる自信のある人はPyQを自力で進めた後データ分析コンペティションに挑戦してみることをオススメします。
PyQはPython特化のオンライン学習サービスで、ひたすらPythonコーディングを行うのにオススメです。
データサイエンスの理論まわりはあまり深く扱っていません。
そしてある程度Pythonの素地が出来上がった後は、データ分析コンペティションのKaggleやNishikaなどに挑戦してみることをオススメします!
企業から提供されるデータなどを基にお題に沿って精度の高いモデルを構築していきます。
データサイエンスを中心に学習して、データ分析コンペへの挑戦をしたい方は当メディアが運営する「スタアカ(スタビジアカデミー)」を是非受講してみてください!
公式サイト:https://toukei-lab.com/achademy/
【価格】 | ライトプラン:1280円/月 プレミアムプラン:149,800円 |
---|---|
【オススメ度】 | |
【サポート体制】 | |
【受講形式】 | オンライン形式 |
【学習範囲】 | データサイエンスを網羅的に学ぶ 実践的なビジネスフレームワークを学ぶ SQLとPythonを組みあわせて実データを使った様々なワークを行う マーケティングの実行プラン策定 マーケティングとデータ分析の掛け合わせで集客マネタイズ |
24時間以内の質問対応と現役データサイエンティストによる1週間に1回のメンタリングを実施します!
カリキュラム自体は、他のスクールと比較して圧倒的に良い自信があるのでぜひ受講してみてください!
他のスクールのカリキュラムはPythonでの機械学習実装だけに焦点が当たっているものが多く、実務に即した内容になっていないものが多いです。
そんな課題感に対して、実務で使うことの多いSQLや機械学習のビジネス導入プロセスの理解などもあわせて学べるボリューム満点のコースになっています!
ウォルマートのデータを使って商品の予測分析をしたり、実務で使うことの多いGoogleプロダクトのBigQueryを使って投球分析をしたり、データサイエンティストに必要なビジネス・マーケティングの基礎を学んでマーケティングプランを作ってもらったり・Webサイト構築してデータ基盤構築してWebマーケ×データ分析実践してもらったりする盛りだくさんの内容になってます!
・BigQuery上でSQL、Google Colab上でPythonを使い野球の投球分析
・世界最大手小売企業のウォルマートの実データを用いた需要予測
・ビジネス・マーケティングの基礎を学んで実際の企業を題材にしたマーケティングプランの策定
・Webサイト構築してデータ基盤構築してWebマーケ×データ分析実践して稼ぐ
ぜひNumpyをマスターしましょう!
Python勉強法については以下の記事でもまとめていますよ!
イラスト出典:Illustration by Stories by Freepik