2016-04-18 1 views
0

Ich habe ein histogramm, die so aussehen: enter image description hereWie man ein mittleres Datenhistogramm in Python plotten?

Sie sehen, für jedes Jahr (X) gibt es mehrere Y, so das Histogramm überlappende Balken hat. Wie kann ich es nur für max Y bauen? und für den Mittelwert?

Mein Code ist:

My dataframe is: 
    Data Amount 
    1996 65155 
    1984 88705 
    1996 115551 
    2010 87222 
    1995 3043 
    1994 54789 
    2007 87655 
    1996 55189 
    2005 34914 
    2005 122643 
    1995 111700 
    1996 64065 
    1995 76783 
    1994 85687 
    1995 88515 
    1996 48352 
    1995 315025 
    1995 80074 
    1995 133998 
    2000 40918 
    2000 108585 
    1996 119506 
    2003 105385 
    2003 93374 
    1996 63970 
    1995 15261 
    1996 128078 
    1995 83593 
    1994 54544 
    2006 108167 
    1996 141421 
    2005 83725 

year=df[['Year']].as_matrix() 
amount=df[['Amount']].as_matrix() 

stepsize = 10 
fig, ax = plt.subplots() 
ax.bar(year, amount, width=1) 
start, end = ax.get_xlim() 
ax.set_xlabel('Year') 
ax.set_ylabel('Amount') 
ax.set_title(r'Amount - year') 
ax.xaxis.set_ticks(np.arange(start, end, stepsize)) 
plt.show() 
+0

benötigen Sie ein reproduzierbares Beispiel zu machen (Code enthalten, der w/o lokale Dateien, Verbindungen zu Datenbanken repräsentative Daten von Grund auf neu erzeugt, usw.) –

+0

ok, ist die Frage – Polly

+0

bearbeitet Wie ich schon sagte , "ohne lokale Dateien", Sie sind die einzige Person auf der Welt mit 'Data.csv'. –

Antwort

0

Da Sie Ihre Daten mit Pandas lesen, Sie den Datenrahmen zu gruppieren Aggregate die Daten verwenden können, wie Sie wollen, und diese Werte grafisch darzustellen. Ich verwende den Wert max im folgenden Beispiel, aber Sie könnten auch die mean, min, ... was auch immer verwenden.

Beachten Sie auch, wie ich die StringIO verwenden, um dieses Beispiel vollständig kopieren/einfügen.

from io import StringIO 
import pandas 

datafile = StringIO("""\ 
Year Amount 
1996 65155 
1984 88705 
1996 115551 
2010 87222 
1995 3043 
1994 54789 
2007 87655 
1996 55189 
2005 34914 
2005 122643 
1995 111700 
1996 64065 
1995 76783 
1994 85687 
1995 88515 
1996 48352 
1995 315025 
1995 80074 
1995 133998 
2000 40918 
2000 108585 
1996 119506 
2003 105385 
2003 93374 
1996 63970 
1995 15261 
1996 128078 
1995 83593 
1994 54544 
2006 108167 
1996 141421 
2005 83725 
""") 

df = pandas.read_csv(datafile, sep='\s+') 
ax = df.groupby(by=['Year']).max().plot.bar(legend=False) 
ax.set_ylabel("Amount") 

enter image description here