事業企画1年目のpython学習6.5日目 ライブラリ紹介あり。

# 本記事について
とある事業会社で事業企画をやっています。
元々は、新規営業1年→エンプラ営業3年やっていました。
事業企画への異動に伴って、ルーチンワークの自動化やスクレイピングに興味を持ちpython学習をスタートしました。
目的達成までは記事を執筆予定です。どうぞよろしくお願いいたします。

# 開発環境
jupyterlab

# 使っている本
すっきりわかるpython入門
https://sukkiri.jp/books/sukkiri_python

# 勉強計画
週5日間ミニマム1h勉強する。 (現在6日継続中)
最初の1weekは1冊終わらせることをgoalに。
start@ 2022/2/21

# 学習時間
2.0h

# 学び
今日はモジュールを学んでいきたいと思います。
本の学習としては、ほぼここでおしまいです。
6.5日目なのは2022/02/26にやりたかった分を今日やってるからです。

## モジュール

pythonでは、様々なライブラリが用意されています。
そのライブラリを使うことで、めっちゃ楽に開発を勧められます。

### 組み込み関数

|分類|組み込み関数名|機能|
|---|---|---|
|入出力|print関数|引数を標準出力に出力する|
|^|input関数|標準入力から1行読み込んだ結果を返す|
|データ型|type関数|引数のデータ型を返す|
|^|int関数|引数を整数に変換した結果を返す|
|^|float関数|引数を少数に変換した結果を返す|
|^|str関数|引数を文字列に変換した結果を返す|
|コレクション|list数|引数でリストを作成して返す|
|^|dict関数|引数でディクショナリ作成して返す|
|^|tuple関数|引数でタプルを作成して返す|
|^|len関数|引数の長さ(要素数)を返す|
|^|sum関数|引数の合計値を返す|
|^|max関数|引数の最大値を返す|
|^|min関数|引数の最小値を返す|
|計算|abs関数|引数の絶対値を返す|
|^|round関数|引数を四捨五入した値を返す|
|ファイル|open関数|引数で指定したファイルを返す|


#### お試しでやってみるopen

```py
text = input('何を記憶しますか?  <<')
file = open('dairy.txt', 'a')　#ファイルを開く　#aは追記モード
file.write(text + '\n') #ファイルに書き込む
file.close()　#ファイルを閉じる
#何を記憶しますか?  << kamon is lucky boy

```
dairyというtxtファイルができています。

<ファイルを開く>
open(ファイル名,モード)
<ファイルに書き込む>
ファイルオブジェクト.write(書き込む内容)

with文で開いたファイルを確実に消すことができる。

```py
text = input('what do r u doing today? >>')
with open('diary.txt', 'a' as file:　#ファイルオブジェクトを代入する変数
　　　　　　　　　file.write(text + '\n')
```

### モジュールの利用
モジュールとは、変数や関数をまとめたものを提供するということ。
ライブラリは複数のモジュールが合わさったものと考えましょう。
標準ライブラリとは、pythonが用意してくれたもの。外部ライブラリとは、別の組織や個人が用意したモジュールのまとまり。

#### 標準ライブラリ

|モジュール|用途|
|---|---|
|mathモジュール|数学計算に関する処理|
|randomモジュール|乱数に関する処理|
|datetimeモジュール|日付と時間に関する処理|
|emailモジュール|電子メールに関する処理|
|csvモジュール|CSVファイルに関する処理|
|jsonモジュール|JSONファイルに関する処理|
|osモジュール|OS操作に関する処理|


mathモジュールを利用してみましょう。
```py
import math #mathモジュールを取り込むことを宣言
print('円周率は{}です'.format(math.pi))　#mathモジュールの変数piを参照
print('小数点以下を切り捨てれば{}です'.format(math.floor(math.pi)))　#mathモジュールのfloor関数を呼び出す
print('小数点以下を切り上げれば{}です'.format(math.ceil(math.pi)))#mathモジュールのceil関数を呼び出す
#円周率は3.141592653589793です　
#小数点以下を切り捨てれば3です
#小数点以下を切り上げれば4です


```

<モジュールを取り込む>
import モジュール

<モジュール内の変数を参照>
モジュール名.変数名

<モジュール内の関数を呼び出す>
モジュルー名.関数名(引数,・・・）

<別名をつけたモジュールの利用>
import モジュール名　as 別名　(例えば、import math as m)

<特定の変数や関数だけを取り込む>
from モジュール名　import 変数名または関数

```py
from math import pi
from math import floor
print('円周率は{}'.format(pi))
print('小数点以下を切り捨てれば、{}です'.format(floor(pi)))
#円周率は3.141592653589793
#小数点以下を切り捨てれば、3です

```
<ワイルドカードインポート>　※非推奨
from モジュール名　import*


### パッケージの利用

<パッケージ内のモジュールの取り込み/変数参照/関数呼び出し>
・importパッケージ名.モジュール名
※asで別名をつけることも可能
パッケージ名.モジュール名.変数名
パッケージ名.モジュール名.関数名(引数,・・・）

・from　パッケージ名 import モジュール名
モジュール名.変数名
モジュール名.関数名(引数,・・・)

### 外部ライブラリの利用

代表的な外部ライブラリ
注意！：目的と実現したいプログラムを明確にしてから、目的の外部ライブラリを学びましょう。

|モジュール名|主な用途|
|---|---|
|matplotlib|データの可視化|
|pandas|データ解析|
|Numpy|ベクトル・行列計算|
|Scipy|科学技術計算|
|SymPy|代数計算|
|scikit-learn|機械学習|
|TensorFlow|深層学習|
|Pygame|グラフィックス・音声|
|dateutil|日付・時間|
|simplejson|jsonファイル|
|pyYAML|YAMLファイル|
|requests|Webアクセス|


```py
%matplotlib inline 
import matplotlib.pyplot as plt #慣習的にpltと表現する。
weight = [68.4, 68.0 , 69.5, 68.4, 68.6, 70.2, 71.4,70.8,68.5,68.6,68.3,68.4]
plt.plot(weight)
#[<matplotlib.lines.Line2D at 0x7f953a1c5fd0>]

```

# 感想　
一通り学習してまいりました。
次は、一旦振り返りをしようと思いますが、あれ？どうやって実践に進もう。と悩んでいます。
実践に進むためにも目標と定めていたスクレイピング学習orルーチンワークの自動化学習のどちらかに照準を定めていきます。
新たな学習には痛みが伴いますが、私の特徴的には"使える"がポイントです。
早く使える先を見つけたいと思います。