如何用Python计算DataFrame中各产品NPI占总NPI的比例?
计算每个产品NPI占总NPI的比例
假设你的DataFrame包含产品和NPI两列,示例结构如下:
import pandas as pd # 示例数据 data = { '产品': ['A', 'A', 'B', 'B', 'B', 'C'], 'NPI': [10, 20, 15, 5, 25, 30] } df = pd.DataFrame(data)
实现步骤:
- 第一步:计算每个产品的NPI总和
用groupby按产品分组后,对NPI列求和:
product_npi_sum = df.groupby('产品')['NPI'].sum()
执行后会得到一个Series,索引为产品名称,值为对应产品的NPI总和。
- 第二步:计算所有产品的总NPI
直接对原DataFrame的NPI列求和即可:
total_npi = df['NPI'].sum()
- 第三步:计算每个产品占总NPI的比例
将每个产品的NPI总和除以总NPI:
product_npi_ratio = product_npi_sum / total_npi
完整代码示例
import pandas as pd # 构造示例DataFrame data = { '产品': ['A', 'A', 'B', 'B', 'B', 'C'], 'NPI': [10, 20, 15, 5, 25, 30] } df = pd.DataFrame(data) # 计算每个产品NPI总和 product_npi_sum = df.groupby('产品')['NPI'].sum() # 计算总NPI total_npi = df['NPI'].sum() # 计算占比 product_npi_ratio = product_npi_sum / total_npi # 输出结果 print("每个产品的NPI总和:") print(product_npi_sum) print("\n每个产品NPI占总NPI的比例:") print(product_npi_ratio)
执行后输出:
每个产品的NPI总和: 产品 A 30 B 45 C 30 Name: NPI, dtype: int64 每个产品NPI占总NPI的比例: 产品 A 0.30 B 0.45 C 0.30 Name: NPI, dtype: float64
内容的提问来源于stack exchange,提问作者user20602598
相关产品推荐
相关产品推荐

