作为一名苦逼的打杂人员,经常要为N个部门做些统计工作,包括但不限于工作量统计、收入统计、服务质量统计。

数据格式集中在EXCEL,通常包含一个索引列,根据这个列获得一些属性数据,比如人员对应工作量等。

长长一串事务脚本通常太过ugly and dirty,Pandas有用牛刀杀鸡之嫌。

于是资深处女座精神洁癖发作,用xlrd搞了一个excel类,日常作些计数、求和、求平均的业务,还算得心应手。

PS:Xlrd新版支持.xlsx了,赞一个

直接上代码吧~

import xlrd

from collections import defaultdict, Counter

class ExcelData():

#指定excel文件位置以及索引列的名字

def __init__(self, xlsx_path, index_col=''):

workbook = xlrd.open_workbook(xlsx_path)

self.worksheet = workbook.sheet_by_index(0)

self.nrows = self.worksheet.nrows

self.ncols = self.worksheet.ncols

self.index_col = index_col

#近列名返回对应列的数据list

def get_col_by_name(self, col_name):

try:

index = self.worksheet.row_values(0).index(col_name)

except:

return None

# 返回列list,去除列名

return self.worksheet.col_values(index)[1:]

# 返回索引列及指定列的字典

def get_col_values(self, col_name):

index_col = self.get_col_by_name(self.index_col)

col = self.get_col_by_name(col_name)

return dict(zip(index_col, col))

# 指定列计数

def col_count(self, col_name):

col_values = self.get_col_by_name(col_name)

if not col_values:

r = None

else:

r = Counter(col_values)

return r

# 筛选列值按索引列计数

def index_col_count(self, col_name, filter=''):

c = defaultdict(int)

for i in range(self.nrows - 1):

if self.get_col_by_name(col_name)[i] == filter:

c[self.get_col_by_name(self.index_col)[i]] += 1

return c

# 指定列按索引列求和

def index_col_sum(self, col_name):

s = defaultdict(float)

for i in range(self.nrows - 1):

# 字典求和

s[self.get_col_by_name(self.index_col)[i]] += float(self.get_col_by_name(col_name)[i])

return s

# 指定列按索引列求平均

def index_col_avg(self, sum_dict):

a = defaultdict(float)

index_count = self.col_count(self.index_col)

for k, v in sum_dict.iteritems():

a[k] = v / index_count[k]

return a

python统计excel_Python操作excel做些统计相关推荐

  1. python连接excel_Python操作Excel

    使用python来操作Excel需要用到xlrd和xlwt这两个库,作用是在python中读取和写入excel数据,使用前需要安装和import导入: 1.Python 读 excel数据 使用Pyt ...

  2. 怎么python编程excel_Python操作excel

    python 读写 excel 有好多选择,但是,方便操作的库不多,在我尝试了几个库之后,我觉得两个比较方便的库分别是 xlrd/xlwt.openpyxl. 之所以推荐两个库是因为这两个库分别操作的 ...

  3. Python读取和操作Excel(.xlsx)文件

    Python读取和操作Excel(.xlsx)文件 使用openpyxl库来控制excel文件(即.xlsx为后缀的文件).这里介绍一下excel数据的结构. 打开excel文件后生成一个workbo ...

  4. Python中xlrd操作excel单元格

    学习目标 Python中xlrd操作excel单元格 学习内容 1.获取工作表 sheet=data.sheet_by_index(0) 2.返回单元格对象 sheet.cell(1,2) #返回第二 ...

  5. python 标准库 excel_Python 操作 Excel 的函数库

    1. Python 操作 Excel 的函数库 我主要尝试了 3 种读写 Excel 的方法: 1> xlrd, xlwt, xlutils: 这三个库的好处是不需要其它支持,在任何操作系统上都 ...

  6. python提取内容保存excel_Python操作Excel之数据提取

    最近发现excel数据量极大,并且通过简单的数据操作不能提取到我需要的数据,如果单独操作,数据量太大耗时太长. 想着通过简单的方式,并且快速提取数据,就想到了Python. python操作Excel ...

  7. 【Python基础】python使用openpyxl操作excel

    1.openpyxl库介绍 openpyxl最好用的python操作excel表格库,不接受反驳: openpyxl官网链接:openpyxl官网 openpyxl只支持[.xlsx / .xlsm ...

  8. python创建excel_python创建Excel文件数据的方法

    原博文 2018-12-07 18:41 − # -*- coding: utf-8 -*- # @Time : 2018/12/6 17:10 # @Author : suchao # @Disc: ...

  9. csv文件怎么转成excel_Python操作Excel文件(1):花式大师pyexcel

    本文共2900余字,预计阅读时间12分钟,本文知乎连接:Python操作Excel文件(1):花式大师pyexcel,本文同步发布于silaoA的博客和微信公众号平台. 关注学习了解更多的Cygwin ...

最新文章

  1. iOS 10道细节面试题
  2. 设计模式 — 行为型模式 — 解释器模式
  3. 爱立信:用什么保持全球老大的地位?
  4. 基于FPGA的AES加解密读写控制系统,实现FLASH内部读写内容的销毁功能
  5. hdu1532(最大流裸题)
  6. Linq表达式、Lambda表达式你更喜欢哪个?
  7. mysql交叉连接后生成的记录总数_4.mysql数据库创建,表创建模等模板脚本,mysql_SQL99标准的连接查询(内连接,外连接,满外连接,交叉连接)_MySQL...
  8. Metro风格的Android界面应用
  9. 配置windows 2008 R2远程桌面授权,激活授权许可服务器
  10. servlet到mysql_在servlet中搜索代码到mysql?
  11. 【渗透】浅谈webshell隐藏
  12. 互联网晚报 | 12月2日 星期四 | 荣耀60系列正式发布;高通发布全新一代骁龙8移动平台;新东方在线布局教育智能硬件...
  13. Java 调用SAP PI PO 的Rest JSON接口
  14. 诗词大全给力版_亲测有效!小学生古诗词学习的教学攻略,附带教材推荐
  15. vr软件测试,如何进行VR可用性测试?
  16. 微信公众号开发之获得素材列表
  17. 再谈宋星博客的留言与seo培训联盟
  18. Sneaky Sasquatch Mac(捣蛋大脚怪搞怪冒险游戏)
  19. java socket / IM / Message / chat / liaotian / xmpp
  20. Paddle 点灯人 之 Tensor

热门文章

  1. Fig. BPF Performance Tools Book
  2. Redis:使用Redis的分布式锁
  3. OpenCV学习笔记:绘图指令(矩形、圆、线、文本标注)
  4. git新建账号_github 账号创建
  5. 没有为此文件配置应用程序上下文_如何在macOS中管理文件关联?
  6. Python String:一文彻底粉碎字符串
  7. 使用datepickerdialog提示is undefined错误_23.5 使用视图
  8. nodejs异常处理
  9. python 多进程 调用模块内函数_进程创建fork()和multiprocessing模块Process类
  10. 信息论霍夫曼编码c语言,Huffman 信息论与编码 - 下载 - 搜珍网