Software Engineer Blog

エンジニアブログです。技術情報(Go/Java/Docker)や趣味の話も書くかもです。

実践 Python データサイエンス受講 (No.1)

概要

【世界で5万人が受講】実践 Python データサイエンス | Udemy
をぼちぼち受講していっています。
序盤のあたりまで、受講したので内容についてまとめておきます。
データサイエンス周りの基礎知識をつけることがゴールかなと思っています。

内容

はじめに

基本的にはJupyter Notebook上にサンプルコードを書いて実装しています。
data-kaggle/learn at master · midorigreen/data-kaggle

Jupyter Notebook

(記載するまでもないですが)

  • ブラウザ上で、プログラムを実行できるツール
  • プログラムだけでなく、グラフの可視化やMarkdownの記載等を利用して、実行した処理を記録
  • Machine Learningにてデファクトで利用されているツール
  • IPython(Pythonのinteractive shell)をベースに、様々な言語(40程度)に対応
  • ipynb拡張子で保存され、GitHub上で見ることも可能

numpy

Pythonの行列計算用のライブラリで、作成・計算をはじめ様々な機能を持っています。

import

import numpy as np

行列の作成

# array([0, 1, 2, 3, 4])
arr = np.array([0, 1, 2, 3, 4])
arr = np.arange(5)
# ランダム
arr = np.randam.randn(5)

# array([[0, 1, 2, 3, 4])
#         [0, 1, 2, 3, 4]])
arr2 = np.array([0, 1, 2, 3, 4],[0, 1, 2, 3, 4])

# array([[0, 1, 2],
#        [3, 4, 5],
#        [6, 7, 8]])
arr3 = np.arange(9).reshape((3, 3))

行列の操作

# (行, 列)
arr.shape

# コピー
arr_copy = arr.copy()

# 転置
arr3.T

# 行列入れ替え
arr3.swapaxes((0, 1))

# 条件式 (条件, trueのとき, falseのとき)
np.where(a > 0, 0, arr)

行列の計算

# 平方根
np.sqrt(arr3)

# 掛け算
arr1 * arr2

# 内積
np.dot(arr1, arr2)

# 平均
arr.mean()

# 標準偏差
arr.std()

# 分散
arr.var()

# ソート
arr.sort()

# 逆順
arr[::-1]

# 重複
np.unique(arr)

# contains
np.in1d([0, 10, 20], arr)

行列の外部処理

# 保存
np.save('my_arr', arr)

# 読み込み
np.load('my_arr.npy')

# zip保存
np.savez('my_arr2', x=arr, y=arr2)
zarr = np.load('my_arr2')
# 添字アクセス
zarr['x']
zarr['y']

matplotlib

  • Pythonの2Dのプロットライブラリ
  • グラフを描画することができる

Import

import matplotlib.pyplot as plt

pandas

  • データ構造と演算を提供するPythonのライブラリ

import

import pandas as pd

Series

ラベル付きの配列(1次元)

# 生成
se = Series([0, 1, 2, 3])

# ラベル付き
se1 = Series([0, 1, 2, 3], index=['A', 'B', 'C', 'D'])
se1['A']

# 辞書型変換
se1.to_dict()

DataFrame

ラベル付きの行列(2次元)

# 生成
# Clipboardから(Wikipedia等より表形式をコピー)
df = pd.read_clipboard()
df2 = {'City': ['LA', 'SF', 'NYC'], 'Population':[30000, 20000, 8000]}

環境

# Anaconda利用
% python -V
Python 3.5.2 :: Anaconda 4.1.1 (x86_64)

所感

まずは序盤として、Jupyterの利用方法から、numpyの基本までを記載しました。感想としては、行列の扱いが簡単にできて、Pythonが利用される理由の一端に触れた気がしました。pandasについては、もう少しあるので編集する形にしようかと思います。

参考