Tengo una lista que (en este momento) existe de 2 columnas: ty volumen, y alrededor de 80000 filas, con este aspecto:

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

He creado esta lista con el uso de numpy's np.loadtxt

Lo que quiero hacer ahora es agregar los volúmenes de todos los puntos de datos con la misma t, para crear una lista como esta, que pueda graficar con matplotlib:

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

Pero no estoy seguro de cómo hacer esto, ya que no estoy seguro de cómo declararía esto explícitamente en el código. ¿Alguien podría ayudarme aquí?

0
Matthijs Groen 30 oct. 2017 a las 17:28

3 respuestas

La mejor respuesta

O puede hacerlo en forma de tabla dinámica utilizando la función de suma numpy:

# 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
xan 30 oct. 2017 a las 16:12

Siempre puede recorrer todos los valores dentro de la lista 2 y agregar un conteo a la pestaña en ejecución, algo como esto (código psuedo)

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

Esto crea una lista de sumas, donde los valores t son los índices de la lista, y las sumas de volumen son los elementos. Tenga en cuenta que mi respuesta fue Python 3, por lo que tendría que modificarlo un poco para que funcione en Python 2

0
wjmccann 30 oct. 2017 a las 14:35

Puedes usar pandas para hacer esto de manera muy simple:

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
1
Ankur Ankan 30 oct. 2017 a las 14:31