2017-10-30 2 views
0

ich eine Liste, die (jetzt) ​​besteht aus zwei Spalten: t und Volumen, und etwa 80000 Zeilen, wie folgt aussehen:Benötigen Sie Hilfe bei Datenpunkten kombiniert

"t" "volume" 
1 20 
2 25 
2 40 
3 23 
3 34 
3 45 

ich geschaffen habe, diese Liste mit der Verwendung

von np.loadtext der numpy

Was ich jetzt tun will, ist die Lautstärke aller Datenpunkte mit dem gleichen t hinzufügen, um eine Liste wie diese zu erstellen, dass ich mit matplotlib grafisch darstellen kann:

"t" "volume" 
1 20 
2 65 
3 102 

aber ich bin nicht sicher, wie es geht dies, da ich nicht sicher bin, wie ich dies explizit im Code angeben würde. Könnte mir vielleicht jemand hier helfen?

Antwort

0

oder Sie können es in Form eines pivot_table tun mit der numpy Summenfunktion:

# Create empty dataframe 
df = pd.DataFrame() 
df['t'] = [1,2,2,3,3,3] 
df['volume'] = [20,25,40,23,34,45] 

#margins=True adds an extra row with the total sum of the column volume 
pd.pivot_table(df,index=["t"],aggfunc=[np.sum],margins=True) 
+0

Es hat funktioniert, danke! Wenn ich das tho mache, bekomme ich drei Spalten: 't',' vol' und 'volume' statt zwei. sowohl "vol" als auch "volume" geben mir die Summenvolumina für 't' (die Sache, die ich will), also beschwere ich mich nicht, aber es sieht einfach nicht so hübsch aus wie nur zwei Spalten. Irgendeine Idee für die Reparatur? –

+0

Ihr Datenrahmen hat zwei Spalten ('t' und 'volume'). Ich verstehe nicht, wo die Spalte "vol" steht. Bitte geben Sie den Beispielcode ein, von dem ich vermute, dass es sich um einen anderen Datenrahmen mit drei Spalten handelt. Alternativ können Sie sich die Pivot-Tabellen-Dokumentation ansehen: https://pandas.pydata.org/pandas-docs/stable/generated/pandas.pivot_table.html – xan

1

können Sie Pandas, dies zu tun sehr einfach:

In [3]: df 
Out[3]: 
    t volume 
0 1  20 
1 2  25 
2 2  40 
3 3  23 
4 3  34 
5 3  45 

In [4]: df.groupby('t').sum() 
Out[4]: 
    volume 
t   
1  20 
2  65 
3  102 
+0

Ich bekomme den AttributeError: 'numpy.darray' Objekt hat kein Attribut 'groupby'. Ich habe 'data' verwendet, wobei data die Liste ist, die ich erstellt habe und' data.groupby ('t'). Sum() 'und ich habe Pandas importiert –

+0

Dieser Code geht davon aus, dass' df' ein Pandas-Datenframe ist, genau wie du habe in @xans Antwort. –

0

Man konnte immer eine Schleife durch alle Werte innerhalb der 2-Liste und fügen Sie einen Zähler auf die einer laufenden Registerkarte, so etwas wie diese (psuedo- Code)

points = [0] * number_of_points 
for i in range(number_of_points): 
    points[t_value] += volume_value 

dies erstellt eine Liste der Summen, wobei die t-Werte die Liste Indizes sind, und die Volumen Summen sind die Elemente. Beachten Sie meine Antwort war Python 3, so müssten Sie es ein wenig zwicken, um es in Python zu machen arbeiten 2

Verwandte Themen