暫く積んでた本の着手
Kaggle やり始めて撃沈して、ちまちま勉強していたけど、そもそも基礎がなってない気がしてそれっぽい物を探した痕跡。
最近までずっと Salesforce で Trail 祭りしてたからなぁ(汗
東京大学のデータサイエンティスト育成講座 ~Pythonで手を動かして学ぶデ―タ分析~
- 作者: 塚本邦尊,山田典一,大澤文孝,中山浩太郎,松尾豊[協力]
- 出版社/メーカー: マイナビ出版
- 発売日: 2019/03/14
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
利用する系のライブラリ
# データ解析、機械学習系 import numpy as np import numpy.random as random import scipy as sp import pandas as pd from pandas import Series, DataFrame # 可視化系 import matplotlib.pyplot as plt import matplotlib as mpl import seaborn as sns %matplotlib inline %precision 3
'%.3f'
マジックコマンド
jupiter notebook の機能群
%run
外部コマンドの実行%cp
ファイルのコピー%time
時間の計測%precision
numpy 拡張。表示する場合の有効桁数を指定する。%matplotlib
Matplotlib 拡張。グラフなどの表示法を設定できる。inline など。%quickref
コマンドの一覧表示など
numpy 近辺
# use array. example_array = np.array([1, 4, 8, 16, 6, 8, 1, 5]) # tab key on after dot(.) to code complete example_array.dtype
dtype('int64')
# scalr multiple (standard calc type are always scalared effective) example_array * 2
array([ 2, 8, 16, 32, 12, 16, 2, 10])
# sort is a side-effected function
example_array.sort()
example_array
array([ 1, 1, 4, 5, 6, 8, 8, 16])
# array function as method. print(f'Default: {example_array}') print(f'Max: {example_array.max()}') print(f'Min: {example_array.min()}') print(f'Sum: {example_array.sum()}') print(f'Cum: {example_array.cumsum()}') print(f'Ratio: {example_array.cumsum() / example_array.sum()}')
Default: [ 1 1 4 5 6 8 8 16]
Max: 16
Min: 1
Sum: 49
Cum: [ 1 2 6 11 17 25 33 49]
Ratio: [0.02 0.041 0.122 0.224 0.347 0.51 0.673 1. ]
# random variables random.seed(0) rand_data = random.randn(10) rand_data
array([ 1.764, 0.4 , 0.979, 2.241, 1.868, -0.977, 0.95 , -0.151,
-0.103, 0.411])
# random data choice random.choice(example_array, 5)
array([ 8, 16, 16, 8, 1])
# with no duplicate. random.choice(example_array, 5, replace=False)
array([4, 5, 6, 8, 1])
行列近辺の扱い
# create array as_array = np.arange(9) print(as_array) # to matrix as_mtx = as_array.reshape(3, 3) print(as_mtx)
[0 1 2 3 4 5 6 7 8]
[[0 1 2]
[3 4 5]
[6 7 8]]
array2 = np.arange(9, 18).reshape(3, 3) print(array2)
[[ 9 10 11]
[12 13 14]
[15 16 17]]
np.dot(as_mtx, array2)
array([[ 42, 45, 48],
[150, 162, 174],
[258, 279, 300]])
as_mtx * array2
array([[ 0, 10, 22],
[ 36, 52, 70],
[ 90, 112, 136]])
演習問題
# 1. 1-50 の自然数の和を計算 print((np.arange(50) + 1).sum()) # 2. 乱数を 10 個作って、最小、最大、合計を計算 random.seed(0) rand_arr = random.randn(10) print(f'Min : {rand_arr.min()}') print(f'Max : {rand_arr.max()}') print(f'Sum : {rand_arr.sum()}') # 3. 要素全てが 3 の 5x5 行列作成、その 2 乗を計算 all_three = np.ones((5, 5), dtype=np.int32) * 3 print(all_three) print(all_three ** 2)
1275
Min : -0.977277879876411
Max : 2.240893199201458
Sum : 7.380231707288347
[[3 3 3 3 3]
[3 3 3 3 3]
[3 3 3 3 3]
[3 3 3 3 3]
[3 3 3 3 3]]
[[9 9 9 9 9]
[9 9 9 9 9]
[9 9 9 9 9]
[9 9 9 9 9]
[9 9 9 9 9]]