Window関数の中には、行を集約せず、集計結果を横に残す計算をすることがあります。 sum(col) over(partition by group_col) これをPandasで行うにはtransformを使います。 (あまりよくない方法として、集計をしたものをjoinする方法もあります) transformを…
Pandasでlag,lead,first_value,last_valueなどを再現します。 lag(col,1) over(order by sort_col) ,first_value(col) over(order by sort_col) lag,lead系 shiftを使います。 shiftはwindow関数のorder by句のような変数はないため、先にソートして使う必要…
前回に引き続き、window関数を再現します。 今回は移動平均などです。 esu-ko.hatenablog.com SQLで7行移動平均を書く場合は avg(col) over(order by sort_col rows between 6 preceding and current row) です。 pandasの場合 import pandas as pd df.col.r…
SQLの分析でよく使うウィンドウ関数、その中の累系の再現です。 sum(col) over(order by sort_col rows between unbounded preceding and current row みたいなやつです。 sort_colで並べて、そのカラムまでの累積を上では出しています。 Pandasの場合 df.co…
RFM分析は、過去に書いたデシル分析の拡張です。 金額、行動頻度、最近行動タイミングの3つの属性から、ユーザーをセグメント分けします。 esu-ko.hatenablog.com 分析と言っても、ここから示唆を出すのは難しいですが、、、 たいていの使い方としては、先に…
使い方がややこしい、cutとqcutの話です。 デシル分析をする際に便利なqcutは下記記事でも使いました。 esu-ko.hatenablog.com 上記記事のなかで、グループの中のユーザー数ではなく、数値そのものを等分する場合の話も触れました。 実はPandasにはその時に…
デシル分析は、施策の範囲や打ち分けを決める際にシンプルにできる手法です。 現状では、デジタルでは、施策を全体にうってもコストが変わらなかったり、 初めからidと紐づいたデータが取れることも増えたので、あまり使うことはなかもしれませんが、 それで…
統計処理や機械学習でカテゴリ変数を扱う場合、 そのままでは使えないことが多く、数値変換やフラグ変換が必要です。 pandas.get_dummiesはフラグ変換をかなり簡単にしてくれますが、 引数の渡し方で挙動が変わるので注意が必要です。 カテゴリ変数の扱い方 …
過去にアソシエーション分析を書いたときはOrangeを用いました。 このパッケージ内からアソシエーション分析が消えたため、代替を探してみました。 esu-ko.hatenablog.com apyoriの基本 導入 !pip install apyori 基本的な使い方 from apyori import apriori…
過去にPythonで数式を扱い、微積などを扱う方法を書きました。 esu-ko.hatenablog.com このとき、数式の変数はsymbolsやSymbolで一度定義し、 その変数に直接計算式を追加しているのですが、これは大変。 特に、アプリケーションに組み込んだり、可変にした…
Pythonの辞書{}をファイルなどに永続化する方法は複数あります。 import json d = {'test':1} # jsonファイルとして保存 with open('json.json','w') as f: json.dump(d,f) # json stringとしてテキストファイルに保存 with open('json.txt','w') as f: txt …
SQLでデータを用意する際、cross joinを用いて欠損がないデータセットをつくり、 そこに情報をleft outer joinしていくことがあります。 Pandasでも同様の処理をしたいと思い、ドキュメントをみたのですが、 Pandasのmerge(SQLのjoin)のhowはleft,right,oute…
完全に小ネタです。 リストの中で一番多くでてくる項目を出したいとき、 Counterを使ったりPandasで数を出して、並べたり、 自分でアルゴリズムを書いたりすると思います。 そんなときに、とりあえず、一番多く出現したものが何かを知りたい時、 デフォルト…
シミュレーションなどをしたいときに、 適当にデータを生成したり、 既にあるデータを一旦へらすためにサンプリングしたい場合があります。 特に、自分で現実を表現したobjectをつくり、 乱数でデータを与えたい場合に、numpyやscipyをわざわざ使わず、 rand…
最近人からデータをもらったとき、.tar.gzできました。 こうした、gzip系の圧縮ファイルをpythonで扱う場合、 標準のgzipモジュールかtarfileモジュールが使えます。 gzの場合 gzipモジュール 単純なgzipの解凍の場合はgzipモジュールでいけます。 対象のgzi…
分析でPandasを用いる場合、 量の多い行列方向の処理をしたいときに進捗を可視化したいことがあります。 Pythonのforループでプログレスバーを出すのにはtqdmを用いますが、 esu-ko.hatenablog.com pandasでも同様にtqdmを用いることができます。 pandasのメ…
Python自体でcsvファイルを読み込むなら、 csvモジュールを使うのが基本です。 参考: esu-ko.hatenablog.com ただし、分析などの際は、ファイルを読み込んで最終的にデータフレームにすることがほとんどです。 そういった場合、pandas.read_csv()を使うと手…
Djangoのauto_nowなのにアップデートされないことがある PythonのフルスタックなWebフレームワークといえば、Django。 ただ、機能多すぎるのでなかなか覚えられませんね・・・。 Pythonのwebフレームワークの中では数少ない強力なORMを持ってるので、 そこを…
GWが始まりました。 みなさんはもちろん、GWにどんなPythonをやるかもう決まっていると思います。 ちなみに私はDeepLearningのお勉強の予定です。 Chainer可愛いよ、Chainer Python(twython)でPCからツイッターに30秒動画(mp4)を投稿してみる。 定期的に…
Pythonを使う上で、実際に開発するのに使用している環境と、 調査するための環境は切り分けています。 特に自分の場合、ブログのための調査などもあり、 これは開発の合間に必要になってするリサーチとは結構違うと思います。 その辺の環境に関して今回は書…
今週もPython記事です。
WebフレームワークとしてのDjango DjangoはWebフレームワークであるので、 Webアプリケーションを開発するにあたって必要だが複雑な実装を 隠ぺいしてくれます。 そのためWebアプリケーションの開発の際は、 Djangoの規則に基づいて実装することで、 ド定番…
ProjectとApplication Djangoでアプリケーションを作成する場合、 projectとappliationという単位が存在します。 django-admin.py startproject プロジェクト名 で作成されるのがプロジェクトであり、もっとも大きな一つのまとまりになります。 このプロジェ…
(近況) ここの所、忙しくてあまりPythonに触れられていません。 安西先生、Python(とtwitter)が、やりたいです。。。 そんなこんなで今週のPythonです。
PythonでBASE64を扱うには、まさしくその通りの名前のモジュールbase64を用います。 画像を扱う時に備えて勉強しておく必要があります。 そのまえに、BASE64とは BASE64はバイナリデータを64種類の文字に置き換えて表現する方法です。 64の内訳は 大文字英数…
そろそろ画像まわりも覚えていきたいので、 まずPillowをためす。 機械学習なんかをするにはOpenCVやnumpyで画像を扱える必要があるのだろうけど、 まずは簡単な画像編集から。
はいはーい、今週のPythonです。 始めての方向けに説明すると、 毎週twitterで(手動で)キュレーションした記事を紹介してます。 で、その反応状態を見て、コメントをするシリーズ記事です。 今回は若干趣向を変えて、いきなり記事を全部紹介します。 Pytho…
年度も変わり、今年はプログラミングに挑戦しようかな、という人も多いんじゃないでしょうか。 プログラミングといえばPythonなので(全俺調べ) Pythonでwebアプリ入門記事を書いていくことにしました。 (完成まで長くなりますが、ぜひお付き合い&応援いた…
画面なんて作るから構築に時間がかかるんだ!(極論) ※なお、良心がタイトルを「まだテンプレートで消耗しているの?」にさせなかった模様。 Pythonの有名ドコロwebフレームワークは、 どれもデフォルトでテンプレート機能が用意されています。 (対してORMはDj…
PythonだとCUIな処理のイメージが強いですが、 ビジュアライズでも強力なモジュールがそろっています。 例えば地理情報の処理では、 foliumというモジュールが便利です。 github.com