【勉強会資料】エンジニア勉強会＠居酒屋 Vol.1


# エンジニア勉強会 ＠ 居酒屋

## vol.1　2018.03.16(FRI)

https://study-eng-izakaya.connpass.com/event/80998/

# この会の趣旨

## ゆるい感じの勉強会がやりたい

居酒屋の二階という独特な空間で、ゆるい感じの勉強会をやれたら・・・という思いで開始しました。

テキスト本（ゼロからはじめるデータサイエンス）を指定していますが、ガチガチにこの本に即してやる、というわけでもありません。

流れを何となく参考にする程度に・・・進行する予定です。

# 自己紹介

## 主催者の自己紹介

某ＳＩ系企業に勤務するＳＥ。<br>
学生時代は機械工学と情報工学のハイブリッドなところを専攻。<br>

# 実行環境について

## Anaconda

Anacondaをインストールした環境を想定しています。

Anacondaをインストールすると、Pythonそのもの＋標準的なライブラリのパッケージがインストールされます。

https://www.anaconda.com/download/


## Jupyter Notebook

Anacondaをインストールすると、"Jupyter Notebook"というものも一緒にインストールされます。

ブログ風に思考の過程を記述しながら、データ分析の処理も実行できるというツールです。

最近のデータサイエンスの世界ではデファクトスタンダードとなっているようです。

（※ このスライドも Jupyter Notebook で作成・表示しています！）

# Python速習コース

## Pythonってどんな言語？

C,C++,Java・・・といった言語に慣れ親しんでいると、Pythonは最初は違和感を感じる言語だと思います。
<br>たとえば・・・

・動的型付けであることに違和感
<br>
・ブロックがインデント
<br>
・配列（リスト）に不思議な記述（※リスト内方表現とか）

・・・でも「数行の記述ですごいことができる！」というがわかってくると、だんだん好きになってきます

## 基本的な文法（変数宣言）


```python
# 動的型付けなので、いきなり宣言ＯＫ
x = 128
y = 256
x * y
```




    32768



## 基本的な文法（ブロック）


```python
# ブロックがインデントで表現される
a = 2
b = 4
i = 1

while i < 5 :
    if a == i :
        print(i)
        print("equal to a\n")
    elif b == i :
        print(i)
        print("equal to b\n")
    i += 1
```

    2
    equal to a
    
    4
    equal to b
    
    

## 基本的な文法（配列）


```python
# 配列（リスト）
list = [1, 2, 3, 4, 5]

for i in list:
    print(i)

```

    1
    2
    3
    4
    5
    

## 基本的な文法（関数）


```python
# 引数を二倍した値と二乗した値を返す関数

def double_and_square(x):
    double_value = 2 * x
    square_value = x * x
    return double_value, square_value
# 以上が関数定義

# 以下、定義した関数を使ってみる
double_and_square(3)
```




    (6, 9)



## ライブラリの利用（基本）

"import モジュール名" とか "from モジュール名 import クラス名" みたいな書き方でモジュールや関数をインポートできます。

長い名前のモジュールや関数を省略した名前をつけることもできます。


```python
# numpy というモジュールをインポート
import numpy

# pandas というモジュールをインポートし、pd という略称をつける
import pandas as pd

# pandas モジュールの中の DataFrame というクラスをインポートする
from pandas import DataFrame
```

## ライブラリの利用（Numpy）

Numpyは数値計算のライブラリです。


```python
import numpy as np

# -3.14 から 0.1 刻みで 3.14 まで増加するnumpy配列の生成
x = np.arange(-3.14, 3.14, 0.1)
print("x = {}".format(x))

# x の各要素に対する sin（正弦）の計算
y = np.sin(x)
print("y = {}".format(y))
```

    x = [-3.14 -3.04 -2.94 -2.84 -2.74 -2.64 -2.54 -2.44 -2.34 -2.24 -2.14 -2.04
     -1.94 -1.84 -1.74 -1.64 -1.54 -1.44 -1.34 -1.24 -1.14 -1.04 -0.94 -0.84
     -0.74 -0.64 -0.54 -0.44 -0.34 -0.24 -0.14 -0.04  0.06  0.16  0.26  0.36
      0.46  0.56  0.66  0.76  0.86  0.96  1.06  1.16  1.26  1.36  1.46  1.56
      1.66  1.76  1.86  1.96  2.06  2.16  2.26  2.36  2.46  2.56  2.66  2.76
      2.86  2.96  3.06]
    y = [-0.00159265 -0.10141799 -0.20022998 -0.29704135 -0.39088478 -0.48082261
     -0.56595623 -0.645435   -0.71846479 -0.78431593 -0.84233043 -0.89192865
     -0.93261501 -0.963983   -0.98571918 -0.99760638 -0.99952583 -0.99145835
     -0.97348454 -0.945784   -0.9086335  -0.86240423 -0.8075581  -0.74464312
     -0.67428791 -0.59719544 -0.51413599 -0.42593947 -0.33348709 -0.23770263
     -0.13954311 -0.03998933  0.05996401  0.15931821  0.25708055  0.35227423
      0.44394811  0.5311862   0.61311685  0.68892145  0.75784256  0.81919157
      0.87235548  0.91680311  0.95209034  0.9778646   0.99386836  0.99994172
      0.99602399  0.98215432  0.95847128  0.92521152  0.88270735  0.83138346
      0.77175266  0.70441077  0.63003063  0.54935544  0.46319126  0.37239904
      0.27788593  0.18059627  0.08150215]
    

## ライブラリの利用（Matplotlib）

matplotlib は、主にグラフの描画に使用します。


```python
import matplotlib.pyplot as plt
%matplotlib inline
# 前出のsin（正弦）の計算結果をグラフにプロットしてみる
plt.plot(x, y)
```




    [<matplotlib.lines.Line2D at 0x182fd8ab320>]

![output_23_1.png](https://qiita-image-store.s3.amazonaws.com/0/117506/01b2923f-687e-3c3e-5dc1-2cc76084ec39.png)



# 今回のまとめ

## Python実行環境のインストールとPython言語の基本的なところについてお話しました。