(1) 请删除最后一列为缺失值的行,并求所有在杭州发货的商品单价均值。 (2) 商品标题带有“嘉兴”但发货地却不在嘉兴的商品有多少条记录? (3) 请按照分位数将价格分为“高、较高、中、较低、低”5 个类别,再将 类别结果插入到标题一列之后,最后对类别列进行降序排序。 (4) 付款人数一栏有缺失值吗?若有则请利用上一问的分类结果对这些缺失 值进行合理估计并填充。 (5) 请将数据后四列合并为如下格式的 Series:商品发货地为 ××,店铺为 ××,共计 ×× 人付款,单价为 ××。 (6) 请将上一问中的结果恢复成原来的四列。
import pandas as pd import numpy as np df_1 = pd.read_csv('./data/端午粽子数据.csv') df_1.info() df_2 = df_1.copy().dropna(axis=0,subset=['发货地址 ']) pd.to_numeric(df_1[df_2['发货地址 '].str.contains('杭州')][' 价格'],errors='coerce').mean().round(decimals=2) df_2[(df_1['标题'].str.contains('嘉兴')) &(~df_2['发货地址 '].str.contains('嘉兴'))].shape[0] df_2.loc[:,' 价格'] = pd.to_numeric(df_zongzi.loc[:,' 价格'],errors='coerce') q = [df_zongzi.loc[:,' 价格'].quantile(i) for i in [0,.2,.4,.6,.8,1]];q[-1] += 1 df_2.loc[:,'价格类别'] = pd.cut(df_2[' 价格'],q,right=False,labels=['低','较低','中','较高','高']) df_2.loc[:,['标题','价格类别', ' 价格', '付款人数', '店铺', '发货地址 ']].sort_values(by='价格类别') df_3 = df_2.copy() df_3.info() grouped = df_3.groupby('价格类别') for name,group in grouped: df_3.loc[group.index,'付款人数'] = str(int(pd.to_numeric(group['付款人数'].astype(str).str[:-3],errors='coerce').mean()))+'人付款' df_3.info() df_4 = df_3.astype(str) df_str3 = ('商品发货地为'+df_4['发货地址 ']+',店铺为'+df_4['店铺']+',共计'+df_4['付款人数']+',单价为'+df_4[' 价格']+'。') df_str3.head() df_res = df_str3.str.extract(r'商品发货地为(?P<发货地址>[\w]+\s*[\w]+),店铺为(?P<店铺>[\w]+),共计(?P<付款人数>[\w]+\+*[\w]+),单价为(?P<价格>[\d]+\.*[\d]+)。') df_res.head()