Tuesday, June 7, 2022

Pandas based on the results of grouping and summing other columns

Использование DataFrame.groupby().sum() для группировки строк на основе одного или нескольких столбцов и вычисления функции суммирования суммы. Функция groupby() возвращает объект DataFrameGroupBy, который содержит агрегатную функцию sum() для вычисления суммы заданного столбца для каждой группы.Как использовать функции groupby() и sum() вместе с примерами. group by & sum для одного и нескольких столбцов выполняется несколькими способами в pandas, некоторые из них — это функции groupby(), pivot(), transform() и aggregate(). 

(.env) boris@boris-All-Series:~/MATPLOTLIBSR/PANDASGROUPS$ cat groupsPandas.py

import pandas as pd

import warnings

warnings.simplefilter(action='ignore', category=FutureWarning)

technologies   = ({

    'Courses':["Spark","PySpark","Hadoop","Python","Pandas","Hadoop","Spark","Python"],

    'Fee' :[22000,25000,23000,24000,26000,25000,25000,22000],

    'Duration':['30days','50days','55days','40days','60days','35days','55days','50days'],

    'Discount':[1000,2300,1000,1200,2500,1300,1400,1600]

                })


df0 = pd.DataFrame(technologies)

print(df0)

print("\n")


df = pd.DataFrame(technologies, columns=['Courses','Fee','Duration','Discount'])

print(df)

print("\n")

# Use GroupBy() to compute the sum

df2 = df.groupby('Courses').sum()

print(df2)

print("\n")

# Using GroupBy multiple column

df2 = df.groupby(['Courses','Duration'])['Fee'].sum()

print(df2)

print("\n")

# Groupby and get sum() and count()

df2 = df.groupby('Courses')['Fee'].agg(['sum','count'])

print(df2)

print("\n")

# Pandas groupby get sum() and count()

df2 = df.groupby('Courses').agg({'Fee': ['sum','count']})

print(df2)

print("\n")

# Sorting group keys on descending order

groupedDF = df.groupby('Courses',sort=False).sum()

sortedDF=groupedDF.sort_values('Courses', ascending=False)

print(sortedDF)

print("\n")

# Using reset_index()

df2 = df.groupby(['Courses'])['Fee'].sum().reset_index()

print(df2)

print("\n")

# GroupBy multiple columns using agg()

df2 = df.groupby(['Courses','Duration'])['Discount'].agg("sum")

print(df2)

print("\n")

# GroupBy multiple columns using transform()

df2 = df.groupby(['Courses', 'Fee'])['Discount'].transform('sum')

print(df2)

print("\n")

# GroupBy multiple columns using pivot function

df2 = df.groupby(['Courses','Duration'],as_index = False).sum().pivot('Courses','Duration').fillna(0)

print(df2)

print("\n")

# DataFrame.set_index using sum with level

df2 = df.set_index(['Courses','Duration']).sum(level=[0,1])

print(df2)

print("\n")


(.env) boris@boris-All-Series:~/MATPLOTLIBSR/PANDASGROUPS$ python3 groupsPandas.py
   Courses    Fee Duration  Discount
0    Spark  22000   30days      1000
1  PySpark  25000   50days      2300
2   Hadoop  23000   55days      1000
3   Python  24000   40days      1200
4   Pandas  26000   60days      2500
5   Hadoop  25000   35days      1300
6    Spark  25000   55days      1400
7   Python  22000   50days      1600


   Courses    Fee Duration  Discount
0    Spark  22000   30days      1000
1  PySpark  25000   50days      2300
2   Hadoop  23000   55days      1000
3   Python  24000   40days      1200
4   Pandas  26000   60days      2500
5   Hadoop  25000   35days      1300
6    Spark  25000   55days      1400
7   Python  22000   50days      1600


           Fee  Discount
Courses                 
Hadoop   48000      2300
Pandas   26000      2500
PySpark  25000      2300
Python   46000      2800
Spark    47000      2400


Courses  Duration
Hadoop   35days      25000
                55days      23000
Pandas   60days      26000
PySpark  50days      25000
Python   40days      24000
               50days      22000
Spark    30days      22000
              55days      25000
Name: Fee, dtype: int64


           sum  count
Courses              
Hadoop   48000      2
Pandas   26000      1
PySpark  25000      1
Python   46000      2
Spark    47000      2


           Fee      
           sum count
Courses             
Hadoop   48000     2
Pandas   26000     1
PySpark  25000     1
Python   46000     2
Spark    47000     2


           Fee  Discount
Courses                 
Spark    47000      2400
Python   46000      2800
PySpark  25000      2300
Pandas   26000      2500
Hadoop   48000      2300


   Courses    Fee
0   Hadoop  48000
1   Pandas  26000
2  PySpark  25000
3   Python  46000
4    Spark  47000


Courses  Duration
Hadoop   35days      1300
                55days      1000
Pandas   60days      2500
PySpark  50days      2300
Python   40days      1200
               50days      1600
Spark    30days      1000
               55days      1400
Name: Discount, dtype: int64


0    1000
1    2300
2    1000
3    1200
4    2500
5    1300
6    1400
7    1600
Name: Discount, dtype: int64


              Fee                             ... Discount                        
Duration   30days   35days   40days   50days  ...   40days  50days  55days  60days
Courses                                       ...                                 
Hadoop        0.0  25000.0      0.0      0.0  ...      0.0     0.0  1000.0     0.0
Pandas        0.0      0.0      0.0      0.0  ...      0.0     0.0     0.0  2500.0
PySpark       0.0      0.0      0.0  25000.0  ...      0.0  2300.0     0.0     0.0
Python        0.0      0.0  24000.0  22000.0  ...   1200.0  1600.0     0.0     0.0
Spark     22000.0      0.0      0.0      0.0  ...      0.0     0.0  1400.0     0.0

[5 rows x 12 columns]


                    Fee  Discount
Courses Duration                 
Spark   30days    22000      1000
PySpark 50days    25000      2300
Hadoop  55days    23000      1000
Python  40days    24000      1200
Pandas  60days    26000      2500
Hadoop  35days    25000      1300
Spark   55days    25000      1400
Python  50days    22000      1600

No comments:

Post a Comment