第1关:Pandas分组聚合
任务:使用Pandas加载drinks.csv文件中的数据,根据数据信息求每个大洲红酒消耗量的最大值与最小值的差以及啤酒消耗量的和。
import pandas as pd
import numpy as np
# 返回最大值与最小值的和
def sub(df):
########## Begin #########
return df.max() - df.min()
########## End #########
# 得到目标DataFrame
def main():
########## Begin #########
data=pd.read_csv('./step1/drinks.csv')
df=pd.DataFrame(data)
#df.groupby("continent").agg(sub)
mapping = {"wine_servings":sub,"beer_servings":np.sum}
result=df.groupby("continent").agg(mapping)
########## End #########
return result
第2关:Pandas创建透视表和交叉表
任务:使用Pandas加载tip.csv文件中的数据集,分别用透视表和交叉表统计顾客在每种用餐时间、每个星期下的小费总体情况。
#-*- coding: utf-8 -*-
import pandas as pd
#创建透视表
def create_pivottalbe(data):
########## Begin ##########
return data.pivot_table(values=["tip"],index=["day"],columns=["time"],aggfunc=sum,margins=True)
########## End ##########
#创建交叉表
def create_crosstab(data):
########## Begin ##########
return pd.crosstab(values=data.tip,index=[data.day],columns=[data.time],aggfunc=sum ,margins=True)
########## End ##########
def main():
#读取csv文件数据并赋值给data
########## Begin ##########
data=pd.read_csv('./step2/tip.csv')
########## End ##########
piv_result = create_pivottalbe(data)
cro_result = create_crosstab(data)
print("透视表:\n{}".format(piv_result))
print("交叉表:\n{}".format(cro_result))