欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

pandas实例(端午节淘宝粽子交易问题)

程序员文章站 2022-06-12 12:17:43
练习一、端午节淘宝粽子交易问题:(1) 请删除最后一列为缺失值的行,并求所有在杭州发货的商品单价均值。(2) 商品标题带有“嘉兴”,但发货地却不在嘉兴的商品有多少记录?(3)请按照分位数将价格分为“高、较高、中、较低、低”5个类别,再将类别结果插入到标题一列后,最后对类别列进行降序排序。(4)付款人数一栏有缺失值吗?若有则请利用上一问的分类结果对这些缺失值进行合理估计并填充(5)请将数据后四列合并为如下格式的Series:商品发货地为XX,店铺为XX,共计XX人付款,单价为XX。(6)请将上一问中的结果恢复...

练习一、端午节淘宝粽子交易问题:
(1) 请删除最后一列为缺失值的行,并求所有在杭州发货的商品单价均值。
(2) 商品标题带有“嘉兴”,但发货地却不在嘉兴的商品有多少记录?(3)请按照分位数将价格分为“高、较高、中、较低、低”5个类别,再将类别结果插入到标题一列后,最后对类别列进行降序排序。
(4)付款人数一栏有缺失值吗?若有则请利用上一问的分类结果对这些缺失值进行合理估计并填充
(5)请将数据后四列合并为如下格式的Series:商品发货地为XX,店铺为XX,共计XX人付款,单价为XX。
(6)请将上一问中的结果恢复成原来的四列。 第一问:请删除最后一列为缺失值的行,并求所有在杭州发货的商品单价均值。

##删除发货地为缺失值的行
import pandas as pd
import numpy as np
df = pd.read_csv('data/table_damplings.csv',encoding='gbk')
#df.rename(columns={'标题':'name','价格':'price','付款人数':'number','店铺':'shop','发货地址':'address'},inplace=True)
df.columns=["name","price","number","shop","address"] df[df['address'].isna()].dropna(axis=0,how='any') ##求在杭州发货的商品单价均值df_1 = df[df['address']=='浙江 杭州']
df_1['price'] = pd.to_numeric(df_1['price'])df_1['price'].mean()
##结果为80.90088888

第二问:商品标题带有“嘉兴”,但发货地却不在嘉兴的商品有多少记录?
这里我使用的是比较笨的方法,当时不知道不等于怎么写,就用名字包含嘉兴的商品记录数减去发货地在浙江嘉兴的了

df_2 = df[df['name'].str.contains('嘉兴')]
df_3 = df_2[df_2['address'] == '浙江 嘉兴']
len(df_2)-len(df_3)

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

bins = df['price'].quantile(np.linspace(0,1,6)).tolist()
cuts = pd.cut(df['price'],bins=bins,labels=['低','较低','中','较高','高']) 
#可选label添加自定义标签
df['cuts'] = cuts
df.head()
df_2 = df.sort_values(by=['cuts'],ascending=False)
df_2.head()

pandas实例(端午节淘宝粽子交易问题)
第四问:付款人数一栏有缺失值吗?若有则请利用上一问的分类结果对这些缺失值进行合理估计并填充。
答:有缺失值,71个。

df['number'].isna().sum()
df_2['number'].fillna(method='ffill')  ###选择向前填充
df_2.head()

第五问:请将数据后四列合并为如下格式的Series:商品发货地为XX,店铺为XX,共计XX人付款,单价为XX。

df_2['infor'] = "商品发货地为"+df_2['address'].map(str)+' , '+"店铺为"+df_2['shop'].map(str)+' , '+"共计人付款"+df_2['number'].map(str)+' , '+"单价为"+df_2['price'].map(str)
df_2.head()

pandas实例(端午节淘宝粽子交易问题)第六问:请将上一问中的结果恢复成原来的四列。

pd.concat([df_2,df_2['infor'].str.split(',',expand=True)],axis = 1).head()

本文地址:https://blog.csdn.net/llliual/article/details/107062879