joyful-pandas(下)学习笔记——第10章 综合练习

joyful-pandas(下)学习笔记——第10章 综合练习

一、端午节的淘宝粽子交易

首先读取数据

data_Zongzi = pd.read_csv('Pandas(下)综合练习数据集/端午粽子数据.csv')
#记得之前jupyter对中文路径支持不太好,现在居然也可以直接用了
data_Zongzi

在这里插入图片描述

data_Zongzi.columns
#注意 ' 价格'和'发货地址 '列名中有空格
#其实可以直接把列名中的空格strip一下的,好蠢

Index([‘标题’, ’ 价格’, ‘付款人数’, ‘店铺’, '发货地址 '], dtype=‘object’)

(1) 请删除最后一列为缺失值的行,并求所有在杭州发货的商品单价均值。

data_Zongzi[data_Zongzi['发货地址 '].isna()]
#只有3行,挺少

data_Zongzi = data_Zongzi.dropna(subset=['发货地址 '],axis=0)
#直接用notnull似乎更简洁
data_Zongzi.info()
#满眼object,不详的预感~肯定有很多需要清洗的地方,特别是数字

在这里插入图片描述

#data_hangzhou = data_Zongzi[data_Zongzi['发货地址 '] == '浙江 杭州']
data_hangzhou = data_Zongzi[data_Zongzi['发货地址 '].str.contains('杭州')]
#两种思路得到的结果一致,太幸运~不知道不一致的话该以哪个为准了~
data_hangzhou.info()
#因为价格中含有非数字字符,所以不能直接转浮点,需要先清洗

在这里插入图片描述

data_hangzhou[' 价格'] = data_hangzhou[' 价格'].str.findall(r'\d+\.?\d*')
#直接用contains感觉会删掉既含有数字又含有非数字字符的行,遗漏一些有意义数据
data_hangzhou[' 价格'] = data_hangzhou[' 价格'].apply(lambda x:x[0]).astype('float')
#先找出数字列表再取出列表第0个值感觉有点笨,想不出更好的思路了
data_hangzhou[' 价格']

在这里插入图片描述

data_hangzhou[' 价格'].mean()

80.90088888888877

(2) 商品标题带有“嘉兴”但发货地却不在嘉兴的商品有多少条记录?

data_jiaxing = data_Zongzi[data_Zongzi['标题'].str.contains('嘉兴')]
data_jiaxing
#写一步看一步

在这里插入图片描述

data_jiaxing = data_jiaxing[data_jiaxing['发货地址 '].str.contains('嘉兴') == False]
data_jiaxing

在这里插入图片描述

(3) 请按照分位数将价格分为“高、较高、中、较低、低”5 个类别,再将类别结果插入到标题一列之后,最后对类别列进行降序排序。

data_Zongzi[' 价格'] = data_Zongzi[' 价格'].str.findall(r'\d+\.?\d*')
data_Zongzi[' 价格'] = data_Zongzi[' 价格'].apply(lambda x:x[0]).astype('float')
data_Zongzi[' 价格']
#先洗洗数据,大致看看

在这里插入图片描述

price_02 = data_Zongzi[' 价格'].quantile(q=0.2)
print(price_02)
price_04 = data_Zongzi[' 价格'].quantile(q=0.4)
print(price_04)
price_06 = data_Zongzi[' 价格'].quantile(q=0.6)
print(price_06)
price_08 = data_Zongzi[' 价格'].quantile(q=0.8)
print(price_08)
price_1 = data_Zongzi[' 价格'].quantile(q=1)
print(price_1)
#赋值一下方便使用

22.8
39.8
60.0
106.12000000000008
1780.0

data_Zongzi['类别结果'] = pd.cut(data_Zongzi[' 价格'], [0,price_02,price_04,price_06,price_08,price_1],  labels=['低','较低','中','较高','高'])
#用cut创建分类类型数据列“类别结果”
data_Zongzi = data_Zongzi.reindex(columns=['标题','类别结果', ' 价格', '付款人数', '店铺', '发货地址 '])
#对列重新排序,把分类列插到标题列之后
data_Zongzi

在这里插入图片描述

data_Zongzi = data_Zongzi.sort_values(by='类别结果',ascending=False)
#使用cut创建的列默认有序,所以直接sort
data_Zongzi

在这里插入图片描述

本文是对joyful-pandas教程的学习思考,感谢GYH大佬的分享!感谢Datawhale的学习组织!
joyful-pandas教程地址http://dwz.date/aZCT
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值