東大生向けデータ解析講座 第1回
2017/12/27
3idea Inc. CEO 西岡 賢一郎
スケジュール
● 12/27(水):データ解析のための環境構築(Python3, jupyter notebook等)
○ Python3の簡単な紹介
○ Python3の基本的な構文
○ Jupyter notebookを使って実際にPython3を試してみる
● 12/29(金):numpy, pandasの操作
● 1/4(木):sklearnを使った機械学習による予測
● 1/5(金):応用(選択テーマ、若しく持ち込みテーマ)
対象者
● プログラミング初心者で研究に使いたい方
● 短期間でPython環境構築から解析の基礎技術を身につけたい方
● 今後自分で機械学習をやっていきたい方
● データサイエンスに興味がある方
● 今後自分の分野でもAIの応用が進んでいく中、自分でも機械学習の基礎を
修めておきたい方
● 2004年、東京大学理科2類入学後、教養学部広域科学科に進学し情報系研
究室に入りデータマイニング・機械学習を研究、総合文化研究科に進学し
修士・博士を取得
● 株式会社トライディアを博士課程在籍中の2012年に設立
● 大学時代は体操部に所属
自己紹介
学生時代のプログラミング
● 教養学部に進学したが、実際はプログラミング必須の学科だった。大学4
年生で情報系の研究室に所属したことをきっかけに本格的にプログラミン
グを始める
● はじめはC++, R, Rubyを勉強。Ruby on Railsというウェブフレームワー
クでアプリケーション開発を始める。他にもiOS, androidの開発など色々
な物に手を出したが。研究などをきっかけにPythonに取り組み、解析系の
仕事を現在も行っている
● 文系学生にプログラミングを教える活動や、三鷹寮にてプログラミングコ
ミュニティーを作り解析者やウェブアプリ開発者の仲間を増やす活動をし
ていた
Python 2とPython 3について
● 書籍やネットで調べ物をしているとPython2の情報が多いが、Python2は
2020年までのサポートとなっているので、これから解析を始める人は
Python3をおすすめ。
● Python2のサポートは2020年まで
● Python2の書籍などをPython3で再現するときに、初心者がはまりそうな
部分
○ print文
○ 整数値の割り算:
○ Unicodeの扱い
○ map, filter関数の返り値
print文
Python3ではprintが関数となっており、括弧が必須となっている
Python2 Python3
>>> print 1
File "<stdin>", line 1
print 1
^
SyntaxError: Missing parentheses in call to
'print'
>>> print 1, 2
File "<stdin>", line 1
print 1, 2
^
SyntaxError: Missing parentheses in call to
'print'
>>> print(1)
1
>>> print(1, 2)
1 2
>>> print 1
1
>>> print 1, 2
1 2
>>> print(1)
1
>>> print(1, 2)
(1, 2)
整数値での割り算
Python2では商が返ってきていたが、Python3では小数が返ってくる
Python2 Python3
>>> 1/2
0
>>> 3/2
1
>>> 1.0/2
0.5
>>> 1/2
0.5
>>> 3/2
1.5
>>> 1.0/2
0.5
Unicodeの扱い
Python3ではテキストがUnicodeとなったため扱いやすくなった
Python2 Python3
>>> '本郷'
'¥xe6¥x9c¥xac¥xe9¥x83¥xb7'
>>> u'本郷'
u'¥u672c¥u90f7'
>>> '本郷'[0]
'¥xe6'
>>> '本郷'
'本郷'
>>> u'本郷'
'本郷'
>>> '本郷'.encode('utf-8')
b'¥xe6¥x9c¥xac¥xe9¥x83¥xb7'
>>> '本郷'[0]
'本'
map, filter関数の返り値
Python2では商が返ってきていたが、Python3では小数が返ってくる
Python2 Python3
>>> map(lambda x: x*2, [1,2,3])
[2, 4, 6]
>>> filter(lambda x: x%2 == 0, [1,2,3])
[2]
>>> map(lambda x: x*2, [1,2,3])
<map object at 0x7f57df3ae470>
>>> list(map(lambda x: x*2, [1,2,3]))
[2, 4, 6]
>>> filter(lambda x: x%2 == 0, [1,2,3])
<filter object at 0x7f57df3ae470>
>>> list(filter(lambda x: x%2 == 0, [1,2,3]))
[2]
ここでは説明を省略するが、lambdaは無名関数と呼
ばれるもの。lambdaに関しては演習のときに説明
Pythonの環境構築
● 手っ取り早く環境構築したい人
Anaconda(https://www.anaconda.com/download/#windows)のインストー
ルがおすすめ。解析に必要なものがまとめて入るが、他の開発環境への影
響を与える場合がある。研究などで簡単に解析したい人はこちらで十分。
● 自分で本格的に今後もPythonを勉強していきたい人
Pyenvをインストールし、一つ一つパッケージを入れていく。
習うより慣れる: Jupyter Notebookを使ってみる
● consoleでjupyter notebookを起動する人
jupyter notebookとコマンドをうつ
● Anacondaを使っている人
Anaconda Navigatorを起動したのち, Jupyter Notebookをメニューから選
んで起動
Jupyter Notebookの使い方
● ノートブックを作成したいフォルダ階層で、「New」ボタン ⇒
「Python3」を選択し、ノートブックを作成
● Command Mode(Esc)とEdit Mode(Enter or セル内をクリック)がある
● Edit Modeでセルと呼ばれるスペースに Python のコードを入力し実行
○ Ctrl + Enter: セル内のプログラムを実行
○ Shift + Enter: プログラムを実行して下にセルを追加
● Command Modeでhを入力すると、各種ショートカットが表示
● 上部のKernelから「Interrupt」「Restart」「Restart & Run All」等も利用
できる
Python 基本
● 最低限知っておくべきデータ型
○ int: 整数 (1 ,2, 3など)
○ float: 小数点 (1.0, 2.1, 3.3333など)
○ str: 文字列 (‘a’, ‘b’, “本郷”, など)
○ その他複素数などを定義する型なども存在
● リスト・タプル・辞書
○ リスト: 配列と呼ばれるもの。複数のデータをまとめる ([1,2,3], [10, 20]など)
○ タプル: リストと似ていてるが、中身の変更ができない ((1,2,3), (10, 20)など)
○ 辞書: キーと値のペアからなる ({ ‘a’: 1, ‘b’, 10}, { 1: 10, ‘x’: 100}など)
● 四則演算: いわゆる計算を行うもの (+ - * / など)
● 比較演算子: 条件を満たすかどうかをTrue, Falseで返す (==, !=, <, >, <=,
>=)
● ブール演算子 (and, or, not)
Python 基本
● 変数の定義 (a = 1, x = ‘aaa’)
● インデント: ブロックを定義 (Cなどにおける{}に対応するもの)
● if文: 条件を定義
● for文: 繰り返しの計算
● 関数: 特定の演算を定義 (def, lambda)

東大生向けデータ解析講座 第1回 2017/12/27