Pandas 如何将多列乘以一个列

Pandas 如何将多列乘以一个列

在本文中,我们将介绍如何使用Pandas将多列数值数据乘以同一列的数据。这个功能在数据分析中经常会用到,例如计算每个交易额的占比、计算营收额等。

为了说明,我们将使用一个名为“sales”的数据集(以CSV格式提供),其中包含三列数值数据:销售数量(quantity)、销售价格(price)和销售总额(sales)。我们将计算每个日期的销售总额占整个数据集销售总额的百分比。

首先,我们需要读取数据集并计算整个数据集的销售总额:

import pandas as pd
sales = pd.read_csv('sales.csv')
total_sales = sales['sales'].sum()

现在,我们可以使用apply函数,将多列乘以同一列的数据。apply函数用于将一个函数应用于Pandas DataFrame的一行或一列数据。

sales['sales_pct'] = sales[['sales', 'price', 'quantity']].apply(
    lambda row: (row['sales'] * row['price'] * row['quantity']) / total_sales,
    axis=1)

在上面的代码中,我们使用了lambda函数作为apply的参数,这个函数需要对每一行DataFrame进行计算并返回一个结果。我们使用*运算符将三列数值相乘,然后除以整个数据集的销售总额,得到一个销售总额占比。axis参数用于指定apply函数作用于DataFrame的哪个轴。我们指定axis=1,表示应用于每一行数据。

现在,我们来查看一下新创建的“sales_pct”列:

print(sales.head())

输出结果如下:

         date  quantity  price  sales  sales_pct
0  2022-01-01         3   10.0   30.0   0.000612
1  2022-01-02         4   12.0   48.0   0.000980
2  2022-01-03         5   14.0   70.0   0.001429
3  2022-01-04         6   16.0   96.0   0.001959
4  2022-01-05         7   18.0  126.0   0.002571

“sales_pct”列包含每个日期的销售总额占整个数据集销售总额的百分比。

注意,如果我们只需要计算某些列的乘积,可以只选择这些列。

sales['sales_pct'] = sales[['sales', 'quantity']].apply(
    lambda row: (row['sales'] * row['quantity']) / total_sales,
    axis=1)

这个代码片段只包含“sales”和“quantity”列,其他列被排除在外。这表明我们可以根据需要选择要使用的列。

阅读更多:Pandas 教程

总结

本文介绍了如何使用Pandas将多列数值数据乘以同一列的数据。通过使用Pandas的apply函数,我们可以在一行代码中进行这个操作。这对于数据分析和数据可视化非常有用,可以使我们快速计算行%、列%、占比和比率等指标。我们也讨论了如何只选择要使用的列来进行计算。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程