Ich möchte eine Spalte Quantile für jedes Datum erstellen. Berechnete die Quantile für jeden eindeutigen Wert Sales-Wert. Ie Kategorie entspricht immer der gleichen Anzahl in den Verkäufen für jedes bestimmte Datum.Erstellen einer neuen Spalte in Pandas Quantil mit Quantile-Funktion
Ich habe Datenrahmen, der nach Datum indiziert ist. Es gibt viele Daten und mehrere gleiche Daten. Beispiel für die Teilmenge von df für 1 Tag:
Category Sales Ratio 1 Ratio 2
11/19/2016 Bar 300 0.46 0.96
11/19/2016 Bar 300 0.56 0.78
11/19/2016 Bar 300 0.43 0.96
11/19/2016 Bar 300 0.47 0.94
11/19/2016 Casino 550 0.92 0.12
11/19/2016 Casino 550 0.43 0.74
11/19/2016 Casino 550 0.98 0.65
11/19/2016 Casino 550 0.76 0.67
11/19/2016 Casino 550 0.79 0.80
11/19/2016 Casino 550 0.90 0.91
11/19/2016 Casino 550 0.89 0.31
11/19/2016 Café 700 0.69 0.99
11/19/2016 Café 700 0.07 0.18
11/19/2016 Café 700 0.75 0.59
11/19/2016 Café 700 0.07 0.64
11/19/2016 Café 700 0.14 0.42
11/19/2016 Café 700 0.30 0.67
11/19/2016 Pub 250 0.64 0.09
11/19/2016 Pub 250 0.93 0.37
11/19/2016 Pub 250 0.69 0.42
Ich mag einen Code, der eine neue Spalte fügt Quantilsgrenzen genannt, die für jeden berechnet datiert die 0,5 Quantil einzigartigen Sales. Wichtig zu beachten ist, dass Verkäufe für eine Kategorie für ein bestimmtes Datum immer gleich sind (die Dinge ändern sich, wenn sich die Daten ändern).
Beispiel für eine Lösung: df ['Quantil'] = df.Sales.groupby (df.index) .transform (Lambda x: x.quantile (q = 0.5, Achse = 0, Interpolation = 'Mittelpunkt'))
Allerdings würde dies nicht ausreichen (auch wenn es geklappt hat). Für dieses Beispiel (für dieses eine Datum), In der neuen Spalte df ['Quantile'] wären alle Werte für ein Datum mit Particular identisch.
Für dieses Datum würde die Berechnung 300, 550, 700 und 250 für das Quantil verwenden.
Deshalb ist die letzte df würde wie folgt aussehen:
Category Sales Ratio 1 Ratio 2 Quantile
11/19/2016 Bar 300 0.46 0.96 425
11/19/2016 Bar 300 0.56 0.78 425
11/19/2016 Bar 300 0.43 0.96 425
11/19/2016 Bar 300 0.47 0.94 425
11/19/2016 Casino 550 0.92 0.12 425
11/19/2016 Casino 550 0.43 0.74 425
11/19/2016 Casino 550 0.98 0.65 425
11/19/2016 Casino 550 0.76 0.67 425
11/19/2016 Casino 550 0.79 0.80 425
11/19/2016 Casino 550 0.90 0.91 425
11/19/2016 Casino 550 0.89 0.31 425
11/19/2016 Café 700 0.69 0.99 425
11/19/2016 Café 700 0.07 0.18 425
11/19/2016 Café 700 0.75 0.59 425
11/19/2016 Café 700 0.07 0.64 425
11/19/2016 Café 700 0.14 0.42 425
11/19/2016 Café 700 0.30 0.67 425
11/19/2016 Pub 250 0.64 0.09 425
11/19/2016 Pub 250 0.93 0.37 425
11/19/2016 Pub 250 0.69 0.42 425
Wenn ich, ohne auf nur ein Element jeder Kategorie Quantilsgrenzen aller Verkäufe für einen bestimmten Zeitpunkt zu tun, war ich so etwas wie 550 erhalten würde (was Ich möchte nicht).
Schlüssel Sache ist, ich möchte, dass der Code einfach und einigermaßen schnell (als Datum ist ziemlich groß). Auch die Interpolation muss Mittelpunkt sein.
Gibt es eine Möglichkeit Argument hinzufügen, um nur für einen bestimmten Zeitpunkt Duplikate der Kategorie fallen? Wie könnte es Kategorien geben, die denselben Verkaufswert haben? Ie Quantil nur einen Verkaufswert für jede Kategorie für jedes Datum? – MysterioProgrammer91
Können Sie Muster für Ihre Anforderungen ändern? Brauchen Sie 'filter first' wie' df1 = df [df.duplicated (subset = ['Kategorie', 'Sales']) & (df.index.isin (['11-19-2016', '11-20 -2016 ']))] 'und dann Quantil anwenden? – jezrael
Fantastisches Danke – MysterioProgrammer91