Python プログラミング ワークショップ - 超々入門編 Python実行環境編

# 本題の前に

---
## 位置付け・前提

本記事は、**社内ワークショップ** のために用意したものです。そのため、次の前提で進めることをご理解ください。

---
## 本ワークショップの目的
参加者が**必要に併せて自学できる入口に立つ** ことを目的とします。

* 実用的なプログラミングを **ハンズオン形式** で実行して、理解を深めます。
* 本ワークショップだけで、あらゆるプログラムがすいすい組めるようになるわけではありません。
* 後日にプログラミングで何かを作ろうとしたときに、自分で調べて製作できるようになることを目指します。
* なんかこういうもんだ、という感じで軽く頭に残れば大丈夫と考えましょう。

---
## ワークショップの進め方
ワークショップは、基本的にハンズオンを中心に進めます。（一部解説は入れます）

* ご自分の業務用途のパソコンを利用してください。
* 基本的には**「写経」**を原則とします。
    * 写経 ＝ 自分でキー入力して写すこと ≠ コピペ
        * 自分が書いたコードをコピペしてから改変するのはOK。
    * 書き方を頭の中に入力する/刷り込むつもりで、時間がかかっても全て手でキー入力してください。
    * IMEの入力補完はOK。
    * 入力間違いによるトライ・アンド・エラーも、学習の中での重要な要素とご理解ください。
* 紹介する内容は、**基本的には分からないもの**です。一度すべて動作させてから「あー、あんな感じか」とニュアンスを掴んでください。
* 深く悩んではいけません。

---
## 注意

本ワークショップは **60〜120分** を想定しています。そのため、本格的な学習には時間が圧倒的に足りないので、**体系的な学習は行いません**。

本格的に０から思い通りのプログラムが組めるようになるには、自学習もしくは何らかの講座を受講する必要があります。

---
## ターゲット
本ワークショップでは、主に下記の参加者を対象とします。

* プログラミングを本業としない人
* プログラミングが苦手、あるいは実用的なプログラムを組んだことが無い人
* プログラミングの基礎的なことを知らない初心者

中上級者はまったく相手にしていないため、敢えて言及しない事項が沢山あることについてはご了承ください。

---
## プログラミング環境の準備

[こちら](https://qiita.com/syamane/items/76942bdd7258b13a9f3b)をごらんください。

---
## 本日のゴール

前回までに覚えたことを復習がてら、様々な環境で実行できるようになります。

* 繰り返し処理
* 関数の実行方法
* 四則演算
* ダウンロードする

えとせとら

---
## 1. Pythonインタプリタ

---
### Pythonインタプリタ

次のコマンドを実行します。

```
python
```

参考：[2. Python インタプリタを使う — Python 3.8.2 ドキュメント](https://docs.python.org/ja/3/tutorial/interpreter.html)

---
### 練習

* 10回 Hello を表示する
* 10行の Hello をファイル hello.txt に書き出す
* Googleのトップページ(https://www.google.co.jp) のHTMLを表示する

---
## 2. Jupyter Notebook

---
### Jupyter Notebook インストール

次のコマンドを実行して、Jupyter Notebookをインストールします。（管理者権限が必要）

```
pip install jupyter
```

※Anaconda を利用している人は既にインストールされているはずです。

---
### Jupyter Notebook 起動

```
ipython notebook
```

または

```
jupyter notebook
```

※Anacondaユーザーはスタートメニューからも起動できます。

---
### Jupyter Notebook 練習

* 移動
* コード作成と変更
* コードの実行
* Markdown の書き方
* Jupyter Notebook の長所と短所

※以降は Jupyter Notebook で実行します。

---
## 3. CSVファイルを自在に扱う

---
### CSVファイルを扱う準備／インストール

次のコマンドを実行して、モジュールをインストールします。（管理者権限が必要）

```
pip install pandas
```

サンプルとなるCSVファイルはこちらからダウンロードします。

[国勢調査 時系列データ CSV形式による主要時系列データ | ファイル | 統計データを探す | 政府統計の総合窓口](https://www.e-stat.go.jp/stat-search/files?page=1&layout=datalist&toukei=00200521&tstat=000001011777&cycle=0&tclass1=000001094741)

### CSVファイルをインポートして表示する

```
import pandas

csv = pandas.read_csv('sample.csv')
print(csv)
```
---
### CSVファイルを扱う練習

1. 上から10行だけ表示してください
2. 下から10行だけ表示してください
3. 都道府県名と人口（総数）の列だけを表示してください。

#### 参考情報
* [pandas documentation](https://pandas.pydata.org/docs/)
* [データ分析で頻出のPandas基本操作 - Qiita](https://qiita.com/ysdyt/items/9ccca82fc5b504e7913a)
* [pandas - Qiita](https://qiita.com/tags/pandas)
* [pandasに関する情報 | note.nkmk.me](https://note.nkmk.me/pandas/)

---
### CSVファイルを扱う練習の解答

次の内容をファイル名「csv_import.ipynb」で保存して、Jupyter Notebookで実行してください。

```csv_import.ipynb
{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# CSV加工その1"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## データのインポート"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas\n",
    "\n",
    "csv = pandas.read_csv('sample.csv')\n",
    "print(csv)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# データの表示"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "print(csv.head(10))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "print(csv.tail(10))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "print(csv['都道府県名'], csv['人口（総数）'])"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
```


---
# 終わりに

今回はPythonをいろんな環境で実行できるように、いくつも詰め込んだワークショップにしてみました。

プログラミング/実行環境は重要な要素ですからね。ぜひ今後の学習の土台にして欲しいと思います。

次回は、今回紹介した pandas を活用して、様々なデータ加工をしてみます。
そろそろ業務に本気で活用できるようになるところにさしかかりますね！

なお、説明を端折っている部分が沢山ありますが、初心者向けということで玄人は我慢してください。

今後も学習したい方はリクエストをいただければと思います。

---
## 公式
* [Python チュートリアル](https://docs.python.org/ja/3/tutorial/index.html)
* [Python 言語リファレンス — Python 3.7.4 ドキュメント](https://docs.python.org/ja/3/reference/index.html#reference-index)
* [Python 標準ライブラリ — Python 3.7.4 ドキュメント](https://docs.python.org/ja/3/library/)
* [Python 3.7.4 ドキュメント](https://docs.python.org/ja/3/index.html)
* [Pythonモジュール索引](https://docs.python.org/ja/3/py-modindex.html)

---

## Python リファレンスサイト
* [Python入門 ～Pythonのインストール方法やPythonを使ったプログラミングの方法について解説します～ | PythonWeb](https://www.javadrive.jp/python/)
    * やりたいこと別の逆引きなので参照しやすい。
* [Pythonに関する情報 | note.nkmk.me](https://note.nkmk.me/python/)
    * やりたいこと別の逆引きなので参照しやすい。
* [Python入門 - とほほのWWW入門](http://tohoho-web.com/python/index.html)
    * 読みやすいけど、少し古いので注意。Python2ベース。
* [Python - Qiita](https://qiita.com/tags/python)
    * ここで検索すれば大抵の前例は出てくる。

---

## Python関連書籍

* [退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング](https://www.amazon.co.jp/%E9%80%80%E5%B1%88%E3%81%AA%E3%81%93%E3%81%A8%E3%81%AFPython%E3%81%AB%E3%82%84%E3%82%89%E3%81%9B%E3%82%88%E3%81%86-%E2%80%95%E3%83%8E%E3%83%B3%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E3%83%BC%E3%81%AB%E3%82%82%E3%81%A7%E3%81%8D%E3%82%8B%E8%87%AA%E5%8B%95%E5%8C%96%E5%87%A6%E7%90%86%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-Al-Sweigart/dp/487311778X/)
    * 筆者が Python を学ぶキッカケになった書籍。ただし、タイトルは釣り。
* [いちばんやさしい Python 入門教室](https://www.amazon.co.jp/%E3%81%84%E3%81%A1%E3%81%B0%E3%82%93%E3%82%84%E3%81%95%E3%81%97%E3%81%84-Python-%E5%85%A5%E9%96%80%E6%95%99%E5%AE%A4-%E5%A4%A7%E6%BE%A4-%E6%96%87%E5%AD%9D-ebook/dp/B06Y3ZVS9Y/)
    * 初学者向けに学びやすいと評判。
* [スラスラ読める Pythonふりがなプログラミング](https://www.amazon.co.jp/%E3%82%B9%E3%83%A9%E3%82%B9%E3%83%A9%E8%AA%AD%E3%82%81%E3%82%8B-Python%E3%81%B5%E3%82%8A%E3%81%8C%E3%81%AA%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-%E6%A0%AA%E5%BC%8F%E4%BC%9A%E7%A4%BE%E3%83%93%E3%83%BC%E3%83%97%E3%83%A9%E3%82%A6%E3%83%89-ebook/dp/B07DR9WNKJ/ref=pd_sbs_351_2/358-4804238-5993600?_encoding=UTF8&pd_rd_i=B07DR9WNKJ&pd_rd_r=40975f9e-29b8-4fe4-b211-14a52bb1f23b&pd_rd_w=0tyUJ&pd_rd_wg=OFv7a&pf_rd_p=ad2ea29d-ea11-483c-9db2-6b5875bb9b73&pf_rd_r=5SPQTNWJSKTJE8VKH4MP&psc=1&refRID=5SPQTNWJSKTJE8VKH4MP)
    * 同上。