数据分析-python基于Excel的操作

该实例所用资源: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:

      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值