2016-07-14 4 views
1

Ich versuche, Pandas zu verwenden, um Spaltendaten zu aggregieren, um den CPC von Anzeigen in meinem Dataset zu berechnen, basierend auf einer Variablen im Dataset wie Anzeigengröße, Anzeigenkategorie-Platzierung usw. Also im folgenden Fall Ich aggregiere die adCost- und adClicks-Gruppierung nach adSize (was eine kategoriale Variable von 1-5 ist). Wie erzeuge ich eine neue Spalte in das Dataset, die die jetzt aggregierte adCost pro adSize und adClick pro adSize übernimmt und die Kosten pro Klick pro adSize berechnet? Ich habe die Aggregation in einer Variablen gespeichert, aber sie wird nicht in einem DataFrame oder einem Objekt gespeichert, das ich später weiter bearbeiten kann. Was vermisse ich oder mache ich falsch?Wie aggregiere ich diese Daten und erstelle eine neue Spalte mit Python & Pandas?

import pandas as pd 
import numpy as np 

df = pd.DataFrame(data) 

from sklearn import preprocessing 
label_encoder = preprocessing.LabelEncoder() 

## Convert 'adSize' to categorial values 
df['adSize'] = df['adSize'] 
df['adSize'] = label_encoder.fit_transform(df['adSize']) 

agg_calc = { 
    'adCost':{ 
    # work on the "calculation" column 
     'total_cost': 'sum', 
     'avg_cost': 'mean' 
    }, 
    'adClicks':{ 
     'total_clicks': 'sum', 
     'avg_click': 'mean', 
     'count': 'count' 
    } 
} 

## Aggregate by adSize 
y= df.groupby(['adSize']).aggregate(agg_calc) 

Vielen Dank für Ihre Unterstützung

Antwort

2

Sie sollten einfach in der Lage sein groupby zu verwenden. Ich habe keine Daten, und ich bin nicht ganz sicher, ob ich verstehe Ihre Frage, aber so etwas wie die folgenden funktionieren sollte:

Ist das, was Sie fragen?

+0

Ich glaube, dass Ihre Funktionen lösen, was ich versuchte zu erreichen. Mein Dilemma war, dass es so aussieht, als ob bei Verwendung der Aggregatfunktion auf dem DataFrame das Ergebnis nicht gespeichert oder beibehalten wird, auch wenn es in einer Variablen gespeichert wird. So kann ich später die von der Aggregatfunktion erzeugten Daten nicht mehr manipulieren, sondern nur die Ausgabe ausdrucken. Ich wollte die Ergebnisse der Aggregatfunktion weiter manipulieren, indem ich die eine durch die andere dividiere. Ich denke, Ihre Lösung funktioniert gut und ist einfacher. Ich frage mich, was dann der Zweck oder der Unterschied zwischen den beiden Methoden ist. – OAK