##########################一个小功能,输入商品三级分类编号,输出相应的指标################
import warnings
import pandas as pd
warnings.filterwarnings('ignore')##忽略警告
item_third_cate_id = input("请输入需要查询的三级类目编号,多个请用英文分隔:")
def max_cut_min(group): ##自定义一个函数,验证在agg里面使用自定义函数的可能性
return group.max() - group.min()
def cate_list(item_third_cate_id):
list_cate = item_third_cate_id.split(',')#将输入的类目编号转为列表
list_cate = list(map(int,list_cate))#使用map方式将list中字符型转为整型
file_path = 'sku_test_01.csv'#文件地址
file_data = pd.read_csv(file_path,encoding= 'gb18030')#将数据读取至dataframe中
file_data = file_data[file_data['商品三级分类编号'].isin(list_cate)]#使用isin函数筛选出输入的商品三级编号
# uniq_cate = file_data.drop_duplicates(subset=['商品三级分类编号'],keep='first') #在dataframe中按照某一列进行去重 drop_duplicates(subset['A','B'],keep = 'first / last
# print(uniq_cate['商品三级分类编号']) #对一列进行去重
# print(file_data['商品三级分类编号'].value_counts()) # 根据某一列进行group_by
group_by_column = file_data.groupby(['商品三级分类编号','商品三级分类名称']) #需要分组的列
group_by1 = group_by_column['商品二级分类编号'].agg([('数据行数','count'),('求和','sum'),('去重计数','nunique')]) #可以对具体的某几列进行聚合计算,但是缺点是无法针对某一列进行具体的一类计算,优点是可以命名列名
# print(group_by_column.describe()) ##一些基本的描述性输出,如最大最小中位数平均数分位数
group_by2 = group_by_column.agg({'有效订单金额':['sum'],'SKU编码':['nunique'],'净加购件数':[max_cut_min]}) ##可以灵活对某一列进行聚合操作,但是缺点需要重命名
# group_by2 = group_by2.rename({'商品三级分类编号':'商品三级分类'}) #对列名进行重命名
group_by2.columns = [i[0] + "_" + i[1] for i in group_by2.columns] ##遍历列名批量修改列名
# print(group_by2.columns.values.tolist())#将列名输出为一个list
print(group_by2)
if __name__ =="__main__":
cate_list(item_third_cate_id)
pandas中DataFrame常见操作
于 2022-11-01 00:32:37 首次发布