pandas でカテゴリとその頻度を含むテーブルを カテゴリ × 頻度行のテーブルに変換する方法

pandas で階級値とその頻度のテーブルを 各階級値×頻度 行のテーブルに変換する方法

** Sorry, this note is Japanese only, but please take a look at some code snippets. Hope it helps you a bit!

タイトルからしてわかりにくく、しかも極めて個人的な悩みです。
pandas のデータの変換方法。カテゴリとその頻度が含まれているデータを、各データで1レコード・カテゴリごとに頻度行分だけ、というテーブルに変換するのに思ったより苦労したので、備忘録を兼ねてメモを残しておきます。

pandas の DataFrame とやろうとしてること

元のデータソースの都合で、元データは各データ項目(カテゴリ変数)と、その発生頻度が1レコードに収まっている状態です。リレーショナル データベース風に言えば、カテゴリ変数で正規化されてる状態というか。

ID Category Frequency
0 A 1
1 B 3
2 C 1
3 D 1
4 E 2

これを、このように変換したい、というのが今回の課題。

ID Category
0 A
1 B
2 B
3 B
4 C
5 D
6 E
7 E

pandas を使ったテーブル変換・解決方法

結局、pandas 単体の機能を使った方法はわからなくて、一旦データを list にして functools.reduce を使って解決させた。

gist.github.com

sklearn.preprocessing とかの中に、こういうことができるモジュールか何かありそうなんだけどな・・・

その他 データ分析 ・機械学習 関係の記事もどうぞ

datalove.hatenadiary.jp
datalove.hatenadiary.jp
datalove.hatenadiary.jp
datalove.hatenadiary.jp
datalove.hatenadiary.jp
datalove.hatenadiary.jp