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函数,我们可以在一行代码中进行这个操作。这对于数据分析和数据可视化非常有用,可以使我们快速计算行%、列%、占比和比率等指标。我们也讨论了如何只选择要使用的列来进行计算。