综合练习
端午节的淘宝粽子交易
问题
(1)请删除最后一列为缺失值的行,并求所有在杭州发货的商品单价均值。
(2)商品标题带有“嘉兴”但发货地却不在嘉兴的商品有多少条记录?
(3)请按照分位数将价格分为“高、较高、中、较低、低”5个类别,再将类别结果插入到标题一列之后,最后对类别列进行降序排序。
(4)付款人数一栏有缺失值吗?若有则请利用上一问的分类结果对这些缺失值进行合理估计并填充。
(5)请将数据后四列合并为如下格式的Series:商品发货地为xx,店铺为xx,共计x×人付款,单价为xx。
(6)请将上一问中的结果恢复成原来的四列。
df = pd.read_csv('data/端午粽子数据.csv')
df.head()
(1)请删除最后一列为缺失值的行,并求所有在杭州发货的商品单价均值。
# 查看列名发现有空格,去掉列名的空格
df.columns = [col.strip() for col in df.columns]
# strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
df.columns
df1 = df[df.发货地址.notnull()]
df1
df2 = df1[df1.发货地址.str.contains('杭州')]
df2
df2.价格.str.replace('_','').astype('float').mean()
# str.replace() https://www.cnblogs.com/P--K/p/11148250.html
(2)商品标题带有“嘉兴”但发货地却不在嘉兴的商品有多少条记录?
df[df.标题.str.contains('嘉兴')][(df.发货地址.str.contains('嘉兴'))==False]
(3)请按照分位数将价格分为“高、较高、中、较低、低”5个类别,再将类别结果插入到标题一列之后,最后对类别列进行降序排序。
df.价格.iloc[[538,4376]]=[45.9,45]
df.价格 = df.价格.astype('float')
df['类别'] = pd.qcut(df.价格,[0,0.2,0.4,0.6,0.8,1.],labels= ['低', '较低', '中', '较高', '高'])
df3 = df.reindex(columns= ['标题', '类别', '价格', '付款人数', '店铺','发货地址']).sort_values('类别',ascending=False)
df3
(4)付款人数一栏有缺失值吗?若有则请利用上一问的分类结果对这些缺失值进行合理估计并填充。
df[df['付款人数'].isna()]
- 填充缺失值
(5)请将数据后四列合并为如下格式的Series:商品发货地为xx,店铺为xx,共计x×人付款,单价为xx。
'商品发货地为:' + df.发货地址 + ',店铺为:' + df.店铺 + ',共计' + df.付款人数 + ',单价为:' + df.价格.astype('str')
- 6 请将上一问中的结果恢复成原来的四列。