# Python - Column Product in List of lists

The column product refers to the result of multiplying all the values within a specific column of a dataset. In a tabular representation of data, such as a list of lists or a spreadsheet, each column typically represents a variable or a feature, and the values within that column represent individual observations or measurements.

The column product is closely related to the concept of column sum or column average, where instead of multiplication; the values within a column are summed or averaged to obtain a single value representing the column's cumulative effect or central tendency.

When calculating the column product, the values within a specific column are multiplied together to obtain a single value that represents the combined effect of the variables or observations within that column. This can be useful in various data analysis and modeling scenarios, such as calculating the total product of sales quantities for different products or computing the product of variables in a mathematical model.

To calculate the column product in a list of lists in Python, we can use different approaches. Let’s see each approach with an example in detail.

## Using Loops

If we have a list of lists where each sublist represents a record, and the elements within the sublist represent the values in different columns, we can use a loop to iterate through the columns and calculate the product for each column.

### Example

In this example, we initialize an empty list column_product to store the product for each column. We then iterate through the indices of the elements in each sublist using the loop variable i. For each column, we use a generator expression (record[i] for record in records) to extract the values of that column, and functools.reduce() with a lambda function to calculate the product of the column values. The product is then appended to the column_product list.

import functools
records = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
column_product = []
num_records = len(records)
for i in range(len(records[0])):
column_product.append(functools.reduce(lambda x, y: x * y, (record[i] for
record in records)))
print("The column product of list of lists:",column_product)


### Output

The column product of list of lists: [28, 80, 162]


## Using zip() and a List Comprehension

We can leverage the zip() function to transpose the list of lists, grouping the values of each column together. Then, we can use a list comprehension to calculate the product for each column.

### Example

Here in this example, zip(*records) transposes the list of lists, creating an iterator that returns tuples with the elements from each column. The list comprehension then calculates the product of each column using functools.reduce() and the lambda function, resulting in a list of column products.

import functools
records = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
column_product = [functools.reduce(lambda x, y: x * y, column) for column in
zip(*records)]
print("The column product of list of lists:",column_product)


### Output

The column product of list of lists: [28, 80, 162]


## Using NumPy

NumPy is one of the most powerful libraries for numerical computations in Python. It provides an efficient and concise way to calculate column products in a list of lists. We have a function called product() in numpy which helps in calculating the column product.

### Example

In this example, we convert the list of lists into a NumPy array using np.array(records), where each sublist represents a row in the array. Then, we use np.product(arr, axis=0) to calculate the product along the first axis i.e. rows effectively giving us the column products.

import numpy as np
records = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
arr = np.array(records)
column_product = np.product(arr, axis=0)
print("The column product of list of lists:",column_product)


### Output

The column product of list of lists: [ 28 80 162]


Updated on: 02-Jan-2024

36 Views