用python处理Excel数据,实现Excel的功能:分列、透视等功能

1. Excel 解压文件

#解压tar_path中的压缩文件到uzipPath
def unzip_archive(tar_path):
print('#######解压文件夹,',tar_path)
for i in os.listdir(tar_path):
if i.endswith('zip'):
print(i)
shutil.unpack_archive(tar_path + "/" + i,unzipPath)

2. Excel的基本打开读写、获取列

常见的Excel操作包括xlrd、pandas、xlwings,基本操作包括打开、读取、获取单元格值、写入等

xlrd

data = xlrd.open_workbook(i)  # 打开表
sheet = data.sheet_by_index(0) # 按照index获取工作簿
sheet = data.sheet_by_name('sheet1') # 按照工作簿名获取工作簿
nrows = sheet.nrows # 获取行数
ncols = sheet.ncol # 获取列数
row_value = sheet.row_values(i)
col_value = sheet.col_values(j)

用xlsxwriter写入到Excel

划重点:write_row(row,col,data) 用了enumerate自动匹配索引和迭代的值

#将alist写入tarfile的名为name的工作簿中
def insert_file(alist,tarfile,name='sheet1'):
print("####将透视表写入到",tarfile)
wh = xlsxwriter.Workbook(tarfile)
wadd = wh.add_worksheet(name)
if len(alist) > 0 :
for row_num,row_data in enumerate(alist):
wadd.write_row(row_num,0,row_data)

补充:enumerate的用法

enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标

代码是示意结果

https://www.runoob.com/python/python-func-enumerate.html

alist = [['1','1-1'],['2','2-2'],['3','3-3']]
for row_num, row_data in enumerate(alist):
print(row_num,row_data)

pandas

xlwings

xlwings的好处在于可以直接获得某列的指定位置的数据,缺点是 默认自动打开读取的文件,甚至关了运行程序后台还是显示这个文件是打开的……

设置visible之后 只是前段看不见,但是默认的还是会打开……

但是在获取数据上还是很方便的

import xlwings as xw
app = xw.App(visible=True, add_book=False)
wb = app.books.open(file) #打开file
sht = wb.sheets[0]
dateLong = sht.range(f'H3:H{nrows}').value

3.数据透视表

    # 根绝tarfile生成数据透视表
df = pd.read_excel(tarfile)
pd.pivot_table(df,index=[u'日期',u'首次访问'],values=[u'手机',u'会话效果'],aggfunc=[np.count_nonzero,np.count_nonzero])

参考链接:https://www.cnblogs.com/Yanjy-OnlyOne/p/11195621.html

但是这种方法写出的透视表数据不美观,后续需要调整,所以自己写了个计数算法

算法思想是:空为0非空为1,计算

    lista = [[0 if temp=='' else 1 for temp in list] for list in a]
for i in range(len(a)):
kl = a[i][:2]
if type(kl[0]) == float or type(kl[0]) == int:
kl[0] = getdate(kl[0]) # 从数字型日期转为字符串型日期 key = (kl[0], kl[1]) #前两列作为做透视的key
val = lista[i][2:] #h后两列是值
if key not in dicta.keys():
dicta[key] = val
else:
raw = dicta[key]
dicta[key] = [raw[i] + val[i] for i in range(len(raw))]
result = [list(key) + dicta[key] for key in dicta.keys()]

4. 获取文件内的所有文件

def get_filename(tar_path):
for root,dirs,files in os.walk(tar_path):
for i in files:
if i.endswith('xls') or i.endswith('xlsx'):
print(i)
dir.append(tar_path + "/" + i)
print('#####解压后的Excel文件',dir)
return dir

这里深入了解了os的几个常用函数,包括获取指定目录下的文件、

#获取指定目录下的文件夹或文件的名字列表
a = os.listdir(path)
print(a) # 打开文件
f = os.open("",os.O_RDWR|os.O_CREAT)
os.write(f,"this is test") #重命名
os.rename(src,dst)
os.renames(old,new) #递归地更名
#删除
os.remove(path)
os.removedirs(path) #删除递归目录
#遍历目录
os.walk()

【python操作Excel的常见方法汇总】 xlrd pandas xlwings的更多相关文章

  1. python操作excel(xlwt写,xlrd读)基本方法

    python操作excle在测试工作中还是很有用的,比如读取测试数据,回写测试结果到excel. 1.安装 pip install xlwt pip install xlrd 2.写excel # 导 ...

  2. Python操作excel的几种方式--xlrd、xlwt、openpyxl

    openpyxl xlrd xlwt   在处理excel数据时发现了xlwt的局限性–不能写入超过65535行.256列的数据(因为它只支持Excel 2003及之前的版本,在这些版本的Excel中 ...

  3. python操作excel常用的方法

    读操作模块安装 pip install xlrd 写操作模块安装 pip install xlwt xlrd读操作 1.打开excel xl = xlrd.open_workbook('test.xl ...

  4. Python操作excel工具

    python操作excel的工具类有很多,下面举几个常见的工具类: 一. 1.xlrd 只能读取excel操作,支持xls和xlsx两种格式的 2.xlwt 只能写入excel操作,只支持 xls格式 ...

  5. 自动化办公:python操作Excel

    1.安装 -- upgrade pippython -m pip install --- install pypipip install pypi 执行python setup.py install进 ...

  6. python操作excel表格(xlrd/xlwt)

    最近遇到一个情景,就是定期生成并发送服务器使用情况报表,按照不同维度统计,涉及python对excel的操作,上网搜罗了一番,大多大同小异,而且不太能满足需求,不过经过一番对源码的"研究&q ...

  7. Python操作excel(xlrd和xlwt)

    Python操作excel表格有很多支持的库,例如:xlrd.xlwt.openpyxl.win32com,下面介绍使用xlrd.xlwt和xlutils模块这三个库不需要其他的支持,在任何操作系统上 ...

  8. 【转】python操作excel表格(xlrd/xlwt)

    [转]python操作excel表格(xlrd/xlwt) 最近遇到一个情景,就是定期生成并发送服务器使用情况报表,按照不同维度统计,涉及python对excel的操作,上网搜罗了一番,大多大同小异, ...

  9. python操作excel xlrd和xlwt的使用

    最近遇到一个情景,就是定期生成并发送服务器使用情况报表,按照不同维度统计,涉及python对excel的操作,上网搜罗了一番,大多大同小异,而且不太能满足需求,不过经过一番对源码的"研究&q ...

  10. 转载:python操作excel表格(xlrd/xlwt)

    python操作excel表格(xlrd/xlwt)   最近遇到一个情景,就是定期生成并发送服务器使用情况报表,按照不同维度统计,涉及python对excel的操作,上网搜罗了一番,大多大同小异,而 ...

随机推荐

  1. 结合商业项目深入理解Go知识点

    这篇文章比较硬核,爆肝5千字,把之前整理的知识点都串起来了.建议先收藏,慢慢看. 前言 上一篇文章 #[Go WEB进阶实战]开源的电商前后台API系统 很受大家欢迎,有好多小伙伴私信我问题:&quo ...

  2. 使用Git提交代码

    目录 1.提交前准备工作 2.代码提交步骤 3.从git上面拉代码 4.Git变更集 5.参考资料 1.提交前准备工作 首先去git官网下载git工具(Git GUI Here.Git Bash He ...

  3. Kali Pi 安装 RTL8812AU驱动

    今天,我们来实操安装一下昨天的RTL8812​的无线网卡驱动. 说明 我们今天使用的网卡是磊科的NW392无线网卡,其主要核心为NW392. 一张32G内存卡 树莓派为树莓派4B 4G-RAM 系统为 ...

  4. NC14501 大吉大利,晚上吃鸡!

    题目链接 题目 题目描述 最近<绝地求生:大逃杀>风靡全球,皮皮和毛毛也迷上了这款游戏,他们经常组队玩这款游戏. 在游戏中,皮皮和毛毛最喜欢做的事情就是堵桥,每每有一个好时机都能收到不少的 ...

  5. Git操作不规范,战友提刀来相见!

    年终奖都没了,还要扣我绩效,门都没有,哈哈. 这波骚Git操作我也是第一次用,担心闪了腰,所以不仅做了备份,也做了笔记,分享给大家. 文末留言,聊聊你的年终奖. 问题描述 小A和我在同时开发一个功能模 ...

  6. [C++]vector内存的增长机制

    例子 #include <iostream> #include<vector> #include<algorithm> #include "CPPDemo ...

  7. excel文件 实现自动处理数据的功能

    目录 问题描述: 解决方案: 一.SQL查询 二.SQL.python处理 三.python处理 四.优化python处理 1.手动执行代码 2.开机自动执行代码 对比四种方案: 总结: 问题描述: ...

  8. java入门与进阶P-6.1+P-6.2

    字符类型 字符型char在Java语言中占用 2 个字节,char类型的字面量必须使用半角的单引号括起来,取值范围为[ 0 - 65535 ],char 和 short 都占用 2 个字节,但是 ch ...

  9. OpenMP For Construct dynamic 调度方式实现原理和源码分析

    OpenMP For Construct dynamic 调度方式实现原理和源码分析 前言 在本篇文章当中主要给大家介绍 OpenMp for construct 的实现原理,以及与他相关的动态库函数 ...

  10. (一)Abp入门

    ABP 是用于创建现代Web应用程序的完整体系结构和强大的基础架构,遵循最佳实践和约定,为 您提供 SOLID 开发经验. 目前 ABP 的版本   ASP.NET Boilerplate ASP.N ...