データ分析のデータ処理系
前処理をしている時に、集計などの処理はpandasで事足りますが、標準化などはsklearnを使いたいことがあります。 ▼例えばRobustScalerなど esu-ko.hatenablog.com このときに、sklearnのpreprocessingはDataFrameではなくnumpy.arrayで返してくるため、その…
ユーザー入力のデータを扱っていると、 ゆらぎが存在し、そこからも傾向を取り出したいことがあります。 そうした、文書と言うほどではないカテゴリデータの場合、形態素解析では十分に情報がとりださせないことが多いです。 そこで、最初や最後の文字、文字…
↓この続きです。 esu-ko.hatenablog.com 今回はアソシエーションルールに関してです。 アソシエーションルールはグラフ作成などではなく、 結果データを各指標やfrom/toで繰り返しソートしたくなります。 ▼アソシエーションルールはこちら esu-ko.hatenablog…
無料で便利なMetabaseですが、クエリに対し、1グラフだったり、取り回しが悪いことがあります。 そこで、大枠のクエリだけはMetabase上で書き、 Python/Rで集計軸を変えたり、結合するといったことをしたくなりました。 基本的な手順 session_idを取得 上記…
APIを叩いて取得したjson文字列をさくっとDataFrameにする方法です。 pandasにはread_jsonというjsonを読み込んで、 データフレームにしてくれるものがあります。 実はこれ、ファイルではないjson文字列も対象にできます。 コード import pandas as pd # req…
標準化をするときに、強い外れ値に引っ張られ、うまく行かないことがあります。 それを避けるためにロバストな標準化方法がないか調べたところ、中央値とIQRを用いたものがありました。 また、sklearnに実装されていました。 コード from sklearn.preprocess…
TFIDFをパッケージでする場合、三種類の選択肢があります。 ただし、それぞれ入力や出力が違うので注意が必要です。 モジュール 入力 出力 nltk 各行、単語に分けたリスト 行、単語ごとに計算が必要 gensim 各行、単語に分けたリスト スパースマトリクス skl…
カテゴリ列の種類が多い場合、いくつかを絞ってダミー化したい場合があります。 そんなときは、pandasのget_dummiesよりsklearnのLabelBinarizerの方が便利です。 コード from sklearn.preprocessing import LabelBinarizer lb = LabelBinarizer() #ダミー化…
画像データを扱う時など、行列の中の数値をいっぺんに0or1に変換したい時があります。 そんなときはsklearnのBinarizerを用いると便利です。 コード from sklearn.preprocessing import Binarizer import numpy as np #3✖️3のサンプルデータ X = np.random.r…
小ネタです。複数のデータをmergeする必要があり、見通しが悪くなるときに時々使っています。 使用するデータが頻繁に変わる時に、使うデータだけ管理すれば良いので再実行が楽です。 ※concatは複数渡せるのですが、mergeは渡せないため 再帰するマージを定…
大量の要素が発生する場合、テキストマイニングで使う処理やネットワーク分析的な形におとしたいのですが、 その辺の定型インプットに持っていく前に、結構ケースバイケースの処理をかけなくては行けないことがあります。 Python的には基本中の基本の関数が…
pandasで日付ごとに集約する場合、resampleを使うと非常に楽です。 注意点としては、indexに入れておく必要があるところでしょうか。 date_trunc的な挙動 import pandas as pd #365日のデータ one_year = pd.Series(1,index = pd.date_range(start='2020-01-…
データ加工の処理をするときに、バラバラになったローカルファイルを扱う必要が出てくることがあります。 そんなときはosモジュールを使うと便利です。 ひとまず、あるディレクトリの中身をすべて出したい os.list_dirを使います。 ファイルオブジェクトやフ…
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…
使い方がややこしい、cutとqcutの話です。 デシル分析をする際に便利なqcutは下記記事でも使いました。 esu-ko.hatenablog.com 上記記事のなかで、グループの中のユーザー数ではなく、数値そのものを等分する場合の話も触れました。 実はPandasにはその時に…