bookmarkRedshiftがユーザー定義関数UDFに対応 しかもPython

本日はPyCon mini Sapporoの開催の日です。Pythonの日といっても過言のない(??)本日、Amazon Redshiftに、User-Defined Functions 追加のアナウンスが行われました。 Amazon Web Services ブログ: 【AWS発表】Amazon RedshiftにUDF(ユーザ定義関数)が追加されました Creating User-Defined Functions - Amazon Redshift User-Defined Functions とは いわゆるひとつのユーザー定義関数です。RedshiftのUser-Defined Functions(以下UDF)はSQLではなく Python で書くことが出来ます。RedshiftにUDFを追加して欲しいというユーザーの要望は以前から多く存在していました。今回のアップデートはこの期待に応える素晴らしいものです。 RedshiftのUDFの機能を、利用例とともに煽り気味で解説していきます。 1. Pythonで書ける Pythonで書くことができます。そう、Redshiftならね。 これ以上の説明が必要でしょうか? 2. NumPy, Pandas, SciPyが最初から使える デフォルトで利用できるサードパッケージの例をしめします NumPy SciPy Pandas python-dateutil python-dateutilが入っているあたりはさすがです。 3. Pythonパッケージの追加が行える 上述のパッケージ以外にも、利用したい3rd-Partyパッケージをユーザーが追加できます。 機能の解説 具体的な機能の解説を行います。 UDF 「Scala UDF」は、Redshiftの組み込み関数 ROUND() のように作用します。 Scala UDFの例 引数を2つもつ、簡単なScala UDF「f_my_sum()」を作成します。 CREATE FUNCTION f_my_func(x int, y int) RETURNS float STABLE AS $$ x * y $$ LANGUAGE plpythonu; テーブル、及びデータを準備します。

today 2015-09-12 Sat
bookmarkMosquitto と paho-mqtt をつかってPythonで MQTTをさわる

こんにちは。本日は Python mini hack-a-thon 夏山合宿 2015 に来ています。 2015年10月9日にPyCon JP 2015にて、「Python x Edison x AWSではじめる IoT」と題したチュートリアルを行います。 Python x Edison x AWSではじめる IoT | PyCon JP 2015 in TOKYO PyCon JP 2015 チュートリアル 申込みページ - connpass その関係もあり IoT ネタです。 Mosquiito の導入 MQTT の broker として Mosquitto を利用します。 Mosquitto Ubuntu へのインストール手順を示します。apt-get で導入できるバージョンは MQTT の v3.1.1 に対応していない古いバージョンため、ソースからインストールします。 # 依存ライブラリの導入 apt-get install gcc make g++ uuid-dev libssl-dev libc-ares-dev # ソースからインストール cd /usr/local/src sudo wget http://mosquitto.

today 2015-09-05 Sat
bookmark今年は IoT x AWS - PyCon JP 2015 チュートリアル開催のお知らせ

2015年10月に開催される PyCon JP 2015 in Tokyo のチュートリアルの講師を担当させていただくことになりました。昨年に続いて2回目のチュートリアル講師です。がんばります。 Python x Edison x AWSではじめる IoT | PyCon JP 2015 in TOKYO 今年は、インテル社のIoTデバイスEdison と、みんなだいすきAmazon Web Serviceを活用して、話題のIoTの領域に取り組む内容でお届けします。 あくまで予定ですが、登場する技術要素は以下の通りです。 Python(主にクライアント側実装) Amazon API Gateway AWS Lambda ほかAWSサービス Edison Amazon API Gatewayは非常にホットなサービスですので、チュートリアルのために色々学ぶことも僕自身楽しみにしています。 なお、両社のご協力によりEdisonを当日貸し出し可能となっています。IoTには興味があるけどデバイスを調達するのはちょっと、とこれまで躊躇っていた方にも、お気軽にご参加いただけます。 参加申し込み方法や更なる詳細については今後公式サイトでアナウンスされると思われます。当blogや僕のTwitterアカウントでも随時お知らせして参ります。

today 2015-08-03 Mon
bookmarkPandas 0.16.2 で追加された pipe() の使い方

2015年7月23日に開催された 「Pythonエンジニア養成読本」読書会 03 - connpass で触れた話題ですが、Pandas 0.16.2 に、pipe()というメソッドが追加されています。 What’s New — pandas 0.16.2 documentation pandas.DataFrame.pipe — pandas 0.16.2 documentation 以下のデータ master.csv を扱います。 id name price i100 ham 230 i200 egg 150 i300 bacon 170 簡単な使い方を解説します。 import pandas as pd master = pd.csv_read('master.csv') def f(df): return df master.pipe(f) pipe()の第1引数に関数名を指定します。この結果、master.csv と同じデータが返ります。関数f() はなにもせず、受け取ったDataFrameを返すだけの関数でした。 関数f() をもう少し複雑にします。 def f(df): df['tax_in'] = df['price'] * 1.

today 2015-07-24 Fri
bookmarkカンバンツールは targetprocess がいいかも

アジャイルソフトウェア開発向けのプロジェクト/タスク管理ツールはたくさんありますが、ちょっと気の利いたカンバン(KANBAN)が欲しければ targetprocess がいいかも知れません。 targetprocess.com targetprocess とは スクラムとカンバンに対応しているらしいプロジェクト管理ツールです。 targetprocessでできること カンバンを使うことを念頭において、利用できる機能を列挙します。 ToDo, InProgress, Done の状態設定など基本的なカンバンの機能 Drag & Drop 操作 「状態」の増減や変更(Waitingという状態を増やすなど) Work in Progressの制限(警告表示になるのみで登録自体はできる) プロジェクトの分離、複数プロジェクトの一括表示など Swim Lane の設定(担当者別、User Story別、など) Descriptionの記述、コメントの記述 Markdown対応 User Storyの作成、Taskの作成。User StoryとTaskの親子関係の設定 開始日、終了予定日の設定 ポイント設定、時間設定 Slackへの通知 Viewのカスタマイズ 多機能で、慣れるまでは色々動かして調べる必要がありました。簡易的なカンバンツールよりは難しく、JIRA AgileやYouTrackよりは簡単、くらいの難易度です。 あとこれだけができれば最高なのに!というカンバンツールに色々巡り会ってきましたが、いまのところ、targetprocessは全てを満たしてくれています。 targetprocessをスクラム開発に適応するには 謳われている通りスクラム開発用のモードがあります。UserStoryやEpic、Point、Velocityなどの各種プラクティスを実践するための機能が利用できるのですが、設定するべきことが多く少し難解な印象を受けます。特にスプリント期間の設定周りで不便に思うことがあり、いくつかの問題は解決策を問い合わせ中です。いずれも習熟度の問題かも知れません。情報が得られたら本エントリに追記します。 カンバンツールをお探しの方は targetprocess を試用してみてください。

today 2015-07-16 Thu
bookmarkMac に Python 3.4 + OpenCV 3.0 の環境をつくる

OpenCVは3.0からPython3系に対応しています。brew install opencv3 でもインストール自体はできるものの、はまりどころが多かったので cmake する手順でお届けします。 環境は OS X Yosemite 10.10.4 / Python 3.4.3 で、pyvenvの利用を前提とします。GPUの利用などは考慮せず、最低限動かすための環境です。 全体の流れ cmake がない場合、インストール pyvenv を実行 NumPyのpipインストール opencv-3.0 をダウンロードして展開 configureオプションの設定 make なお、Macがクリーンな状態ではないので他に依存ライブラリがある可能性があります。 手順詳細 cmakeがない場合、brewでインストールします。 brew install cmake OpenCV用のpyvenvを作成し、NumPyをインストールしておきます。 pyvenv opencv source opencv/bin/activate pip install numpy OpenCVをダウンロードして展開します。展開場所はどこでも良いです。 mkdir build cd build cmake .. ccmake . ここで設定画面が表示されるので、Python周りの設定を確認・修正を行います。設定箇所は下記の通りです。 PYTHON3_EXECUTABLE = /Users/your_user/virtualenv/opencv/bin/python3.4 PYTHON3_INCLUDE_DIR = /Library/Frameworks/Python.framework/Versions/3.4/include/python3.4m PYTHON3_LIBRARY = /Library/Frameworks/Python.framework/Versions/3.4/lib/libpython3.4m.dylib PYTHON3_NUMPY_INCLUDE_DIRS = /Users/your_user/virtualenv/opencv/python3.4/site-packages/numpy/core/include PYTHON3_PACKAGES_PATH = /Users/your_user/virtualenv/opencv/lib/python3.4/site-packages なお、各種PATHは環境によって異なりますので適時読み替えてください。 設定し終えたら、忘れずに「c」を入力します。「c」を入力せずに「q」でquitしてしまうと設定内容が反映されません。

today 2015-07-11 Sat
bookmarkPyCharm 4.5 がリリース プロファイラの統合が便利そう

PyCharm の Version 4.5 がリリースされました。 Python IDE & Django IDE for Web developers : JetBrains PyCharm プロファイラの統合、matplotlibのサポート、デバッグ関連のエンハンスがメインのようです。HTMLやJavaScript関連の機能はWebStorm 10のアップデート内容が取り込まれている模様です。 プロファイラの統合 今回からプロファイラが統合されました。 PyData.Tokyoのイベントレポート「どこまで速くできる? 達人に学ぶPython超高速データ分析:CodeZine」にも登場した単純な計算を行うコードをプロファイラにかけてみます。 import numpy as np def f_numpy(): x = np.arange(1, 100000001) return x.sum() def f_for(): s = 0 for i in range(1, 100000001): s += i return s if __name__ == '__main__': f_for() f_numpy() 実行結果は数値の他、グラフで視認できます。 プロファイラの実行の結果、f_for()関数の処理が占める割外が9割近いことが一目瞭然です。

today 2015-05-16 Sat
bookmarkData Science のための Python IDE Rodeo

Rodeoという新しいプロダクトがリリースされました。 ŷhat | Rodeo: A data science IDE for Python Rodeoは、The IPython Notebook — IPython や RStudio のようなデータ分析系のIDEです。Python製で、pipインストールできます。 pip install rodeo Rodeoインストール直後の pip list を確認します。 docopt (0.6.2) Flask (0.10.1) gnureadline (6.3.3) ipython (3.1.0) itsdangerous (0.24) jedi (0.8.1-final0) Jinja2 (2.7.3) MarkupSafe (0.23) pip (1.5.6) pyzmq (14.6.0) rodeo (0.2.1) setuptools (2.1) Werkzeug (0.10.4) Flaskに依存していることが分かります。 起動コマンドは下記の通りです。 rodeo . コマンドを実行するとブラウザが起動します。 画面左上がエディタ、左下はターミナルです。どちらからもPythonのコードを実行できます。 UIにData FramesやPlot などの表記が有り、定番パッケージとの連動が想像できますが、個別でインストールしないといけないようです。 pip install pandas pip install matplotlib DataFrameは自動で認識され右上に一覧が表示されます。プロットは show() したものが右下に表示されるようです。

today 2015-04-24 Fri