综合练习

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

import pandas as pd
import numpy as np
df1 = pd.read_csv('zongzi.csv')
df1.head()
标题 价格 付款人数 店铺 发货地址
0 五芳斋粽子礼盒 心悦+18只装咸鸭蛋组合端午节礼品团购嘉兴肉粽子 129 6人付款 五芳斋官方旗舰店 浙江 嘉兴
1 北京稻香村端午粽子手工豆沙粽220g*2袋散装豆沙粽香甜软糯豆沙粽 44 8人付款 天猫超市 上海
2 五芳斋粽子礼盒装鲜肉咸蛋黄大肉粽嘉兴豆沙甜粽端午团购散装礼品 89.9 100万+人付款 五芳斋官方旗舰店 浙江 嘉兴
3 稻香私房鲜肉粽蛋黄肉粽嘉兴粽子咸鸭蛋礼盒装端午节送礼特产团购 138 1936人付款 稻香村食品旗舰店 北京
4 嘉兴粽子 蛋黄鲜肉粽新鲜大肉粽早餐散装团购浙江特产蜜枣多口味 3.8 9500+人付款 城城喂食猫 浙江 嘉兴

问题

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

df1.columns
Index(['标题', ' 价格', '付款人数', '店铺', '发货地址 '], dtype='object')
df1 = df1.dropna(subset=['发货地址 '])
#去除无效值
def inval(x):
    try:
        float(x)
        return True
    except:
        return False
def to_val(x):
    return float(x)
df1[' 价格'] = df1[df1[' 价格'].map(inval)][' 价格'].map(to_val)
df1[df1['发货地址 '].isin(['浙江 杭州'])].mean()
 价格    81.101453
dtype: float64

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

df0 = df1[df1['发货地址 '].map(lambda x:True if '嘉兴'not in x else False)]
df0[df0['标题'].map(lambda x:True if '嘉兴' in x else False)].shape[0]
1032

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

df1 = df1.dropna(subset=[' 价格','发货地址 '])
qcut = pd.qcut(df1[' 价格'],5)
df1.loc[:,'类别'] = qcut.cat.rename_categories([i for i in ['低','较低','中','较高','高']])
df1 = df1[['标题','类别', ' 价格', '付款人数', '店铺', '发货地址 ']].sort_values('类别',ascending=False)
df1.head()
标题 类别 价格 付款人数 店铺 发货地址
0 五芳斋粽子礼盒 心悦+18只装咸鸭蛋组合端午节礼品团购嘉兴肉粽子 129.0 6人付款 五芳斋官方旗舰店 浙江 嘉兴
3523 印象昆韵新品昆曲文化创意端午节胚芽糙米手工肉粽子端阳礼品礼盒 156.0 21人付款 印象昆韵 江苏 苏州
3548 锦华粽子瑞阳祥礼端午节礼盒新鲜嘉兴肉素六粒粽蛋卷组合送人礼品 110.6 36人付款 北京咏逢礼信商贸有限公司 北京
3547 礼券星巴克粽子券提货卡配送券星冰粽冰逸冰尚端午送礼品全国通用 158.0 122人付款 嘉谷食品专营店 北京
1472 广州陶陶居酒家九子连环肇庆裹蒸粽鲍鱼瑶柱海鲜粽咸肉粽子团购 218.0 5人付款 祁臻堂小马哥 广东 广州

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

df1[df1['付款人数'].isnull()].shape[0]
71

有缺失值

df1['付款人数'].map(replace)interpolate()
0           6.0
3523       21.0
3548       36.0
3547      122.0
1472        5.0
1474       53.0
1476       76.0
1480       40.0
1484       34.0
3539        9.0
1488        3.0
3535        9.0
1500       63.0
1506       26.0
3527       12.0
1509       57.0
1515      172.0
1468       90.0
3520        9.0
1541       20.0
1553       56.0
3513        2.0
1557      123.0
3510        4.0
1564      107.0
1567       16.0
1573       34.0
1580      971.0
3499        4.0
1582       44.0
         ...   
3682      132.0
3160      126.0
1123      132.0
2368      391.0
3680      122.0
3677       26.0
3676       80.0
3675       36.0
2365       85.0
3674      556.0
3686       23.0
2377      291.0
1159     3397.0
1154      511.0
1124       46.0
3152      351.0
1126      337.0
1127      323.0
1128      309.0
3708       88.0
1131      195.0
3153       38.0
3707      260.0
3706      234.0
3154      210.0
3700       48.0
3698       30.0
3697      988.0
3155    15000.0
1025      641.0
Name: 付款人数, Length: 4398, dtype: float64
df1['付款人数'].map(replace).interpolate
df1['付款人数'].map(replace)interpolate
df1['付款人数'].interpolate
def replace(x):
    try:
        x = str(x)
        if '万' in x:
            i = x.index('万')
            return float(x[:i])*10000
        if '+'in x:
            i = x.index('+')
        elif '人'in x:
            i = x.index('人')
        else:
            return None
        return int(x[:i])
    except:
        print(x)
        return None
df1['付款人数'] = df1['付款人数'].map(replace)
df1 = df1.set_index(' 价格')
df1['付款人数'] = df1['付款人数'].interpolate(method='index')
df1.columns
Index(['标题', '类别', '付款人数', '店铺', '发货地址 '], dtype='object')
df1 = df1.reset_index().loc[:,['标题', '类别',' 价格', '付款人数', '店铺', '发货地址 ']]

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

df1.columns
Index(['标题', '类别', ' 价格', '付款人数', '店铺', '发货地址 '], dtype='object')
s = '商品发货地为' + df1[ '发货地址 ']+',店铺为'+df1['店铺']+',共计'+ df1[ '付款人数'].map(int).map(str)+'人付款,单价为'+df1[' 价格'].map(str)+'元'
s.head()
0      商品发货地为浙江 嘉兴,店铺为五芳斋官方旗舰店,共计6人付款,单价为129.0元
1         商品发货地为江苏 苏州,店铺为印象昆韵,共计21人付款,单价为156.0元
2    商品发货地为北京,店铺为北京咏逢礼信商贸有限公司,共计36人付款,单价为110.6元
3        商品发货地为北京,店铺为嘉谷食品专营店,共计122人付款,单价为158.0元
4        商品发货地为广东 广州,店铺为祁臻堂小马哥,共计5人付款,单价为218.0元
dtype: object

(6) 请将上一问中的结果恢复成原来的四列。

s = s.str.split(',',expand=True).rename(columns={0:'发货地',1:'店铺',2:'付款人数',3:'价格'})
s['发货地'] = s['发货地'].map(lambda x:x[3:])
s['店铺'] = s['店铺'].map(lambda x:x[3:])
s['付款人数'] = s['付款人数'].map(lambda x:x[2:])
s['价格'] = s['价格'].map(lambda x:x[3:])
s.head()
发货地 店铺 付款人数 价格
0 货地为浙江 嘉兴 五芳斋官方旗舰店 6人付款 129.0元
1 货地为江苏 苏州 印象昆韵 21人付款 156.0元
2 货地为北京 北京咏逢礼信商贸有限公司 36人付款 110.6元
3 货地为北京 嘉谷食品专营店 122人付款 158.0元
4 货地为广东 广州 祁臻堂小马哥 5人付款 218.0元

热门文章

暂无图片
编程学习 ·

利用BootStrap创建搜索框--」详解

今天学了bootstrap由于官网上没有搜索框,我要做一个网站正好需要,我就自己做了一个搜索框,话不多说直接上代码下面是jsp代码<div class="col-sm-5" id="so"><div class="input-group"><input type="text" class="…
暂无图片
编程学习 ·

从入门到删库跑路的过程

数据库简介数据库的发展史萌芽阶段:文件系统使用磁盘文件来存储数据初级阶段:第一代数据库出现了网状模型、层次模型的数据库中级阶段:第二代数据库关系型数据库和结构化查询语言高级阶段:新一代数据库关系-对象 型数据库NoSQL非关系数据库:Not Only SQL 数据库管理系统 数…
暂无图片
编程学习 ·

如何用Nearby Service开发针对附近人群的精准广告推送功能

当你想找一家餐厅吃饭,却不知道去哪家,这时候手机跳出一条通知,为你自动推送附近优质餐厅的信息,你会点击查看吗?当你还在店内纠结于是否买下一双球鞋时,手机应用给了你发放了老顾客5折优惠券,这样的广告你有拒绝的理由吗?这样的广告不仅不会引起用户的厌烦,还满足了用…
暂无图片
编程学习 ·

电商新手做亚马逊要怎样开始?

"说到互联网创业,很多人的第一个想到的是淘宝,但是很多人并不清楚,经过十几年的发展淘宝已经很难再进入了,利润也是下降到了最低,很多的卖家都在寻找机会做转型,而你一个毫无经验的小白现在进入,基本可以说很难生存,近年来,我国的跨境电子商务进入迅猛的发展阶段,…
暂无图片
编程学习 ·

springboot 整合xcf 发布 webservice

Spring Boot集成webService在pom添加依赖<!--WerbService CXF依赖 start--> <dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-frontend-jaxws</artifactId> </dependency> <dependency><groupId>org.…
暂无图片
编程学习 ·

从零开始学Python:第七课-关于分支和循环结构的应用

通过上两节课的学习,大家对Python中的分支和循环结构已经有了感性的认识。分支和循环结构的重要性不言而喻,它是构造程序逻辑的基础,对于初学者来说也是相对困难的部分。大部分初学者在学习了分支和循环结构后都能理解它们的用途和用法,但是遇到实际问题的时候又无法下手;…
暂无图片
编程学习 ·

趣谈:C++中引用和只指针的区别

1.引用必须初始化,不可以为空,不可以null;指针可以位NULL,可以在任何时候初始化. 2.引用一生只爱一次,一生只爱一个人,一旦绑定一个对象,就不能换对象;指针是情场老手,可以随意的更换对象. 3.引用沉溺爱情,丧失了自己,如果使用sizeof(&),返回的是他对象的大小,而指针是他自…
暂无图片
编程学习 ·

设计模式学习——单例模式

一、单例模式的概念1.1 概念单例模式是指 确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点。单例模式的特点是隐藏其所有的构造方法。属于创建型模式。1.2 单例模式的适用场景确保任何情况下都绝对只有一个实例。例如ServletContext、ServletConfig、Applicat…
暂无图片
编程学习 ·

Linux彻底卸载Nginx

本机环境:centos7使用yum安装的Nginx1.首先输入命令 ps -ef | grep nginx检查一下nginx服务是否在运行。[root@localhost /]# ps -ef |grep nginx root 3163 2643 0 14:08 tty1 00:00:00 man nginx root 5427 1 0 14:50 ? 00:00:00 nginx: m…
暂无图片
编程学习 ·

记录一下开始搭建springboot+jsp项目遇到的一个问题

记录一下开始搭建springboot+jsp项目遇到的一个问题简述自己搭建项目的过程错误及解决总结加补充 最近刚开始学习搭建springboot项目,用到的ide工具是idea,前端用的是jsp 简述自己搭建项目的过程 直接上图在idea中创建一个springboot项目,选择好自己使用的jdk 刚创建好的项目…
暂无图片
编程学习 ·

TomCat学习笔记(1)--裸Tomcat框架实现和IDEA实现的比较

TomCat是什么不多说了,这里是用来记录我学习TomCat的操作与心路历程 本文对比演示用纯Tomcat和用IDEA集成开发同样的页面效果的两种方法。 在不用IDEA集成开发环境时稍微学习了一些tomcat,能写出一个界面并且用get、post函数试着传递数据。(在下文介绍一下流程并给予简单分析…
暂无图片
编程学习 ·

数据结构之查找(期末复习)

【知识框架】一、查找的基本概念 1、查找表 查找表是由同一类的数据元素(或记录)构成的集合。集合中的数据元素之间存在着完全松散的关系,因此查找表是一种非常灵便的数据结构。 2、关键字 关键字是数据结构(或记录)中某个数据项的值,用它可以标识一个数据元素(或记录)…
暂无图片
编程学习 ·

理论:深度介绍OSPF路由协议

目录前言1 OSPF路由协议概述1.1 内部网关协议和外部网关协议1.2 OSPF协议1.3 链路状态协议工作原理简介1.4 OSPF的工作过程2 OSPF的基本概念2.1 OSPF区域2.2 区域ID2.3 骨干区域Area 02.4 非骨干区域2.5 Router ID2.6 Router ID选取规则2.7 DR和BDR3 Router-id及DR选举原则4 OS…
暂无图片
编程学习 ·

C语言求两个数的最大公约数

#include<stdio.h> int main () {int i,j,t;scanf("%d %d",&i,&j);int m;if(i>j)//比较两者大小,让i存储两者较小的数; {t=i; //如果I>J,i j 位置互换 i=j;j=t;}for(m=i;m>0;m--)//因为两数的最大公约数必然是比两数最大的数字小,可能小于…
暂无图片
编程学习 ·

路由策略与路径控制

一.Passive-interface 1. RIP/IGRP 在指定接口不向外发送路由更新,但是接收路由更新 2. EIGRP 在指定接口不向外发送Hello消息,而且通过这个接口不与其他路由器建立邻居关系,不发送其他EIGRP的数据流 3. OSPF 在指定接口不向外发送Hello消息,而且通过这个接口不与其他路由器…
暂无图片
编程学习 ·

【DevOps】云原生(Cloud Native)

云原生 Pivotal 是云原生应用的提出者,并推出了Pivotal Cloud Foundry 云原生应用平台和 Spring 开源 Java 开发框架,成为云原生应用架构中先驱者和探路者。 云原生的概念历经了许多个版本的迭代,到了2015年Google主导成立了云原生计算基金会(CNCF),对云原生的定义为: 云…
暂无图片
编程学习 ·

Eclipse中Java文件图标由实心J变成空心J的问题

这里写自定义目Eclipse中Java文件图标由实心J变成空心J的问题录标题 在eclipse中空心J的java文件,表示不被包含在项目中进行编译,而是当做资源存在项目中。例如 当是单个文件为空心J的时候 1.右击该文件 – >BuildPath -->Include (如果没有includ这个选项可以采用别…
暂无图片
编程学习 ·

文字后面显示展开或者收取

文字后面显示展开或者收取 在文字显示时,可能有这样的要求,例如,限制文字为3行,超过3行后,在文字最后显示"查看更多" 在网络上搜索了下,有如下的几种方式来实现: 1.开源控件,使用TruncationTokenYYLabel 点击展开和收起全文 展开label,利用YYText实现文字显…