はじめに
鈴木たかのりです。
前回に引き続きPythonエンジニア養成読本という書籍の読書会イベントについてレポートします。
第3回の読書会は7月23日(木)にアライドアーキテクツ株式会社の会議室で開催されました。
当日はだいたい以下のタイムテーブルで進めました。
- 19:00-19:15 参加者の自己紹介
- 19:15-21:00 「第4章 PyData入門」
- 21:00-22:00 ビアバッシュ
(ビールとピザでの参加者懇親会)
今回も過去2回と同様に書籍の読みあわせはせず、
![写真1 Pythonエンジニア養成読本読書会03 写真1 Pythonエンジニア養成読本読書会03](/assets/images/news/report/01/python-training-book-reading-club/0003/thumb/TH800_001.jpg)
自己紹介
いつものように参加者全員で自己紹介を行いました。全部で21名の方が参加してくださいました。
自己紹介の中では3回全て参加されている方から
現在までの3回をフル参加している方も数名いて、
第4章 PyData入門
自己紹介のあとは、
![写真2 池内孝啓(@iktakahiro)氏 写真2 池内孝啓(@iktakahiro)氏](/assets/images/news/report/01/python-training-book-reading-club/0003/thumb/TH800_002.jpg)
自己紹介
ALBERTという会社で働いており、
また、
昨年開催されたPythonのカンファレンスPyCon JP 2014のチュートリアルで、
最後に、
4-1 IPythonの使い方
この節ではIPythonの基本的な使い方について解説しています。
IPythonはPythonの対話モードをより強力にしたものです。IPythonでは以下の機能を備えています。
- 補完:Tabを入力してモジュール名やオブジェクト名を補完できます
- Magic Functions:
%pwd
と入力して現在のディレクトリ名を取得したり、%env
で環境変数を取得できます - OSのコマンドライン環境との統合:
!
のあとにコマンドを入力するとOS上で実行してその結果を表示します - オブジェクトの確認:オブジェクト名の後ろに
?
をつけるとオブジェクトの型、長さ等の情報を表示します - Notebook:後述するIPython Notebookの機能を提供します
書籍を校正しているときにIPythonのバージョン3.
$ pip install ipython[notebook]==2.4.0
IPythonのNotebook以外の機能を利用した例は以下の様な感じです。
In [1]: import r # ←ここで Tab を入力 random readline resource rfc822 rmagic runpy re repr rexec rlcompleter robotparser In [2]: %pwd Out[2]: u'/home/pydata/pydata' In [3]: !ls -l total 8 drwxr-xr-x 25 pydata pydata 850 1月 1 10:00 bin/ drwxr-xr-x 3 pydata pydata 102 1月 1 10:00 include/ drwxr-xr-x 3 pydata pydata 102 1月 1 10:00 lib/ -rw-r--r-- 1 pydata pydata 60 1月 1 10:00 pip-selfcheck In [4]: data = [1, 2, 3] In [5]: data? Type: list String form: [1, 2, 3] Length: 3 Docstring: list() -> new empty list list(iterable) -> new list initialized from iterable's items
ここで
- IPython Notebookで使用している
- IDE経由でIPythonを使用している
4-2 PyData用パッケージの基本
この節ではPyDataというカテゴリで語られる、
著者の池内さんの会社ではデータ解析にはR言語を使っている人が多いそうです。データの加工、
R言語を使用している理由としては、
そこでなぜPythonなのかというと、
また、
書籍の中では最近流行っている深層学習
読書会では以下のPyData関連パッケージについて紹介しました。
NumPy
Pythonでは大量のデータをfor文で処理すると時間がかかります。しかし、
NumPyの行列データはPyCharm
余談ですが画像処理のOpenCVにはNumPyが必要です。これは、
SciPy
マーケティング領域のデータ分析では、
SciPyは距離計算以外にも非常に沢山の機能を提供しています。
SymPy
SymPyはPythonで記号計算を行うためのパッケージです。ここは趣味で紹介したそうです。実例はとくに思いつかないので、
もし中学生のお子さんがいたら、
Pandas
Pandasはデータ解析を行うためのパッケージです。
CSV、
R言語をすでに使っている人は、
質疑応答
質疑応答では以下の様な議論がありました。
- Q:PandasのDataFrameをSelialize
(オブジェクトをファイルなどに書き出し可能な形式に変換すること) してサーバークライアント間 (どちらもPython) で通信している。パフォーマンスが出るのはなにか? - A:両方Pythonだったらpickleでいいのでは? DataFrameにはto_
msgpack() メソッドがあるので、パフォーマンスがよいかも知れない
- A:両方Pythonだったらpickleでいいのでは? DataFrameにはto_
- Q:PandasをVersion 0.
16にしたらwarningが出るようになった - A:警告表示を抑制するオプションを使うでとりあえずは大丈夫だと思う
- Q:以前Python 2とPandasで書いたスクリプトをPython 3で使いたい。気をつけるところはあるか?
- A:Pandasとしては問題ない。日本語周りは気をつけた方がいい。
- Q:Pythonでfor文を使ってはいけないのか。mapとかはなかなか難しい。
余談としてデータ分析の高速化についてのPyData.
![写真3 参加者との質疑応答の様子 写真3 参加者との質疑応答の様子](/assets/images/news/report/01/python-training-book-reading-club/0003/thumb/TH800_003.jpg)
4-3 はじめてのIPython Notebook
IPython NotebookはWebブラウザから対話的にPythonプログラミングなどを行う環境です。IPythonの最新バージョンは3.
最近ではIPython Notebookを使用してプレゼンを行う人もおり、
上記のNotebookを使用して、merge()
メソッドでSQLのような感じで2つのデータを結合できます。
また、pipe()
メソッドが追加になりました。データフレームに対して.pipe(f)
で処理を行うフィルターのようなもの関数を指定できます。またpipe()
は複数重ねることも可能なため、
IPython Notebookでは棒グラフなどのグラフ描画ができますが、
他の人が作成したNotebookファイルが閲覧できるnbviewerというサイトがあります。このサイトはグラフ描画などの参考になります。
IPython Notebookを使用するには普通にpip install ipython[notebook]
でもよいのですが、
RodeoというWebブラウザ上で動作するPythonのIDEがあります。これはIPython Notebookと似ていますが、
まとめとして、
4-4 [実践編]オープンデータの利用と可視化
この節ではオープンデータを利用してIPython Notebookで可視化する例を紹介しています。ここで裏話として書籍の中で利用するオープンデータを探すのが大変だったという話がありました。データ取得が面倒だったり、
ここで全体を通して以下のような質疑応答がありました。
- Q:横浜のグラフを、
地図データで可視化しようと思ったが挫折した。地図データの可視化はbasemapがお勧めか? - A:Pythonではないが、
Tableau (BIツール) で地図上にマッピングとかをしているが、 日本の地図はそこまで細かくない。日本だと県ごと白地図しかない。今だとJAXAの衛星データ (全球高精度デジタル3D地図 (ALOS World 3D) )とかにマッピングすると面白そう。
- A:Pythonではないが、
- Q:IPython Notebookをサーバーに入れて、
みんなが使えるようにできないか? - A:自分が以前やったのは、
複数のサーバーをポートを分けて実行した。
- A:自分が以前やったのは、
- Q:Notebook上でデモするときに、
パラメーターをユーザーに入力させることは可能か? - A:IPython Notebookでシークバーを表示して値を変更するといった使い方が可能。
- Q:WindowsでAnacondaを使っている。IPython Notebookの終了方法がわからない。
- A:基本的にはコマンドを
Ctrl-C
で終了させる。
- A:基本的にはコマンドを
- Q:R言語やJavaScriptなど、
言語間での連携はできないか? - A:連携する方法はないので、
CSVなどのファイル渡しがよい。
- A:連携する方法はないので、
余談ですが、
ビアバッシュ(懇親会)
読書会の終了後は毎回恒例の懇親会
![写真4 ビアバッシュの様子 写真4 ビアバッシュの様子](/assets/images/news/report/01/python-training-book-reading-club/0003/thumb/TH800_004.jpg)
ライトニングトーク一つ目は前回に続いて阿久津
![写真5 阿久津(@akucchan_world)さんの発表 写真5 阿久津(@akucchan_world)さんの発表](/assets/images/news/report/01/python-training-book-reading-club/0003/thumb/TH800_005.jpg)
著者の一人である嶋田健志
![写真6 嶋田健志(@TakesxiSximada)さんの発表 写真6 嶋田健志(@TakesxiSximada)さんの発表](/assets/images/news/report/01/python-training-book-reading-club/0003/thumb/TH800_006.jpg)
同じく著者の一人の関根裕紀
ちなみに関根さんが担当した章は、
![写真7 関根裕紀(@checkpoint)さんの発表 写真7 関根裕紀(@checkpoint)さんの発表](/assets/images/news/report/01/python-training-book-reading-club/0003/thumb/TH800_007.jpg)
最後に私からも宣伝LTとしてPyCon JPのプロポーザルとPython入門について話すイベントについて告知させてもらいました。
まとめ
3回目の読書会もビアバッシュでのゆるめのライトニングトークが盛り上がったのでよかったです。ぜひ他の参加者のみなさんも発表の練習だと思ってなにかしゃべってもらえればと思います。
次回読書会は8月27日
では、