import pandas as pd
filepath = "Resources/purchase_data.csv"
game = pd.read_csv(filepath)
game.head(10)
totalN = pd.DataFrame({"Total Players":[len(game["SN"].unique())]})
totalN
purch = pd.DataFrame({
"Number of Unique Items":[len(game["Item ID"].unique())],
"Average Price":[game["Price"].mean()],
"Number of Purchases":[len(game.index)],
"Total Revenue":[game["Price"].sum()],
})
purch = purch.style.format({
"Average Price":"${:0,.2f}",
"Total Revenue":"${:0,.2f}"
})
purch
gendemoTC = game.groupby(["Gender"])[["SN"]].nunique()
gendemoPC = game.groupby(["Gender"])[["SN"]].nunique()
gendemo = pd.merge(gendemoTC,gendemoPC,on=["Gender"])
gendemo["SN_y"]=(gendemo["SN_y"]/(len(game["SN"].unique())))*100
gendemo.rename(columns={"SN_x":"Total Count",
"SN_y":"Percentage of Players"},inplace=True)
gendemo = gendemo.style.format({
"Percentage of Players":"{:0,.2f}%"
})
gendemo
genpurchPC = game.groupby(["Gender"])[["Purchase ID"]].count()
genpurchAPP = game.groupby(["Gender"])[["Price"]].mean()
genpurchTPV = game.groupby(["Gender"])[["Price"]].sum()
genpurchATPP = game.groupby(["Gender"])[["SN"]].nunique()
genpurch = pd.merge(genpurchPC,genpurchAPP,on=["Gender"])
genpurch = pd.merge(genpurch,genpurchTPV,on=["Gender"])
genpurch = pd.merge(genpurch,genpurchATPP,on=["Gender"])
genpurch["SN"]=genpurch["Price_y"]/genpurch["SN"]
genpurch.rename(columns={
"Purchase ID":"Purchase Count",
"Price_x":"Average Purchase Price",
"Price_y":"Total Purchase Value",
"SN":"Avg Total Purchase per Person"}
,inplace=True)
genpurch = genpurch.style.format({
"Average Purchase Price":"${:0,.2f}",
"Total Purchase Value":"${:0,.2f}",
"Avg Total Purchase per Person":"${:0,.2f}"
})
genpurch
bins = [0,9,14,19,24,29,34,39,game["Age"].max()]
nameobins = ["<10","10-14","15-19","20-24","25-29","30-34","35-39","40+"]
game["Age Range"] = pd.cut(game["Age"],bins, labels=nameobins, include_lowest=True)
TC = game.groupby(["Age Range"])[["SN"]].nunique()
Percent = game.groupby(["Age Range"])[["SN"]].nunique()
agedemo = pd.merge(TC,Percent,on=["Age Range"])
agedemo["SN_y"]=(agedemo["SN_y"]/len(game["SN"].unique()))*100
agedemo.rename(columns = {"SN_x":"Total Count","SN_y":"Percentage of Players"},inplace=True)
agedemo = agedemo.style.format({
"Percentage of Players":"{:0,.2f}%"
})
agedemo
PC = game.groupby(["Age Range"])[["Purchase ID"]].count()
APP = game.groupby(["Age Range"])[["Price"]].mean()
TPV = game.groupby(["Age Range"])[["Price"]].sum()
personz = game.groupby(["Age Range"])[["SN"]].nunique()
ultima = pd.merge(PC,APP,on=["Age Range"])
ultima = pd.merge(ultima,TPV,on=["Age Range"])
ultima = pd.merge(ultima,personz,on=["Age Range"])
ultima["SN"] = ultima["Price_y"]/ultima["SN"]
ultima.rename(columns = {"Purchase ID":"Purchase Count","Price_x":"Average Purchase Price","Price_y":"Total Purchase Value","SN":"Avg Total Purchase per Person"},inplace=True)
ultima = ultima.style.format({
"Average Purchase Price":"${:20,.2f}",
"Total Purchase Value":"${:20,.2f}",
"Avg Total Purchase per Person":"${:20,.2f}"
})
ultima
spenderzC = game.groupby(["SN"])[["Purchase ID"]].count()
spenderzS = game.groupby(["SN"])[["Price"]].mean()
spenderzM = game.groupby(["SN"])[["Price"]].sum()
spenderz_merge = pd.merge(spenderzC,spenderzS,on=["SN"])
spenderz_merge = pd.merge(spenderz_merge,spenderzM,on=["SN"])
spenderz_merge = spenderz_merge.rename(columns = {"Purchase ID":"Purchase Count","Price_x":"Average Purchase Price","Price_y":"Total Purchase Value"})
top5_spenderz = spenderz_merge.nlargest(5, "Total Purchase Value", keep='first')
top5_spenderz = top5_spenderz.style.format({
"Average Purchase Price":"${:20,.2f}",
"Total Purchase Value":"${:20,.2f}"
})
top5_spenderz
top5itemsC = game.groupby(["Item ID","Item Name"])[["Purchase ID"]].count()
top5itemsM = game.groupby(["Item ID","Item Name"])[["Price"]].mean()
top5itemsS = game.groupby(["Item ID","Item Name"])[["Price"]].sum()
top5_merge = pd.merge(top5itemsC,top5itemsM,on=["Item ID","Item Name"])
top5_merge = pd.merge(top5_merge,top5itemsS,on=["Item ID","Item Name"])
top5_merge.rename(columns = {"Purchase ID":"Purchase Count","Price_x":"Item Price","Price_y":"Total Purchase Value"},inplace=True)
pop_items = top5_merge.sort_values(by=['Purchase Count'],ascending=False).head(5)
pop_items = pop_items.style.format({
"Item Price":"${:20,.2f}",
"Total Purchase Value":"${:20,.2f}",
})
pop_items
prof_items = top5_merge.sort_values(by=['Total Purchase Value'],ascending=False).head(5)
prof_items = prof_items.style.format({
"Item Price":"${:20,.2f}",
"Total Purchase Value":"${:20,.2f}",
})
prof_items