2016-04-14 17 views
1

Ich habe folgendes ein DF verwenden, die zwei Spalten, die Ich mag würde aggregieren von:Wie aggregierte Datenrahmen mit zwei Spalten plotten?

df2.groupby(['airline_clean','sentiment']).size() 
airline_clean sentiment 
americanair -1    14 
       0    36 
       1   1804 
       2   722 
       3   171 
       4    1 
jetblue  -1    2 
       0    7 
       1   1074 
       2   868 
       3   250 
       4    11 
southwestair -1    4 
       0    20 
       1   1320 
       2   829 
       3   237 
       4    4 
united   -1    7 
       0    74 
       1   2467 
       2   1026 
       3   221 
       4    5 
usairways  -1    5 
       0    62 
       1   1962 
       2   716 
       3   155 
       4    2 
virginamerica -1    2 
       0    2 
       1   250 
       2   180 
       3    69 
dtype: int64 

die aggragated Ansicht Plotten:

DFC = df2.groupby ([ 'airline_clean',‘ Gefühl ']) size() dfc.plot (Art =' bar‘, gestapelt = True, figsize = (18,6))

Ergebnisse in:

enter image description here

Ich mag zwei Dinge ändern:

  • Plot der Daten in einem gestapelten Diagramm nach Airline
  • mit% statt roher Zahlen (nach Airline auch)

Ich bin nicht sicher wie man das erreicht. Jede Richtung wird geschätzt.

Antwort

0

Der beste Weg ist dieser Datensatz zu zeichnen ist zunächst auf% Werte zu konvertieren und() verwendet unstack zum Plotten:

airline_sentiment = df3.groupby(['airline_clean', 'sentiment']).agg({'tweet_count': 'sum'}) 
airline = df3.groupby(['airline_clean']).agg({'tweet_count': 'sum'}) 
p = airline_sentiment.div(airline, level='airline_clean') * 100 

p.unstack().plot(kind='bar',stacked=True,figsize=(9, 6),title='Sentiment % distribution by airline') 

Das in einem schönen Grafik Ergebnis:

enter image description here

Verwandte Themen