数据分析师Python面试问题
问题1:产品族
“首席营销官感兴趣的是了解不同产品系列的销售如何受到促销活动的影响。为此,对于每个产品系列,显示销售的总数量,以及在销售的总数量中有有效促销的销售单位的百分比。如果结果中有null,则将它们替换为零。促销是有效的,如果它不是空的,它包含在促销表中。”
这是问题的链接,如果你想跟我一起看的话。
技术概念
用Python进行数据分析是数据分析师非常欣赏的技能之一,通常是强制性的技能。虽然Python为数据分析提供了很多可能性,但这通常是不够的。您还必须使用不同的数据分析库,如Pandas和NumPy。
在解决这个数据分析师面试问题时,您需要熟练使用以下概念:
•合并()
•lambda函数
•isna ()
•独特的()
•groupby ()
•数据聚合
•使用数据框架
解决方案与输出
下面是如何在Python中解决这个问题。
import pandas as pd
merged = facebook_sales.merge(
right=facebook_products, how="outer", on="product_id"
)
merged["valid_promotion"] = merged.promotion_id.map(
lambda x: not pd.isna(x)
and x in facebook_sales_promotions.promotion_id.unique()
)
valid_promotion = merged[merged.valid_promotion]
invalid_promotion = merged[~merged.valid_promotion]
result_valid = (
valid_promotion.groupby("product_family")["units_sold"]
.sum()
.to_frame("valid_solds")
.reset_index()
)
result_invalid = (
invalid_promotion.groupby("product_family")["units_sold"]
.sum()
.to_frame("invalid_solds")
.reset_index()
)
result = result_valid.merge(
result_invalid, how="outer", on="product_family"
).fillna(0)
result["total"] = result["valid_solds"] + result["invalid_solds"]
result["valid_solds_percentage"] = (
result["valid_solds"] / result["total"] * 100
)
result = result[
["product_family", "total", "valid_solds_percentage"]
].fillna(0)
让我们看一下代码。首先,我使用正确的外部方法合并facebook_sales和facebook_products。
然后我使用新的列valid_promotion来查找在有效促销下的销售。换句话说,在销售和促销数据中找到促销ID。
之后,我将输出分成有效销售和无效销售。这两种类型的销售按产品族进行汇总和分组。
这两个dataframe再次合并,以按产品类型显示有效和无效的销售。NA值替换为0。
现在我得到了这些值,我可以找到有效销售额的百分比。
最后,输出显示产品族、总销售额和有效销售额百分比。