データサイエンスのためのpython講座_使えるテクニック

#python
・setはリストの重複を覗く際に使う。

・座標を商(行)と余り(列)で表現可能。

・shift+tabで関数のreference確認。

・_に最後に実行した戻り値が入っている。

#numpy
・np.uint8(unsigned,integet,8bit)
　0~255
　画像データ等で利用。

・np.float32
　機械学習に使うデータを保存するときに使う。

・np.float64
　モデルの学習時に利用。

・np.expand_dims
　ndarrayの次元を増やす。

・np.squeeze
　ndarrayの次元を減らす。

・flattern
　arrayを１次元にする。

・np.arrange(start,stop,step)
　rangeと一緒。

・np.linspace(start,stop,num)
　startからstopの数字をnumの数に区切ったリストを作成。

・np.logspace(start,stop,num,base=10)
　startからstopの数字をnumの数に区切った数でbaseの累乗を計算。

・np.zeros(),np.ones(),np.eyes()
　要素が全て０、要素が全て１、対角要素が全て１。

・np.random.rand()
　0~1の数字をランダムで指定。

・np.random.seed()
　乱数を生成。

・np.random.randn()
　標準正規分布(平均０、分散１)から値を生成。

・np.random.normal(平均、標準偏差)
　正規分布(平均、標準偏差)から値を生成。

・np.random.randint(low,high)
　low以上、high以下でランダムに値を生成。
　lowだけの場合はlow未満。

・np.random.choice(list)
  指定したリストからランダムな値を取得。

・argmax(),argmin()
　最大値、最小値のindexを取得。

・中央値と平均の違い
　中央値・・・並び替えが必要なため計算に時間がかかる。外れ値に強い。

・time.time()
　時間を計測。

・68-95-99.7ルール
　平均から標準偏差±1,2,3にデータが含まれる確率(正規分布)。

・np.clip(array,min,max)
　min以下はminに、max以上はmaxに変換。

・np.where(条件、true,false)
　条件に対してTrueであればtrueに指定の値、Falseであればfalseに指定の値に変換。

・.all().any()
　条件に対して全てTrueか、1つでもTrueか判定。

・np.unique(array,return_count=True)
　uniqueな要素とそれぞれのcountを返す。

・np.bincount()
　0,1,2,3・・・のcountを返す。

・np.concatenate()
 　arrayを連結。

・np.stack()
　新しいaxisを生成して連結。
　axis=-1を利用することが多い。

・np.transpose()、.T
　転置。

・np.save(path,array),np.load(path)
　arrayの保存、ロード。

・np.save(path,dictionary).np.load(path,allow_pickle=True)[()]
　辞書の保存、ロード。

#pandas
・pd.set_options("display.max_columns(rows)",num)
　表示する行、列の数を指定。

・.describe()
　数字の統計量を表示。

・.columns()
　カラムのリストを表示。

・inplace=True
　元のデータフレームを更新。

・reset_index(drop=True)
　再度indexを割り振る。
　元のindexを上書き。

・set_index(カラム名)
　指定したカラムをindexにする。

・dropna(subset=[カラム名])
　指定したカラムがnanの行を削除。

・df[np.isnan(df["columns"])],df[df["columns"].isna()]
　指定したカラムがnanの行を取得。

・df.groupby("columns").統計量
　指定したカラムでgroup byした統計量を表示。

・pd.concat(df1,df2,axis)
　指定したaxis(軸)の方向にデータフレームを結合。

・df1.merge(df2,how,on,right_on,left_on,suffixies)
　指定した結合方法,キーにてデータフレームを結合。

・unique()
　ユニークな値のみを取得。

・nunique()
　ユニークな値の数を取得。

・value_counts()
　それぞれの値にいくつのレコードがあるかを取得。

・sort_values(by)
　指定したカラムにてデータをソート。

・apply(関数)
　関数を各行に適用。

・iterrows()
　indexとseriesを返すイテレーションを生成。

#matplotlib
・%matplotlib inline
　jupyter上で描画可。

・plt.plot(x,y)
　x軸,y軸にグラフを描画。

・plt.x(y)label()
　ラベルを表示。

・plt.title()
　タイトルを表示。

・plt.legend()
　判例を表示。

・plt.x(y)ticks
　指定したticksを表示。

・plt.subplot(行、列、インデックス)
　行、列、インデックスを指定して複数グラフを描画。

・plt.figure()
　fig=plt.figure()
　ax1=fig.add_subplot(行、列、インデックス)

・plt.subplots(行、列)
　fig,axes=plt.subplots(行、列)
　axes[0].plot(x,y)

・plt.scatter(),plt.hist(),plt.bar(),plt.boxplot()
　散布図、ヒストグラム、棒グラフ、箱ひげ図を描画。　
　plt["columns"].value_count().plot(kind="bar")

#seaborn
・sns.distplot(array,norm_hist,kde)
　ヒストグラムを表示。
　デフォルトで確率密度関数をKDEにて表示。

・カーネル密度推定(KDE)
　確率密度関数を推定する一つの手法。

・sns.jointplot()
　2変数の散布図を表示。
　各ヒストグラムも表示。
　kind="reg"で回帰直線を表示。

・sns.pairplot()
　全ての数値項目の散布図を表示。
　hueで色分け。

・sns.barplot(x=カテゴリカル変数、y=数値項目、data=df)
　xのyの平均値を棒グラフで表示。
　95%信頼区間を表示。

・sns.countplot(x)
 指定した変数の件数を表示。

・sns.boxplot(x,y)
　指定した変数の箱ひげ図を表示。

・sns.violinplot(x,y)
　指定した変数の分布密度を表示。

・sns.swarmplot(x,y)
 指定した変数の実際の分布を表示。

・corr()
　相関係数を表示。

・sns.heatmap(df.corr(),annot=True,cmap="coolwarm")
 相関表のヒートマップを表示。

・sns.set(context,style,palette)
　seabornのスタイルを変更。

#OpenCV
・cv２.imread()
　画像ファイルをndarrayで読み込み。

・plt.imshow()
　ndarrayを画像として表示。
　BGRで表示。

・cv２.cvtColor(im,cv2.COLOR_BGR2RGB)
 BGRからRGBに変換。

・cv2.imwraight()
　ndarrayを画像として保存。

・Binarization（2値化）
　①閾値を指定して2値化
　　cv2.threshold(ndarray,閾値,255,CV2.THRESH_BINARY)　　
　②大津の2値化
　　cv2.threshold(ndarray,閾値,255,CV2.THRESH_BINARY+CV2.THRESH_OTSH)
　　閾値を自動で設定。
　　線形判別分析法(LDA)を画像に適用。
　③Adaptive Thresholding
　　cv2.adaptiveThreshold(ndarray,255,cv2.ADAPTIE_THRESH_MEAN_C,CV2.THRESH_BINARY,サイズ、定数）
　　指定した範囲内の平均輝度値の平均から定数を引いたものを閾値として使用。

#glob
　ファイルパスのリストを取得。

#os&pathlib
・Path　
　パスオブジェクトを作成。
　イテレーターとして利用。

・os.path.split()
　headとtailに分解。

・os.path.join()
　フォルダパスとファイル名を連結。

・os.path.exists()
　ファイルまたはディレクトリの存在を確認。

・os.makedirs()
　フォルダを作成。

#tqdm
・tqdm(イテレーター、total=len(df))
　プログレスバーを表示。

#nibabel
・nib.load()
　ニフティーのimageを取得。

・get_fdata()
　画像のndarrayを取得。

#multiprocessing
・map(func,iter)
　iterにfuncを適用したiterを返す。

・cpu_count()
　使用できるCPUの物理コア数を確認。

・Pool.map()、Pool.imap()
　並列処理にてmap関数を適用。
　map()はリストを、imap()はiterを返す。

・Pool.imap_unordered()
　処理の終わり次第返す。

・zip()
　複数のイテラブルオブジェクトの要素をタプルで返す。

・p.close()、p.join()
　並列処理を終了。

・%load_ext autoreload,%autoreload 2
　他ファイルの変更を反映。
　 
・rollaxis(array,axis,start)
　指定したaxisをstartで指定した位置に入れ込む。