Schreiben wir den Rekonstruktionsknoten neu, der vertikal gehaltene Daten in horizontal gehaltene Daten mit SPSS Modeler mit Python-Pandas konvertiert.
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.
■ 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.
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.
(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.
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.
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.
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.
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).
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.
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.
Nullen wurden wie unten gezeigt in 0 konvertiert.
Als Nächstes wird der Gesamtkaufbetrag für jeden Kunden berechnet, indem die Knoten Datensatzaggregation und Datensatzkombination hinzugefügt werden.
Zunächst berechnet der Datensatzaggregationsknoten die gesamte Zwischensumme (SUBTOTAL) jedes Kunden (CUSTID), dh den gesamten Kaufbetrag (wiederum ist die Datensatzhäufigkeit nicht erforderlich).
Der 100001-Kunde kauft insgesamt 44.386 Yen.
Kombinieren Sie dieses Aggregationsergebnis mit der Aggregation der Gesamtmenge von BAG, COMETICS und SHOES zuvor mit dem Datensatzverbindungsknoten.
Dann könnte der Gesamtkaufbetrag nach dem Gesamtbetrag von BAG, COMETICS und SHOES für jeden Kunden kombiniert werden.
Am Ende habe ich den langen Spaltennamen im Filterknoten gekürzt (diese Arbeit ist nicht obligatorisch).
Die endgültigen Daten sehen folgendermaßen aus:
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.
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.
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.
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%.
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.
--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.
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]
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))
(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)
--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))
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)
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
[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