该实例所用资源:https://download.csdn.net/download/weixin_46623003/16236600
一、Excel表各sheet的数据情况:
1、pwc_orders:
2、pwc_refund_order:
3、pwc_product:
4、product_name:
二、分析要求:
1、请计算出2019-2020年,各月份的订单总数量及订单总金额(请使用create_time划分时间)
2、请计算出2019和2020年,各年度各产品类型的商品定价总金额
3、请计算出2019-2020年各月份的复购率, 最终结果请以月度为统计维度,统计各月份的复购率,结果保留6位小数。(复购率= 复购用户数/总下单用户数。复购用户:在2019-2020年间,下单两次及两次以上用户)
三、python代码:
import pandas as pd
inputfile = r'D:\XXX\data_analysis\data.xlsx'
outputfile = r'D:\XXX\data_analysis\result' # 结果文件
# 导入excel文件
pwc_orders = pd.read_excel(inputfile, header =0, sheet_name=0)
pwc_refund_order = pd.read_excel(inputfile, header =0, sheet_name=1)
pwc_product = pd.read_excel(inputfile, header =0, sheet_name=2)
product_name = pd.read_excel(inputfile, header =0, sheet_name=3)
#pwc_orders.dtypes # 查看数据的类型
# =============================================================================
# # 1、请计算出2019-2020年,各月份的订单总数量及订单总金额(请使用create_time划分时间)
pwc_orders['Year'] = pwc_orders['create_time'].map(lambda x: x.year) # 取年份
df_result1=pd.DataFrame()
df_result1['sum'] = pwc_orders[pwc_orders['Year'].between(2019,2020)].groupby('Year')['grand_total'].sum()
df_result1['count'] = pwc_orders[pwc_orders['Year'].between(2019,2020)].groupby('Year')['orders_code'].count()
df_result1.reset_index( inplace=True )
# =============================================================================
# # 2、请计算出2019和2020年,各年度各产品类型的商品定价总金额
df_temp2 =pwc_product.merge(product_name,how='inner', on ="product_id").merge(pwc_orders,how='inner', on ="orders_code") # 连接3表
df_result2 = df_temp2[df_temp2['Year'].between(2019,2020)].groupby(['Year','pl_name'])['subtotal'].sum().reset_index()
# =============================================================================
# # 3、请计算出2019-2020年各月份的复购率, 最终结果请以月度为统计维度,统计各月份的复购率,结果保留6位小数。(复购率= 复购用户数/总下单用户数。复购用户:在2019-2020年间,下单两次及两次以上用户)
pwc_orders['YearMonth'] = pwc_orders['create_time'].map(lambda x: 1000*x.year + x.month) # 取年月
df_temp = pwc_orders[pwc_orders['Year'].between(2019,2020)].groupby(['YearMonth','ship_name']).count().reset_index()
df_result3=pd.DataFrame()
df_result3['复购用户数'] = df_temp[df_temp['orders_code']>=2].groupby(['YearMonth'])['ship_name'].count() # 复购用户
df_result3['总下单用户数'] = df_temp.groupby(['YearMonth'])['ship_name'].count() # 总下单用户
df_result3['复购率'] = df_result3['复购用户数']/df_result3['总下单用户数'] # 复购率
# =============================================================================
# 导出到excel文件
df_result1.to_excel(outputfile+'/result1.xlsx',index=False,float_format="%.2f")
df_result2.to_excel(outputfile+'/result2.xlsx',index=False,float_format="%.2f")
df_result3.to_excel(outputfile+'/result3.xlsx',float_format="%.6f")
四、结果:
1、result1:
2、result2:
3、result3: