書きなぐりnumpy、scipy、pandas、matplotlib
Numpy
配列作成はnp.array([1,2,3,4])
データ型.dtype 次元数.ndim 要素数.size
Numpyで乱数を発生させる。
random.seed(0)
#正規分布(平均0,分散1)の乱数を10個発生
norm_random_sample_data = random.randn(10)
random.choice(norm_random_sample_data,10))
# 10個を抽出(重複あり,復元抽出)
random.choice(norm_random_sample_data,10,replace=False)
# 10個を抽出(重複なし、非復元抽出)
zero_data = np.zeros*1
結果 -0.9999999852953547ほぼ-1
Pandas
データのハンドリング、操作が可能となる。表計算やデータベース。
from pandas import Series,DataFrame
モジュールの説明
Series
sample_pandas_data = pd.Series([0,1,2,3,4,5,6,7,8,9])
print(sample_pandas_data)
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
dtype: int64
こんな感じでインデックス(左)と入力した数(右)を表示する。.valuesでアクセスできる。
pd.Series([0,1,2,3,4,5,6,7,8,9],index=['a','b','c','d','e','f','g','h','i','j'])
こういう感じでインデックスを指定したりもできる。
DataFrame
attri_data1 = {'ID':['100','101','102','103','104']
,'city':['Tokyo','Osaka','Kyoto','Hokkaidao','Tokyo']
,'birth_year':[1990,1989,1992,1997,1982]
,'name':['Hiroshi','Akiko','Yuki','Satoru','Steeve']}
attri_data_frame1 = DataFrame(attri_data1)
print(attri_data_frame1)
#以下のようにテーブルみたいなのができる。
ID birth_year city name
0 100 1990 Tokyo Hiroshi
1 101 1989 Osaka Akiko
2 102 1992 Kyoto Yuki
3 103 1997 Hokkaidao Satoru
4 104 1982 Tokyo Steeve
.Tでテーブルを転置できる。
.dropで削除できる。
attri_data_frame1.drop(['birth_year'],axis=1)
axis=0で行の削除
axis=1で列方向の削除
pd.merge(attri_data_frame1,attri_data_frame2)
でデータのマージ(内部結合)キーを明示しない場合は自動で見つけて結合してくれる。
attri_data_frame2.groupby("sex")["math"].mean()
Matplotlibの基礎
データビジュアライゼーション、散布図、ヒストグラム
データを可視化するpythonライブラリー
Matplotlib#メイン
Seaborn#図をきれいにすることが出来る
import matplotlib.pyplot as plt
import matplotlib as mpl
import seaborn as sns
plt.plot(x, y, "o")#散布図
#以下でも散布図が描ける
plt.scatter(x, y)
plt.hist()でヒストグラムを作る。
os.path.split() ディレクトリ名とファイル名に分離
*1:2,3), dtype='i')
print("・0でint型 \n", zero_data)
・0でint型
[[0 0 0]
[0 0 0]]
N = 10**6
[random.random() for _ in range(N)]#100000回乱数を発生させたリストを作る。このリストを使ってnp.array([1,2,3,4])とかでnumpy配列が作れる。
%timeitは何回か同じ計算をしてベスト3の平均計算時間を返す。
Numpyで3×3の行列を作る。
sample_multi_array_data1 = np.arange(9).reshape(3,3)
print(sample_multi_array_data1)
[[0 1 2] #インデックス 0
[3 4 5] #インデックス 1
[6 7 8]]#インデックス 2
sample_multi_array_data1[0,:]はインデックス0の行で列はすべて取り出す。横
sample_multi_array_data1[:,0]はインデックス0の列で行はすべて取り出す。縦
行列の積はnp.dot(A,B)
要素の積はA*B
Scipy
Scipyは科学技術計算するためのモジュールで多様な数学処理が可能。
線形代数の計算とかできる。逆行列、固有値、固有ベクトル、最適化
scipy.linalg線形代数用のモジュール
linalg 行列式.det 逆行列.inv 固有値と固有ベクトルの取得 .eig
最適化計算を使って方程式の解を求めてみる。
f(x)=x2+2x+1 = 0 の解
newton関数を使う
from scipy.optimize import newton
# 計算実行
print(newton(sample_function,0