# How to calculate the mean of a Pandas Series grouped by another Series in Python?

Hello everyone, I have a problem that I want to solve using the libraries available in Python, I did find a solution for it using `list comprehension` but I believe there are more efficient methods. The problem involves grouping data of one `series` and then calculating the mean of some other `series` based on this grouped data. The code I used is attached below, I have used two `series` and after creating a `dataframe` of those, I grouped the data based on the `fruits` series and calculated the mean of the `values` series based on these groups.

If there are efficient methods of doing this, please provide them below using the same or some other example.

Hi @mubashir_rizvi You can calculate the mean efficiently by using the pd.crosstab()` method which is used for creating a cross-tabulation (or contingency table) based on two or more columns of a dataFrame. It allows you to count the number of occurrences of each combination of values in the columns, and then display the results in a tabular format.

• The `index` argument is the column to be used as the row index, the `columns` argument is the column to be used as the column index, `values` is the column to be aggregated (optional), and `aggfunc` is the aggregation function to be applied.
• Since we only have two series in our dataframe, we have used `fruits` in both `index` and `columns` arguments.

Hello @mubashir_rizvi , the `groupby()` method in Pandas is a powerful function for grouping the data based on one or more columns of a data frame and allowing to aggregate of the results. Let’s understand it better by below example:

In the example code, we group a series `values` by another series `fruits`, and then we find the mean of this grouped data using the `mean()` function.

Hi @mubashir_rizvi , the `pd.pivot_table()` method is used for creating a spreadsheet-style pivot table based on a Pandas dataFrame. It allows you to summarize and aggregate data based on one or more columns, and then display the results in a tabular format. In this method, we have grouped the table by `fruits` series by specifying the `index` argument, and found the mean of the `values` series which is specified in the `values` argument.