En este artículo, discutiremos cómo calcular la suma de todos los números negativos y números positivos en DataFrame usando el método GroupBy en Pandas.
Para utilizar el método groupby() utilice la siguiente sintaxis.
Sintaxis: df.groupby(nombre_columna)
Implementación paso a paso
Paso 1: creación de funciones lambda para calcular valores de suma positiva y suma negativa.
pos = lambda col : col[col > 0].sum() neg = lambda col : col[col < 0].sum()
Paso 2: Usaremos el método groupby() y aplicaremos la función lambda para calcular la suma.
d = df.groupby(df['Alphabet']) print(d['Frequency'].agg([('negative_values', neg), ('positive_values', pos) ])) print(d['Bandwidth'].agg([('negative_values', neg), ('positive_values', pos) ]))
Ejemplos
Ejemplo 1:
Calcule la suma de todos los valores positivos y negativos de a, b, c para ambas columnas, es decir, frecuencia y ancho de banda
Python3
# Import Necessary Libraries import pandas as pd import numpy as np # Creating a DataFrame with # random values df = pd.DataFrame({'Alphabet': ['a', 'b', 'c', 'c', 'a', 'a', 'c', 'b'], 'Frequency': [-10, 29, -12, -190, 72, -98, -12, 0], 'BandWidth': [10, 34, 23, -10, -87, -76, 365, 10]}) print(df) # Group By dataframe on categorical # values d = df.groupby(df['Alphabet']) # creating lambda function to calculate # positive as well as negative values def pos(col): return col[col > 0].sum() def neg(col): return col[col < 0].sum() # Apply lambda function to particular # column print(d['Frequency'].agg([('negative_values', neg), ('positive_values', pos) ])) print(d['Bandwidth'].agg([('negative_values', neg), ('positive_values', pos) ]))
Producción:
Ejemplo 2:
Calcule la suma de todos los valores positivos y negativos de a, b para ambas columnas, es decir, X e Y
Python3
# Import Necessary Libraries import pandas as pd import numpy as np # Creating a DataFrame with random values df = pd.DataFrame({'Function': ['F(x)', 'F(x)', 'F(y)', 'F(x)', 'F(y)', 'F(x)', 'F(x)', 'F(y)'], 'X': [-10, 29, -12, -190, 72, -98, -12, 0], 'Y': [10, 34, 23, -10, -87, -76, 365, 10]}) print(df) # Group By dataframe on categorical values d = df.groupby(df['Function']) # creating lambda function to calculate # positive as well as negative values def pos(col): return col[col > 0].sum() def neg(col): return col[col < 0].sum() # Apply lambda function to particular # column print(d['X'].agg([('negative_values', neg), ('positive_values', pos) ])) print(d['Y'].agg([('negative_values', neg), ('positive_values', pos) ]))
Producción:
Ejemplo 3:
Calcule la suma de todos los valores positivos y negativos de cada nombre, es decir, Marcas. El siguiente paso es hacer la función lambda para calcular la suma. En el último paso, agruparemos los datos según los nombres y llamaremos a las funciones lambda para calcular la suma de los valores.
Python3
# Import Necessary Libraries import pandas as pd import numpy as np # Creating a DataFrame with random values df = pd.DataFrame({'Name': ['Aryan', 'Nityaa', 'Dhruv', 'Dhruv', 'Nityaa', 'Aryan', 'Nityaa', 'Aryan', 'Aryan', 'Dhruv', 'Nityaa', 'Dhruv', 'Dhruv'], 'Marks': [90, 93, 78, 56, 34, 12, 67, 45, 78, 92, 29, 88, 81]}) print(df) # Group By dataframe on categorical values d = df.groupby(df['Name']) # creating lambda function to calculate # positive as well as negative values def pos(col): return col[col > 0].sum() def neg(col): return col[col < 0].sum() # Apply lambda function to particular # column print(d['Marks'].agg([('negative_values', neg), ('positive_values', pos) ]))
Producción:
Publicación traducida automáticamente
Artículo escrito por dev247kumar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA