Schreiben Sie den Neukonfigurationsknoten von SPSS Modeler mit Python neu. Aggregation nach gekauften Produktkategorien

Schreiben wir den Rekonstruktionsknoten neu, der vertikal gehaltene Daten in horizontal gehaltene Daten mit SPSS Modeler mit Python-Pandas konvertiert.

1. 1. Bild der Verarbeitung

Addieren wir aus den folgenden POS-Daten mit ID (1) den Gesamtkaufbetrag für jede Produktkategorie und (2) das Kaufverhältnis für jede Produktkategorie für jeden Kunden.

■ Vor der Verarbeitung Wir verwenden ID-angehängte POS-Daten, die aufzeichnen, wer (CUSTID) wann (SDATE) und was (PRODUCTID, L_CLASS-Produkthauptklassifizierung, M_CLASS-Produktmittelklassifizierung) und wie viel (SUBTOTAL) gekauft hat.

image.png

■ Nach der Verarbeitung Für jeden Kunden (CUSTID) werden der Gesamtkaufbetrag für jede Produktkategorie (1) und die Einkaufsquote für jede Produktkategorie (L_CLASS) summiert. image.png

Es gibt drei Hauptproduktkategorien: BAG, COMETICS und SHOES. Der 100001-Kunde hat einen Kaufpreis von 7243 Yen für BAG, 10273 Yen für COSMETICS und 26870 Yen für SHOES. Wenn Sie es als Prozentsatz des Betrags berechnen, beträgt es BAG 16,3%, COSMETICS 23,1%, SHOES 60,5%. Diese Art der Aggregation zeigt die Eigenschaften des Kunden.

2. Einstellungen auf dem Modeler-Rekonfigurationsknoten ① Gesamtkaufbetrag für jede Produktkategorie

(1) Ermitteln Sie zunächst den Gesamtkaufbetrag für jede Produktkategorie. Neukonfigurationsknoten werden häufig in Kombinationen von Datentypknoten, Datensatzzusammenfassungen und sogar Ersatzknoten verwendet. Darüber hinaus werden wir dieses Mal auch Datensatzaggregations- und Datensatzverbindungsknoten kombinieren, um den Gesamtkaufpreis zu berechnen.

image.png

Zunächst erkennt der Datentypknoten, welcher Kategoriewert in der Produktkategorie (L_CLASS) enthalten ist. Wenn Sie "Lesewert" für den Datentypknoten ausführen, werden alle Hauptkategorien automatisch erkannt.

image.png

Wählen Sie als Nächstes den Wert des Felds aus, das Sie horizontal im Rekonfigurationsknoten halten möchten. Im folgenden Beispiel werden BAG, COMETICS, SHOES als Spalten für die Produkthauptklassifizierung (L_CLASS) erweitert und Zwischensummen (SUBSTOTAL) für die Werte festgelegt. image.png

Eine Vorschau des Ergebnisses dieser Einstellung sieht wie folgt aus. Sie können sehen, dass die Zwischensumme (SUBSTOTAL) in die Spalten jeder Produkthauptkategorie (L_CLASS) sortiert wurde. image.png

Verwenden Sie als Nächstes den Knoten "Datensatzaggregation", um die Zwischensummenwerte von BAG, COMETICS und SHOES vom Kunden zu einem Datensatz zusammenzufassen (deaktivieren Sie diese Option, da die Datensatzhäufigkeit nicht erforderlich ist). image.png

Damit wurde der Gesamtkaufbetrag für jede Produktkategorie BAG, COMETICS und SHOES für jeden Kunden aggregiert. Es wurde berechnet, dass der 100001-Kunde einen Kauf von 7243 Yen für BAG, 10273 Yen für COSMETICS und 26870 Yen für SHOES hatte.

image.png

Dies ist fast abgeschlossen, es gibt jedoch einige NULL-Werte. Dies bedeutet, dass dieser Kunde noch nie in dieser Produktkategorie eingekauft hat. Wenn dies unverändert bleibt, ist es schwierig, es für die Berechnung zu verwenden. Ersetzen Sie daher NULL durch 0.

Es ist der Ersatzknoten, der das tut. Wählen Sie den Knoten mit dem Gesamtwert BAG, COMETICS, SHOES aus und setzen Sie ihn auf 0, wenn es sich um einen Nullwert handelt.

image.png

Nullen wurden wie unten gezeigt in 0 konvertiert.

image.png

Als Nächstes wird der Gesamtkaufbetrag für jeden Kunden berechnet, indem die Knoten Datensatzaggregation und Datensatzkombination hinzugefügt werden. image.png

Zunächst berechnet der Datensatzaggregationsknoten die gesamte Zwischensumme (SUBTOTAL) jedes Kunden (CUSTID), dh den gesamten Kaufbetrag (wiederum ist die Datensatzhäufigkeit nicht erforderlich).

image.png

Der 100001-Kunde kauft insgesamt 44.386 Yen. image.png

Kombinieren Sie dieses Aggregationsergebnis mit der Aggregation der Gesamtmenge von BAG, COMETICS und SHOES zuvor mit dem Datensatzverbindungsknoten. image.png

Dann könnte der Gesamtkaufbetrag nach dem Gesamtbetrag von BAG, COMETICS und SHOES für jeden Kunden kombiniert werden. image.png

Am Ende habe ich den langen Spaltennamen im Filterknoten gekürzt (diese Arbeit ist nicht obligatorisch). image.png

Die endgültigen Daten sehen folgendermaßen aus: image.png

2. Einstellungen auf dem Modeler-Rekonfigurationsknoten (2) Einkaufsquote nach Produktkategorie

Von hier aus wird es ein wenig als Rekonfigurationsknoten verwendet, aber ich werde es einführen, weil ich oft ein "Verhältnis" berechnen möchte, das leicht mit anderen Kunden zu vergleichen ist.

Werfen wir einen Blick auf die Daten, die wir zuvor erstellt haben.

image.png

Für den 100001-Kunden kann das Kaufbetragverhältnis berechnet werden, indem BAG durch 7243 Yen ÷ 44.386 Yen, COSMETICS durch 10273 Yen ÷ 44.386 Yen und SHOES durch 26870 Yen ÷ 44.386 Yen geteilt wird. Führen Sie diese Berechnung auf dem Felderstellungsknoten durch.

image.png

Stellen Sie mehrere Modi ein und wählen Sie BAG_SUM, COSMETICS_SUM, SHOES_SUM in der Feldliste. Anschließend können Sie @FIELD im CLEM-Ausdruck verwenden, um auf die Spalten BAG_SUM, COSMETICS_SUM und SHOES_SUM zu verweisen. Hier @FIELD/ALL_SUM Durch Angabe Es werden drei Verhältnisse von BAG_SUM / ALL_SUM, COSMETICS_SUM / ALL_SUM und SHOES_SUM / ALL_SUM berechnet.

image.png

Damit wurde die Einkaufsquote für jede Produktkategorie BAG, COMETICS und SHOES für jeden Kunden aggregiert. Die Einkaufsquote des Kunden Nr. 100001 beträgt BAG 16,3%, COSMETICS 23,1%, SHOES 60,5%. image.png

3. Einstellungen in Pandas ① Gesamtkaufbetrag für jede Produktkategorie

Ich werde die gleiche Datenverarbeitung mit Pandas versuchen. Tatsächlich (1) kann die Berechnung des Gesamtkaufbetrags für jede Produktkategorie sehr einfach mit einer Methode namens pivot_table in Pandas durchgeführt werden.

pivot_tran_df= df.pivot_table(
    index=['CUSTID'],columns=['L_CLASS'],values=['SUBTOTAL'],
    aggfunc='sum',
    fill_value=0,
    margins=True, margins_name='ALL')

--index = ['CUSTID'], column = ['L_CLASS'], values = ['SUBTOTAL'] und erweitern Sie SUBTOTAL für jede Hauptkategorie von BAG, COMETICS, SHOES, die in L_CLASS enthalten sind, wobei CUSTID als Schlüssel verwendet wird. .. Dies ist das Bild der Einstellungen des Rekonfigurationsknotens.

Der Kaufbetrag und der Gesamtkaufbetrag von BAG, COMETICS, SHOES können für jede CUSTID wie unten gezeigt berechnet werden.

image.png

--Referenz

Spalte Gesamtspalte ist erforderlich, aber Zeilensumme Zeile wird diesmal nicht benötigt. Löschen Sie sie daher unten.

pivot_tran_df=pivot_tran_df[:-1]

--Referenz --python - So entfernen Sie die letzte Datenzeile in einem Pandas-Datenrahmen https://www.it-swarm.dev/ja/python/pandas%E3%83%87%E3%83%BC%E3%82% BF% E3% 83% 95% E3% 83% AC% E3% 83% BC% E3% 83% A0% E3% 81% AE% E3% 83% 87% E3% 83% BC% E3% 82% BF% E3% 81% AE% E6% 9C% 80% E5% BE% 8C% E3% 81% AE% E8% A1% 8C% E3% 82% 92% E5% 89% 8A% E9% 99% A4% E3% 81% 99% E3% 82% 8B% E6% 96% B9% E6% B3% 95/1050572731 /

Wenn Sie pivot_table verwenden, sind die Spalten hierarchisch und mehrspaltig.

image.png image.png

Wenn es immer noch mehrspaltig ist, ist es schwierig zu kombinieren und zu handhaben. Konvertieren Sie es daher in einen Spaltennamen im Flat-Snake-Format (verkettet mit Unterstrich). Gemäß der Namenskonvention von Modeler ist dies wie folgt.

pivot_tran_df.columns = [
    pivot_tran_df.columns.names[1]+"_"+levels[1]+"_"+levels[0] 
    for levels in pivot_tran_df.columns]

image.png

image.png

Ich habe hier auch einen regulären Ausdruck verwendet und ihn in einen kürzeren Spaltennamen wie BAG_SUM geändert.

import re
pivot_tran_df=pivot_tran_df.rename(
    columns= lambda str:
    re.sub('L_CLASS_(.+)_SUBTOTAL',r'\1_SUM',str))

image.png

3. Einstellungen in Pandas ② Einkaufsquote nach Produktkategorie

(2) In Modeler wurde die Einkaufsquote für jede Produktkategorie von @ FIELD / ALL_SUM berechnet.

Pandas verwendet die Div-Methode. In der Nähe des Abbilds des Ersetzungsknotens in Modeler werden alle Spalten durch ALL_SUM geteilt und ersetzt. ALL_SUM selbst ist ebenfalls in 1.0 unterteilt.

pivot_tran_ratio_df=pivot_tran_df.div(pivot_tran_df["ALL_SUM"], axis=0)

image.png

--Referenz

Löschen Sie ALL_SUM und benennen Sie es um, da es RATIO (Prozent) anstelle von SUM (Gesamt) ist.

import re
pivot_tran_ratio_df=pivot_tran_ratio_df\
    .drop(columns=['ALL_SUM'])\
    .rename(columns= lambda str:re.sub('_SUM','_RATIO',str))

image.png

Schließlich (1) fügen Sie dem DataFrame den Gesamtkaufbetrag für jede zu vervollständigende Produktkategorie wieder hinzu.

pivot_tran_df=pivot_tran_df.join(pivot_tran_ratio_df)

image.png

4. Probe

Die Probe wird unten platziert.

Strom https://github.com/hkwd/200611Modeler2Python/blob/master/Restructure/Restructure.str?raw=true notebook https://github.com/hkwd/200611Modeler2Python/blob/master/Restructure/restructure.ipynb Daten https://raw.githubusercontent.com/hkwd/200611Modeler2Python/master/data/sampletranDEPT4en2019S.csv

■ Testumgebung Modeler 18.2.1 Windows 10 64bit Python 3.6.9 pandas 0.24.1

5. Referenzinformationen

[Relay-Serialisierung] Mein empfohlener Node-Sugo-Techniker "Rekonstruktionsknoten", der Feature-Mengen aus POS mit ID- und IoT-Zeitreihendaten generiert | IBM Solution Blog https://www.ibm.com/blogs/solutions/jp -ja / spssmodeler-push-node-4 /

Recommended Posts

Schreiben Sie den Neukonfigurationsknoten von SPSS Modeler mit Python neu. Aggregation nach gekauften Produktkategorien
Schreiben Sie den Filterknoten von SPSS Modeler mit Python neu
Schreiben Sie den Datensatzadditionsknoten von SPSS Modeler mit Python neu.
Ändern Sie die Einstellungen eines Knotens in einem Superknoten mit dem Python-Skript SPSS Modeler
Schreiben Sie den Sampling-Knoten von SPSS Modeler mit Python (2) neu: Layered Sampling, Cluster Sampling
Schreiben Sie den Stichproben-Knoten von SPSS Modeler mit Python neu First: Erste N Fälle, Zufallsstichprobe
Schreiben Sie den Neukonfigurationsknoten von SPSS Modeler mit Python neu. Aggregation nach gekauften Produktkategorien
Schreiben Sie den Datensatzadditionsknoten von SPSS Modeler mit Python neu.
Schreiben Sie den Filterknoten von SPSS Modeler mit Python neu
Schreiben Sie den Stichproben-Knoten von SPSS Modeler mit Python neu First: Erste N Fälle, Zufallsstichprobe
Schreiben Sie den Sampling-Knoten von SPSS Modeler mit Python (2) neu: Layered Sampling, Cluster Sampling
Sortieren nach Datum in Python
Übergeben von Argumenten an Python-Skripte in SPSS Modeler Batch
[Python] Erstellen Sie mit Plotly Express parallele Koordinatendiagramme, die nach Kategorien farbcodiert sind
Schreiben Sie den Felderstellungsknoten von SPSS Modeler mit Python neu. Merkmalsextraktion aus Zeitreihensensordaten