首页 > 解决方案 > 创建一个函数来自动提取数据/返回一个汇总的数据框

问题描述

我有一个数据集,其中包含公司所做的每一次销售。对于每个月,我都想获得一个汇总数据框,其中包含客户姓名、客户购买的数量以及他们在给定月份的购买总价值。目前,我通过为每个客户创建一个数据框并在最后加入所有数据框来做到这一点,所以我的代码看起来像这样:

#'不。Pucharses 的

Client2_April_NoPurchase = len(sells_data[(sells_data['Customer'] == 'Client2') & (sells_data['Month'] == 'Apr')])

#'购买总价值(美元)'

Client2_April_ValuePurchases = sells_data.loc[(sells_data['Customer'] == 'Client2') & (sells_data['Month'] == 'Apr'), 'Value of Purhcase (USD)'].sum()

#原始数据

Client2_Purchases_April_datadf = {'Customer': ['Client2'], 'Purchases (No.)': [(Client2_April_NoPurchase)], 'Value of Purhcase (USD)': [(Client2_April_ValuePurchases)]}

#数据框

Client2_Purchases_April = pd.DataFrame(Client2_Purchases_April_datadf, columns = ['Customer', 'Purchases (No.)', 'Value of Purchases (USD)'])

我为每个客户重复此代码,这使我的工具非常“手动”。有没有办法“自动化”这段代码?我想创建一个功能,但我尝试过的所有功能都没有奏效。另请注意,有些客户有其他货币(澳元、加元等)的购买价值,有些客户同时拥有多种货币的购买价值(美元和加元等)。

数据集示例 (sells_data): 在此处输入图像描述

标签: pythonpandas

解决方案


这是您的数据框的可重现版本:

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'customer' : ['Client1', 'Client2', 'Client2', 'Client3', 'Client1', 'Client2'],
    'date' : ['08/04/2020', '14/04/2020', '14/04/2020', '15/04/2020', '14/04/2020', '14/04/2020'],
    'value_usd' : [50, 300, 20, np.nan, 95, 30],
    'value_gbp' : [np.nan, np.nan, np.nan, 20, np.nan, np.nan],
    'value_eur' : [np.nan, np.nan, np.nan, np.nan, 10, np.nan],
    'value_hkd' : [np.nan, np.nan, np.nan, np.nan, np.nan, np.nan],
    'value_cad' : [np.nan, np.nan, np.nan, np.nan, np.nan, np.nan]
})

使用groupby您现在可以通过多种方式按客户端聚合数据。此行计算条目:

df.groupby(['customer']).agg(['count'])

          date value_usd value_gbp value_eur value_hkd value_cad
         count     count     count     count     count     count
customer                                                        
Client1      2         2         0         1         0         0
Client2      3         3         0         0         0         0
Client3      1         0         1         0         0         0
``

推荐阅读