端午节淘宝粽子交易

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

刚刚考完试来做题做了一晚上一道题都没做完全,先提交打卡了,后面再慢慢补。

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

import pandas as pd
import numpy as np
df = pd.read_csv(r'data\端午粽子数据.csv')
df.head()
标题 价格 付款人数 店铺 发货地址
0 五芳斋粽子礼盒 心悦+18只装咸鸭蛋组合端午节礼品团购嘉兴肉粽子 129 6人付款 五芳斋官方旗舰店 浙江 嘉兴
1 北京稻香村端午粽子手工豆沙粽220g*2袋散装豆沙粽香甜软糯豆沙粽 44 8人付款 天猫超市 上海
2 五芳斋粽子礼盒装鲜肉咸蛋黄大肉粽嘉兴豆沙甜粽端午团购散装礼品 89.9 100万+人付款 五芳斋官方旗舰店 浙江 嘉兴
3 稻香私房鲜肉粽蛋黄肉粽嘉兴粽子咸鸭蛋礼盒装端午节送礼特产团购 138 1936人付款 稻香村食品旗舰店 北京
4 嘉兴粽子 蛋黄鲜肉粽新鲜大肉粽早餐散装团购浙江特产蜜枣多口味 3.8 9500+人付款 城城喂食猫 浙江 嘉兴
df.info()
df.columns
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4403 entries, 0 to 4402
Data columns (total 5 columns):
 #   Column  Non-Null Count  Dtype 
---  ------  --------------  ----- 
 0   标题      4403 non-null   object
 1    价格     4403 non-null   object
 2   付款人数    4332 non-null   object
 3   店铺      4403 non-null   object
 4   发货地址    4400 non-null   object
dtypes: object(5)
memory usage: 172.1+ KB





Index(['标题', ' 价格', '付款人数', '店铺', '发货地址 '], dtype='object')
df.columns = df.columns.str.strip()
df[df['发货地址'].isna()]
标题 价格 付款人数 店铺 发货地址
1847 贞丰胖四娘灰粽传统肉粽真空板栗鲜肉粽方便速食端午贵州粽子5只 46.8 41人付款 贵州原产地商品官方旗舰店 NaN
2418 素缤纷粽子140g*6入袋装净素素食纯素蔬食素粽早餐点心端午送礼 49.4 40人付款 素缤纷精致素食自助式餐厅 NaN
2716 辰颐物语热销嘉兴私房粽子10只礼盒装6味大粽荤素搭配送礼可团购 39.9 110人付款 水果达人多吃水果有益健康 NaN
df.dropna(axis=0,subset=['发货地址'],inplace=True)
df[df['发货地址'].isna()]
标题 价格 付款人数 店铺 发货地址
df[df['发货地址'].str.contains(r'杭州')]
标题 价格 付款人数 店铺 发货地址
15 【百草味-经典龙腾粽1460g】蛋黄肉甜粽子特产嘉兴粽端午整箱礼盒 78 2372人付款 百草味旗舰店 浙江 杭州
26 知味观端午节粽子甜粽咸蛋黄大肉粽礼盒装嘉兴味鲜肉粽子散装团购 64.9 8.5万+人付款 知味观官方旗舰店 浙江 杭州
53 知味观龙飞粽舞端午节粽子礼盒装礼品嘉兴口味鲜肉粽子绿豆糕团购 88 1355人付款 知味观官方旗舰店 浙江 杭州
71 知味观风俗志端午节粽子礼盒装送礼蛋黄鲜肉粽甜粽绿豆糕礼品团购 158 1333人付款 知味观官方旗舰店 浙江 杭州
89 知味观粽子新鲜大肉粽手工嘉兴口味鲜肉粽子懒人食品散装早餐速食 52.9 7500+人付款 知味观官方旗舰店 浙江 杭州
... ... ... ... ... ...
4355 知味观粽乐乐粽子礼盒装大肉粽蛋黄鲜肉粽豆沙甜粽嘉兴口味团购 79.9 21人付款 杭州知味观 浙江 杭州
4364 网易严选五彩缠角粽 中国粽礼盒装 1.2千克 粽子蛋黄肉粽真空新鲜 109 3人付款 网易严选美食馆 浙江 杭州
4375 妙维根板栗净素粽糙米藜麦全素粽子无糖低卡低gi代餐无油低脂饱腹 11.99 42人付款 xutong2080 浙江 杭州
4376 东方贺礼端午节礼盒嘉兴粽子高汤蛋黄鲜大肉粽特产现已支持定制 45_ 17人付款 缘来有礼 浙江 杭州
4397 知味观家乡知味粽子礼盒装端午节礼品杭州特产鸭蛋大礼包送礼福利 82 7人付款 韩丽丽92 浙江 杭州

180 rows × 5 columns

df[df['发货地址'].str.contains(r'杭州')].价格.astype('float').mean()
80.90088888888877

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

df[df['标题'].str.contains(r'嘉兴')&(~df['发货地址'].str.contains(r'嘉兴'))]
标题 价格 付款人数 店铺 发货地址
3 稻香私房鲜肉粽蛋黄肉粽嘉兴粽子咸鸭蛋礼盒装端午节送礼特产团购 138 1936人付款 稻香村食品旗舰店 北京
6 五芳斋华礼竹篮礼盒1360g蛋粽组合端午礼品嘉兴粽子礼盒 159 1028人付款 天猫超市 上海
8 真真老老嘉情礼盒10粽6蛋1.52kg/盒嘉兴粽子端午节粽子礼盒装 109 2117人付款 天猫超市 上海
9 五芳斋嘉兴粽子新鲜量贩蛋黄肉粽豆沙粽悦喜散装端午特产600g*2袋 59.9 1349人付款 天猫超市 上海
10 真真老老粽子臻芯800g/盒*1端午节礼盒装嘉兴特产送礼 75 1815人付款 天猫超市 上海
... ... ... ... ... ...
4377 超港端午粽子肉粽蜜枣粽大肉棕子黄山特产礼盒新鲜嘉兴粽子肉粽 39.9 67人付款 超港旗舰店 安徽 黄山
4383 真真老老真情粽子咸蛋礼盒嘉兴特产肉粽豆沙甜枣粽端午节团购批发 79.9 10人付款 曈宝食品专营店 上海
4386 臻味德嘉兴粽子竹篮礼盒装农家手工蛋黄鲜肉棕甜粽端午节伴手礼品 49.08 2人付款 气泡西柚屋 浙江 温州
4393 傅太粽子10只蛋黄肉粽鲜肉粽嘉兴风味肉粽子即食早餐端午团购 60.2 46人付款 love侯氏 江西 萍乡
4401 【粉丝专享】端午节特产新鲜蛋黄鲜肉粽豆沙嘉兴粽子800g/箱 65.9 149人付款 chaoge1931 安徽 合肥

1032 rows × 5 columns

df[df['标题'].str.contains(r'嘉兴')&(~df['发货地址'].str.contains(r'嘉兴'))].count()
标题      1032
价格      1032
付款人数     984
店铺      1032
发货地址    1032
dtype: int64

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

def is_number(x):
    try:
        float(x)
        return True
    except:
        return False
df[~df.价格.map(is_number)]
    
标题 价格 付款人数 店铺 发货地址
538 五芳斋粽子蛋黄鲜肉粽豆沙粽栗子肉棕子新鲜散装批发团购嘉兴肉粽 45.9. 1.0万+人付款 五芳斋官方旗舰店 浙江 嘉兴
4376 东方贺礼端午节礼盒嘉兴粽子高汤蛋黄鲜大肉粽特产现已支持定制 45_ 17人付款 缘来有礼 浙江 杭州
# df[~df.价格.map(is_number)].价格=[45.9,45]
df.loc[[538,4376],'价格'] = [45.9,45]
df[~df.价格.map(is_number)]
标题 价格 付款人数 店铺 发货地址
df['价格']=df['价格'].astype('float')
df['类别'] = pd.qcut(df.价格,[0,0.2,0.4,0.6,0.8,1.],labels=['低','较低','中','较高','高'])
df.head()
标题 价格 付款人数 店铺 发货地址 类别
0 五芳斋粽子礼盒 心悦+18只装咸鸭蛋组合端午节礼品团购嘉兴肉粽子 129.0 6人付款 五芳斋官方旗舰店 浙江 嘉兴
1 北京稻香村端午粽子手工豆沙粽220g*2袋散装豆沙粽香甜软糯豆沙粽 44.0 8人付款 天猫超市 上海
2 五芳斋粽子礼盒装鲜肉咸蛋黄大肉粽嘉兴豆沙甜粽端午团购散装礼品 89.9 100万+人付款 五芳斋官方旗舰店 浙江 嘉兴 较高
3 稻香私房鲜肉粽蛋黄肉粽嘉兴粽子咸鸭蛋礼盒装端午节送礼特产团购 138.0 1936人付款 稻香村食品旗舰店 北京
4 嘉兴粽子 蛋黄鲜肉粽新鲜大肉粽早餐散装团购浙江特产蜜枣多口味 3.8 9500+人付款 城城喂食猫 浙江 嘉兴
df.sort_values(by='类别',ascending=False)

标题 价格 付款人数 店铺 发货地址 类别
0 五芳斋粽子礼盒 心悦+18只装咸鸭蛋组合端午节礼品团购嘉兴肉粽子 129.00 6人付款 五芳斋官方旗舰店 浙江 嘉兴
847 真真老老蛋黄肉粽140g*60个新鲜大肉粽冷冻方便早餐嘉兴粽子端午 168.00 139人付款 tb6182109_2012 上海
2773 山西双合成粽子端午节送礼御粽膳坊礼盒粽叶板栗豆沙黄米杂粮粽 129.00 33人付款 双合成旗舰店 山西 晋中
2768 采芝斋粽子甜粽新鲜蛋黄大肉粽嘉兴口味鲜肉粽子食品端午礼盒定制 216.00 47人付款 采芝斋杭州专卖店 浙江 杭州
2763 真真老老臻瑞礼盒1.12kg/盒端午节粽子礼盒装送130g经典鲜肉粽 126.00 2人付款 天猫超市 上海
... ... ... ... ... ... ...
3637 新鲜粽叶包粽子的叶子干粽子叶大号竹子叶竹叶苇叶皮大鲜粽叶干种 4.00 617人付款 海倪食品专营店 广东 广州
2129 嘉兴五芳斋粽子 真空100克*2只紫米栗蓉粽端午节甜粽子 11.00 2897人付款 五芳斋官方旗舰店 浙江 嘉兴
2130 三珍斋蛋黄粽200g真空100g*2只嘉兴特产粽子速食早餐 7.88 NaN 天猫会员店 上海
2131 俏香阁经典鲜肉粽子120g*2只端午节嘉兴特产速食早餐点心 5.90 NaN 天猫会员店 上海
2916 甜粽子蜜枣粽端午送人礼品豆沙粽红豆赤豆粽方便早餐素棕散装团购 21.90 230人付款 集采食品专营店 浙江 嘉兴

4400 rows × 6 columns

(4) 付款人数一栏有缺失值吗?若有则请利用上一问的分类结果对这些缺失 值进行合理估计并填充。

df[df.付款人数.isnull()].head()
标题 价格 付款人数 店铺 发货地址 类别
183 五芳斋 140g*8只大粽子 福韵端午豆沙蜜枣蛋黄粽新包装送礼礼盒 50.9 NaN 天猫会员店 上海
243 五芳斋福雅五芳粽子礼盒端午咸甜粽子绿豆糕咸鸭蛋送礼 79.9 NaN 天猫会员店 上海 较高
347 【百草味】龙腾粽1090g 早餐大肉粽子湖州特产嘉兴粽 39.9 NaN 天猫会员店 上海
386 五芳斋华礼竹篮礼盒1360g蛋粽组合端午礼品嘉兴粽子礼盒 129.0 NaN 天猫会员店 上海
389 百草味 龙腾粽礼盒1460g 10只装早餐大肉粽子湖州特产嘉兴 49.9 NaN 天猫会员店 上海
s1=df[df.付款人数.notna()].付款人数
s1.astype('string')
0           6人付款
1           8人付款
2       100万+人付款
3        1936人付款
4       9500+人付款
          ...   
4398      347人付款
4399       80人付款
4400        5人付款
4401      149人付款
4402       20人付款
Name: 付款人数, Length: 4329, dtype: string
s12=s1[s1.str.contains(r'万')].str.extract(r'(\d+.?\d+?)万')
s12
0
2 100
11 2.0
14 70
26 8.5
36 10
... ...
1333 1.0
1646 1.5
1756 7.0
3155 1.5
3468 2.0

65 rows × 1 columns

s12=s12.astype('float')*10000
s12.head()
0
2 1000000.0
11 20000.0
14 700000.0
26 85000.0
36 100000.0
s13=s1[~s1.str.contains(r'万')].str.split('人付款',expand=True)[0].str.replace(r'\s+','').str.replace(r'+','').astype('int')
s13
0          6
1          8
3       1936
4       9500
5         17
        ... 
4398     347
4399      80
4400       5
4401     149
4402      20
Name: 0, Length: 4264, dtype: int32
len(s1)==len(s12)+len(s13)
True
s = pd.concat([s13,s12])
s.name = '付款人数'
s.head()
0
0 6.0
1 8.0
3 1936.0
4 9500.0
5 17.0
df2=df[df.付款人数.notna()][['类别','付款人数']].copy()
df2.update(s) # 使用处理后的付款人数更新非缺失值
# df2.info()#sort_values(by='付款人数')#.iloc[s42.index,:]
df2
类别 付款人数
0 6人付款
1 8人付款
2 较高 100万+人付款
3 1936人付款
4 9500+人付款
... ... ...
4398 347人付款
4399 较高 80人付款
4400 较高 5人付款
4401 较高 149人付款
4402 较高 20人付款

4329 rows × 2 columns

df2
类别 付款人数
0 6人付款
1 8人付款
2 较高 100万+人付款
3 1936人付款
4 9500+人付款
... ... ...
4398 347人付款
4399 较高 80人付款
4400 较高 5人付款
4401 较高 149人付款
4402 较高 20人付款

4329 rows × 2 columns

# df2.付款人数.astype('float').sort_index().interpolate(limit_direction='both')

猜你喜欢

转载自blog.csdn.net/weixin_45569785/article/details/107074577