タグ

ブックマーク / sinhrks.hatenablog.com (30)

  • Python Dask で 並列 DataFrame 処理 - StatsFragments

    はじめに 先日のエントリで少し記載した Dask について、その使い方を書く。Dask を使うと、NumPy や pandas の API を利用して並列計算/分散処理を行うことができる。また、Dask は Out-Of-Core (データ量が多くメモリに乗らない場合) の処理も考慮した実装になっている。 sinhrks.hatenablog.com 上にも書いたが、Daskは NumPy や pandas を置き換えるものではない。数値計算のためのバックエンドとして NumPy や pandas を利用するため、むしろこれらのパッケージが必須である。 Dask は NumPy や pandas の API を完全にはサポートしていないため、並列 / Out-Of-Core 処理が必要な場面では Dask を、他では NumPy / pandas を使うのがよいと思う。pandasとDas

    Python Dask で 並列 DataFrame 処理 - StatsFragments
  • Python pandas データ選択処理をちょっと詳しく <前編> - StatsFragments

    概要 書いていて長くなったため、まず前編として pandas で データを行 / 列から選択する方法を少し詳しく書く。特に、個人的にはけっこう重要だと思っている loc と iloc について 日語で整理したものがなさそうなので。 サンプルデータの準備 import pandas as pd s = pd.Series([1, 2, 3], index = ['I1', 'I2', 'I3']) df = pd.DataFrame({'C1': [11, 21, 31], 'C2': [12, 22, 32], 'C3': [13, 23, 33]}, index = ['I1', 'I2', 'I3']) s # I1 1 # I2 2 # I3 3 # dtype: int64 df # C1 C2 C3 # I1 11 12 13 # I2 21 22 23 # I3 31 32

    Python pandas データ選択処理をちょっと詳しく <前編> - StatsFragments
    peketamin
    peketamin 2018/08/22
  • Python pandas アクセサ / Grouperで少し高度なグルーピング/集計 - StatsFragments

    語の説明がなさそうなので。 概要 pandas では groupby メソッドを使って、指定したカラムの値でデータをグループ分けできる。ここでは少し凝った方法を説明。 ※ dtアクセサ の追加、またグルーピング関連のバグ修正がいろいろ入っているので、0.15以降が必要。 ※簡単な処理については下の記事でまとめ。 はじめに 例えばこんなデータがあったとして、 import pandas as pd import datetime df = pd.DataFrame({'dt1': [datetime.datetime(2014, 10, 1), datetime.datetime(2014, 10, 2), datetime.datetime(2014, 10, 3), datetime.datetime(2014, 10, 4), datetime.datetime(2014, 10,

    Python pandas アクセサ / Grouperで少し高度なグルーピング/集計 - StatsFragments
    peketamin
    peketamin 2018/06/01
  • Python pandas strアクセサによる文字列処理 - StatsFragments

    概要 今週の 週刊 pandas は文字列処理について。やたらと文字数が多くなったのだが、これはデータを都度表示しているせいであって自分の話がムダに長いわけではない、、、と思いたい。 今回はこちらの記事に書いた内容も使うので、適宜ご参照ください。 サンプルデータ なんか適当な実データないかな?と探していたら 週間少年ジャンプの過去作品の連載作品 / ジャンルなどがまとめられているサイトをみつけた。これを pandas で集計できる形まで整形することをゴールにしたい。 KTR's Comic Room: Weekly Jump Database データの読み込み 上記リンクの "ジャンプ連載データ表" を、ファイル名 "jump_db.html" としてローカルに保存した。 補足 pd.read_html では引数に URL を渡して 直接ネットワークからファイルを読むこともできる。が、今回

    Python pandas strアクセサによる文字列処理 - StatsFragments
    peketamin
    peketamin 2018/03/01
  • Python pandas でのグルーピング/集約/変換処理まとめ - StatsFragments

    これの pandas 版。 準備 サンプルデータは iris で。 補足 (11/26追記) rpy2 を設定している方は rpy2から、そうでない方は こちら から .csv でダウンロードして読み込み (もしくは read_csv のファイルパスとして直接 URL 指定しても読める)。 import pandas as pd import numpy as np # 表示する行数を設定 pd.options.display.max_rows=5 # iris の読み込みはどちらかで # rpy2 経由で R から iris をロード # import pandas.rpy.common as com # iris = com.load_data('iris') # csv から読み込み # http://aima.cs.berkeley.edu/data/iris.csv names

    Python pandas でのグルーピング/集約/変換処理まとめ - StatsFragments
    peketamin
    peketamin 2018/02/14
  • Python pandas パフォーマンス維持のための 3 つの TIPS - StatsFragments

    pandas でそこそこ大きいデータを扱う場合、その処理速度が気になってくる。公式ドキュメントではパフォーマンス向上のために Cython や Numba を使う方法を記載している。 Enhancing Performance — pandas 0.16.2 documentation が、軽く試したいだけなのに わざわざ Cythonや Numba を使うのは手間だし、かといってあまりに遅いのも嫌だ。そんなとき、pandas 来のパフォーマンスをできるだけ維持するためのポイントを整理したい。 pandas に限らず、パフォーマンス改善の際にはボトルネックの箇所によってとるべき対策は異なる。pandas では速度向上/エッジケース処理のために データの型や条件によって内部で処理を細かく分けており、常にこうすれば速くなる! という方法を出すのは難しい。以下はこの前提のうえで、内部実装からみ

    Python pandas パフォーマンス維持のための 3 つの TIPS - StatsFragments
    peketamin
    peketamin 2017/11/06
  • Python でパイプ演算子を使いたい - StatsFragments

    ネタ記事です。/ This is a joke post which makes no practical sense. はじめに Python pandas では主要な操作を以下のようにメソッドチェインの形で書くことができる。 # Python (pandas) df.assign(x=df['y'] + df['z']).groupby('x').sum() pandas v0.16.2 で DataFrame と Series に .pipe というメソッドが追加され、このチェインを外部の関数/メソッドに対して連結できるようになった。利用例は以下のリンクを。 statsmodels を利用する例 seaborn を利用する例 補足 matplotlib でも v1.5.0 で ラベルデータ対応 が追加され、各関数が .pipe から利用できるようになる予定。 このメソッドチェインによ

    Python でパイプ演算子を使いたい - StatsFragments
    peketamin
    peketamin 2017/09/10
  • Python でパイプ演算子を使いたい <2> - StatsFragments

    ネタ記事です。/ This is a joke post which makes no practical sense. 過去にこんなエントリを書いた。 sinhrks.hatenablog.com R では パイプ演算子 %>% を使って連続した処理を記述できる。式に含まれる x, y, z は非標準評価 (NSE) によって data.frame の列として解決される。 # R (magrittr + dplyr) df %>% mutate(x = y + z) %>% group_by(x) %>% summarize_each(funs(sum)) Python (pandas) ではほぼ同じ処理をメソッドチェインを使って書ける。チェインとパイプ演算子でどちらが読みやすいかは好みの問題だと思うものの、式の中に 何度も df が出てくるのはちょっとすっきりしない。 # Python

    Python でパイプ演算子を使いたい <2> - StatsFragments
    peketamin
    peketamin 2016/10/18
  • PyConJP 2016: pandasでの時系列処理についてお話させていただきました - StatsFragments

    21日、22日と PyCon JP に参加させていただきました。ご参加いただいた皆様、スタッフの皆様ありがとうございました。資料はこちらになります。 pandas による時系列データ処理 pandas を使った時系列データの前処理と、statsmodels での時系列モデリングの触りをご紹介しました。 speakerdeck.com 時系列モデルの考え方については全く説明していないので、以下書籍などをご参照ください。 経済・ファイナンスデータの計量時系列分析 (統計ライブラリー) 作者: 沖竜義出版社/メーカー: 朝倉書店発売日: 2010/02/01メディア: 単行購入: 4人 クリック: 101回この商品を含むブログ (6件) を見る 元ネタ 以下のエントリをベースに新しい内容を追加しています。 sinhrks.hatenablog.com 時系列モデルを含む Python パッケ

    PyConJP 2016: pandasでの時系列処理についてお話させていただきました - StatsFragments
    peketamin
    peketamin 2016/09/26
  • Python Jupyter + Cesium.js で 3D 地図が描きたい - StatsFragments

    Cesium.js とは Web GL を利用して 3D 地図を描画する JavaScript ライブラリ。かなり多機能で様々な見せ方ができるようだ。詳しく知りたい方は公式サイトの Demos を見ればいい。 cesiumjs.org これを Jupyter Notebook に埋め込んで使いたい。Cesium.js には Python の wrapper などはないため、直接 JavaScript を書いて使う。従って、利用できる機能に差異はない。このエントリでは Cesium.js の機能の詳細には触れず、Jupyter に関係する内容のみ記載する。 具体的なやり方はこちらと同じ。 sinhrks.hatenablog.com データの準備 先日のエントリで作成した、 アメリカの国立公園 のデータを使う。 sinhrks.hatenablog.com 以降、すべて Jupyter No

    Python Jupyter + Cesium.js で 3D 地図が描きたい - StatsFragments
    peketamin
    peketamin 2015/12/28
  • Python pandas + folium で Leaflet をもっと使いたい - StatsFragments

    先日参加させていただいた Japan.R でこんな話を聞いた。 RPubs - leafletではじめるRによる地図プロット Python でも folium というパッケージを使うと JavaScript を書かなくても Leaflet.js の一部機能が使えるのだがあまり情報がない。上の資料に書いてあるようなことが folium でもできるのか調べたい。 folium については前にこんなエントリを書いた。 sinhrks.hatenablog.com データの準備 import numpy as np np.__version__ # '1.10.2' import pandas as pd pd.__version__ # u'0.17.1' サンプルデータとして Wikipedia にある アメリカの国立公園 のデータを使う。まずは pd.read_html でデータを読みこむ。

    Python pandas + folium で Leaflet をもっと使いたい - StatsFragments
    peketamin
    peketamin 2015/12/27
  • {purrr} でリストデータを操作する <1> - StatsFragments

    R で関数型プログラミングを行うためのパッケージである {purrr}、すこし使い方がわかってきたので整理をしたい。RStudio のブログの記載をみると、とくにデータ処理フローを関数型のように記述することが目的のようだ。 purrr 0.1.0 | RStudio Blog The core of purrr is a set of functions for manipulating vectors (atomic vectors, lists, and data frames). The goal is similar to dplyr: help you tackle the most common 90% of data manipulation challenges. ここでいう"関数型プログラミング言語"とは Haskell のような静的型の言語を想定しており、型チェック、ガ

    {purrr} でリストデータを操作する <1> - StatsFragments
    peketamin
    peketamin 2015/11/27
  • Python pandas プロット機能を使いこなす - StatsFragments

    pandas は可視化のための API を提供しており、折れ線グラフ、棒グラフといった基的なプロットを簡易な API で利用することができる。一般的な使い方は公式ドキュメントに記載がある。 Visualization — pandas 0.17.1 documentation これらの機能は matplotlib に対する 薄い wrapper によって提供されている。ここでは pandas 側で一処理を加えることによって、ドキュメントに記載されているプロットより少し凝った出力を得る方法を書きたい。 補足 サンプルデータに対する見せ方として不適切なものがあるが、プロットの例ということでご容赦ください。 パッケージのインポート import matplotlib.pyplot as plt plt.style.use('ggplot') import matplotlib as mpl m

    Python pandas プロット機能を使いこなす - StatsFragments
    peketamin
    peketamin 2015/11/16
  • Python traits で型強制 + traitsui でカンタン GUI 作成 - StatsFragments

    Python の Canopy ディストリビューションで有名な Enthought.inc が作っている traits, traitsui というモジュールが結構便利なのだが、日語の情報がないのでメモ。 概要 traits は Python のクラスプロパティに特定の型を強制できるモジュール traitsui は traits の定義に従って、wxPython, PyQt, Pyside の GUI を簡単にデザインできるモジュール インストール pip install traits traitsui この記事の例ではPyQt を使うので入ってなければ入れる (pip では入らない)。Windows なら MSIインストーラがあるので楽。他OSならソースから build するか、各パッケージ管理で。 traits Defining Traits: Initialization and V

    Python traits で型強制 + traitsui でカンタン GUI 作成 - StatsFragments
    peketamin
    peketamin 2015/10/05
    Python traits で型強制 + traitsui でカンタン GUI 作成 - StatsFragments
  • Python 次世代の多次元配列パッケージ群 - StatsFragments

    このところ、たびたび NumPy 後継が...とか 並列処理が...という話を聞くので、この秋 注目の多次元配列パッケージをまとめたい。 バックエンド系 NumPy のように数値計算処理を自前で実装しているパッケージ。 DyND Blaze プロジェクトのひとつ。C++ 実装 + Python バインディング。GitHub にいくつか Example があがっているが、複合型やカテゴリカル型、GroupBy 操作がサポートされていて熱い。ラベルデータも NumPy より簡単に実装できそうだ。 speakerdeck.com 並列分散系 自身では直接 数値計算処理を行わず、バックエンド ( 主に NumPy )を利用して並列/分散処理を行うパッケージ。1 物理PC/複数コアでの並列計算を主用途とし、NumPy, pandas では少し苦しいが PySpark などを使うほどじゃない...とい

    Python 次世代の多次元配列パッケージ群 - StatsFragments
    peketamin
    peketamin 2015/09/22
  • NumPy でつくる俺々データ構造 - StatsFragments

    はじめに Python での数値計算の基盤をなす NumPy 、直感的なスライスやブロードキャスト、関数のベクトル適用など大変便利だ。 import numpy as np np.__version__ # '1.9.2' np.array([1, 2, 3]) # array([1, 2, 3]) np.array([1, 2, 3])[:2] # array([1, 2]) np.array([1, 2, 3]) + 1 # array([2, 3, 4]) が、用途によっては NumPy 標準ではその機能を実現できない場合がある。例えば、 配列とメタデータをひとつのクラスで扱いたい 配列への入力や型を制約/検証したい 自作クラスを NumPy の Universal Functions (ufunc) に対応させたい 新しい型 ( dtype ) を作りたい こういったとき、NumP

    NumPy でつくる俺々データ構造 - StatsFragments
    peketamin
    peketamin 2015/09/22
  • Python pandas 図でみる データ連結 / 結合処理 - StatsFragments

    なんかぼやぼやしているうちにひさびさの pandas エントリになってしまった。基的な使い方については網羅したい気持ちはあるので、、、。 今回は データの連結 / 結合まわり。この部分 公式ドキュメント がちょっとわかりにくいので改訂したいなと思っていて、自分の整理もかねて書きたい。 公式の方はもう少し細かい使い方も載っているのだが、特に重要だろうというところだけをまとめる。 連結 / 結合という用語は以下の意味で使っている。まず憶えておいたほうがよい関数、メソッドは以下の 4 つだけ。 連結: データの中身をある方向にそのままつなげる。pd.concat, DataFrame.append 結合: データの中身を何かのキーの値で紐付けてつなげる。pd.merge, DataFrame.join 連結 (concatenate) 柔軟な連結 pd.concat ふたつの DataFram

    Python pandas 図でみる データ連結 / 結合処理 - StatsFragments
  • Python pandas データのイテレーションと関数適用、pipe - StatsFragments

    pandas ではデータを 列 や 表形式のデータ構造として扱うが、これらのデータから順番に値を取得 (イテレーション) して何か操作をしたい / また 何らかの関数を適用したい、ということがよくある。このエントリでは以下の 3 つについて整理したい。 イテレーション 関数適用 pipe (0.16.2 で追加) それぞれ、Series、DataFrame、GroupBy (DataFrame.groupbyしたデータ) で可能な操作が異なるため、順に記載する。 まずは必要なパッケージを import する。 import numpy as np import pandas as pd イテレーション Series Series は以下 2つのイテレーション用メソッドを持つ。各メソッドの挙動は以下のようになる。 __iter__: Series の値 ( values ) のみをイテレーシ

    Python pandas データのイテレーションと関数適用、pipe - StatsFragments
    peketamin
    peketamin 2015/06/19
  • Python pandas のデータを Highcharts/Highstock + Jupyter でプロットしたい - StatsFragments

    R を使っている方はご存知だと思うが、R には {htmlwidgets} というパッケージがあり、R 上のデータを任意の Javascript ライブラリを使ってプロットすることが比較的カンタンにできる。{htmlwidgets} って何?という方には こちらの説明がわかりやすい。 RPubs - htmlwidgetsでJavascriptの可視化をRに 同じことを Python + pandas を使ってやりたい。サンプルとして利用する Javascript ライブラリは 上の資料と同じく Highcharts、Highstock にする。 www.highcharts.com 補足 pandas-highcharts という Python パッケージもあるが、このエントリでは任意の Javascript ライブラリで使えるであろう方法を記載する。 Highcharts でのプロット

    Python pandas のデータを Highcharts/Highstock + Jupyter でプロットしたい - StatsFragments
    peketamin
    peketamin 2015/06/14
  • Python spyre によるデータ分析結果のWebアプリ化 - StatsFragments

    R を使っている方はご存知だと思うが、R には {Shiny} というパッケージがあり、データ分析の結果を インタラクティブな Web アプリとして共有することができる。{Shiny} って何?という方には こちらの説明がわかりやすい。 qiita.com Python でも {Shiny} のようなお手軽可視化フレームワークがあるといいよね、とたびたび言われていたのだが、spyre という なんかそれっぽいパッケージがあったので触ってみたい。 github.com インストール pip で。 pip install dataspyre 使い方 現時点で ドキュメンテーションはない ので、README と examples ディレクトリを見る。サンプルとして株価を取得してプロットするWebアプリを作ってみたい。spyre で Webアプリを作る手順は以下の3つ。 spyre.server.

    Python spyre によるデータ分析結果のWebアプリ化 - StatsFragments
    peketamin
    peketamin 2015/06/13