Python 处理Excel内的数据(案例介绍*2)
(一)案例一介绍
现在有一匹电商产品跟当日销量的数据,如下,总共有上万笔的数据,现在需要统计每个品牌当日的销售量,比如美宝莲今天总共卖出了多少的商品,另外需要统计每个品牌下面的每个子品类当日销售量(品类可分为口红、睫毛膏、粉底等),比如卡姿兰口红卖了多少、眉笔卖了多少

首先是要做出关键字码表,如下,这些是透过电商常用的产品称呼和观察发现的,需要对商品名称有一定的了解,比如欧莱雅的洁面膏其实就是洗面奶,

后面就是建立一个list,里面包含这些子品类,用这些关键字和品牌名称在商品列表逐一做匹配,比如商品里有“卡姿兰”又有“口红”的,再将符合的商品销售数量累加,输出至excel里,就可以完成统计,代码如下
import xlrd
import xlwt
readbook = xlrd.open_workbook(r'brand.xlsx')
sheet = readbook.sheet_by_index(0)
cols1=sheet.col_values(0)
cols2=sheet.col_values(1)
workbook = xlwt.Workbook(encoding='utf-8')
worksheet = workbook.add_sheet('result')
#建立子品类清单
items = ['眉笔','口红','眉粉','眼线笔','睫毛膏','粉饼','唇彩','散粉','眼影','唇釉','腮红','BB霜','粉底液','卸妆水','隔离霜','面霜','香水']
k = -1
b = 0 #b是记录总数
for item in items:
a = 0 #a是某个子品类的数目
array = []
i = -1
k = k+1
for col in cols1:
i = i + 1
if (item in col) and ('卡姿兰' in col): #商品名称里包含list里面的子品类和卡姿兰
array.append(i)
for n in array:
a = a+ cols2[n]
print(item)
print(a)
b = b+a
worksheet.write(k,0,item)
worksheet.write(k,1,a)
worksheet.write(k+1,0,'总数')
worksheet.write(k+1,1,b)
workbook.save('result.xls')
最后将输出的结果做图展示

(二)案例二介绍
在一个项目中我们需要对用户的终端机器进行统计,可是接口传回的数据如下图,同样是IPhone却有上万种写法,除了IPhone外,其他的安卓手机像是华为、OPPO、VIVO、小米等都有类似的情况,现在需要将这些分散的数据识别出,并加以统计

流程为:
1、用关键字对表内的内容进行查找,将包含关键字的行记录。
2、将包含关键字行第二列的数据进行加成,并且统计
3、输出到新的文档里
首先我们需要先制作一个关键字码表,如下图,我们将4大安卓机外的安卓机合计到安卓里面

接着,用xlrd读取excel,用码表内的关键字跟第一列的数据进行匹配,符合匹配的将第二列的数字加总,最后用xlwt输出到excel文件里,实现代码如下
import xlrd
import xlwt
readbook = xlrd.open_workbook(r'phone.xlsx')
sheet = readbook.sheet_by_index(0)
cols1=sheet.col_values(0)
cols2=sheet.col_values(1)
i = -1
a = 0 #记录数目
array = []
keywords = ['iphone', 'iPhone', '苹果', 'Iphone', 'iOS']
for col in cols1:
i = i + 1
for word in keywords: #匹配清单内的关键字
if word in col:
array.append(i)
for n in array:
a = a+ cols2[n]
print(a)
workbook = xlwt.Workbook(encoding='utf-8')
worksheet = workbook.add_sheet('test')
worksheet.write(1,1,a)
workbook.save('phone1.xls')
最后用EXCEL作图,就可以完成用户数据统计

Python 处理Excel内的数据(案例介绍*2)的更多相关文章
- 使用Python将Excel中的数据导入到MySQL
使用Python将Excel中的数据导入到MySQL 工具 Python 2.7 xlrd MySQLdb 安装 Python 对于不同的系统安装方式不同,Windows平台有exe安装包,Ubunt ...
- Python的Excel操作及数据可视化
Excel表操作 python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库. 安装xlrd pip install xlrd 简单的表格读取 ...
- Python向excel中写入数据的方法 方法简单
最近做了一项工作需要把处理的数据写入到Excel表格中进行保存,所以在此就简单介绍使用Python如何把数据保存到excel表格中. 数据导入之前需要安装 xlwt依赖包,安装的方法就很简单,直接 p ...
- 转载: pyExcelerator(Python操作Excel内库)API 文档
1.pyExcelerator 主要通过俩个Object操作Excel: Workbook 和Worksheet2.pyExcelerator 读取Excel文件 parase_xls(filenam ...
- Python读取excel表的数据
from openpyxl.reader.excel import load_workbook #读取xlsx文件def readExcelFile(path): dic={} #打开文件 file= ...
- Python读取Excel中的数据并导入到MySQL
""" 功能:将Excel数据导入到MySQL数据库 """ import xlrd import MySQLdb # Open the w ...
- python中的内置函数getattr()介绍及示例
在python的官方文档中:getattr()的解释如下: ? 1 2 3 getattr(object, name[, default]) Return the value of the nam ...
- python读取excel中的数据
import numpy as np import matplotlib.pyplot as plt import pandas as pd #df = pd.read_excel('/Users/N ...
- python读取excel表格中的数据
使用python语言实现Excel 表格中的数据读取,需要用到xlrd.py模块,实现程序如下: import xlrd #导入xlrd模块 class ExcelData(): def __init ...
随机推荐
- WebStorm使用参考手册
WebStorm 是 JetBrains 推出的一款商业的 JavaScript 开发工具 任何一个编辑器都需要保存(ctrl + s),这是所有win平台上编辑类软件的特点,但是webstorm编辑 ...
- GPU选型
1-基本概念 显存带宽 是指显示芯片与显存之间的数据传输速率,它以字节/秒为单位.显存带宽是决定显卡性能和速度最重要的因素之一. 2-常见GPU性能参数 GPU型号 单卡显存 cuda 计算能 ...
- 使用openssl 工具进行双向认证测试
1,双向认证测试(需要根证书,客户证书,服务器证书以及各自的私钥)(验证通信双方的身份) openssl s_server -accept -key certs/server.key -cert ce ...
- 原生js实现多个随机大小颜色位置速度小球的碰壁反弹
文章地址 https://www.cnblogs.com/sandraryan/ 需求:生成n个小球,让他们在一个大盒子中碰壁反弹,要求小球随机颜色,大小,初始位置,运动速度. 思路分析: 创建小球随 ...
- win10 uwp 手把手教你使用 asp dotnet core 做 cs 程序
本文是一个非常简单的博客,让大家知道如何使用 asp dot net core 做后台,使用 UWP 或 WPF 等做前台. 本文因为没有什么业务,也不想做管理系统,所以看到起来是很简单. Visua ...
- CF351E Jeff and Permutation
CF351E Jeff and Permutation 贪心好题 考虑每个对能否最小化贡献和 先不考虑绝对值相同情况 发现,对于a,b假设|a|<|b|,那么有无贡献只和b的正负有关!如果a在b ...
- python模块之模块导入
模块的导入 """ 模块的导入使用:模块导入一般都要放在代码的最上面 不同模块的导入顺序: 1 内置模块 2 扩展模块 3 自定义模块 """ ...
- H3C 多路径网络中环路产生过程(3)
- P1012 鸡兔同笼问题
题目描述 笼子里有鸡和兔若干,一直它们共有头 \(n\) 个,有脚 \(m\) 只,问笼中的鸡和兔共有多少只? 输入格式 输入包含两个整数 \(n,m(1 \le n \le 100, 2n \le ...
- element ui 批量删除
<el-table :data="tableData" stripe border style="width: 100%" @selection-chan ...