使用Python处理Excel文件的一些代码示例
笔记:使用Python处理Excel文件的一些代码示例,以下代码来自于《Python数据分析基础》一书,有删改
#!/usr/bin/env python3
# 导入读取Excel文件的库,xlrd,其中的 open_workbook 为读取工作簿
from xlrd import open_workbook
input_file = 'D:\wangm\Documents\learning\code\python\data_row.xlsx'
# open_workbook(input_file) 打开一个工作簿
workbook = open_workbook(input_file)
# 输出此工作簿中有多少个表 workbook.nsheets
print('Number of worksheets: ', workbook.nsheets)
# 遍历工作簿中的每张表
for worksheet in workbook.sheets():
# 分别输出每张表的名字、行数、列数
print('Worksheet name: ', worksheet.name, '\tRows: ', worksheet.nrows, '\tColumns: ', worksheet.ncols)
# 处理单个工作簿
#!/usr/bin/env python3
# 导入读取Excel文件的库,xlrd,其中的 open_workbook 为读取工作簿
from xlrd import open_workbook
# 导入写工作簿的库
from xlwt import Workbook
input_file = 'D:\wangm\Documents\learning\code\python\data_row.xlsx'
output_file = 'D:\wangm\Documents\learning\code\python\data_out.xlsx'
# 创建一个Workbook对象
output_workbook = Workbook()
# 向output_workbook中添加一种名为'out_data_sheet_1'的表
output_wb_sheet = output_workbook.add_sheet('out_data_sheet_1')
with open_workbook(input_file) as workbook:
# 通过名字选取工作簿中的某个表,也可以使用索引值选定
worksheet = workbook.sheet_by_name('supplier_data')
# worksheet = workbook.sheet_by_index(0)
# 通过行、列索引值遍历工作簿中指定表的每一个值
for row_index in range(worksheet.nrows):
for column_index in range(worksheet.ncols):
# 向工作簿中的一个选取的表(output_wb_sheet)的通过索引指定的单元格(row_index, column_index)中写入一个值
output_wb_sheet.write(row_index, column_index, worksheet.cell_value(row_index, column_index))
# 将该工作簿保存为 output_file
output_workbook.save(output_file)
#!/usr/bin/env python3
# 导入读取Excel文件的库,xlrd,其中的 open_workbook 为读取工作簿
from xlrd import open_workbook
input_file = 'D:\wangm\Documents\learning\code\python\data_row.xlsx'
# open_workbook(input_file) 打开一个工作簿
workbook = open_workbook(input_file)
# 输出此工作簿中有多少个表 workbook.nsheets
print('Number of worksheets: ', workbook.nsheets)
# 遍历工作簿中的每张表
for worksheet in workbook.sheets():
# 分别输出每张表的名字、行数、列数
print('Worksheet name: ', worksheet.name, '\tRows: ', worksheet.nrows, '\tColumns: ', worksheet.ncols)
# 处理单个工作簿
#!/usr/bin/env python3
# 导入读取Excel文件的库,xlrd,其中的 open_workbook 为读取工作簿
from xlrd import open_workbook
# 导入写工作簿的库
from xlwt import Workbook
input_file = 'D:\wangm\Documents\learning\code\python\data_row.xlsx'
output_file = 'D:\wangm\Documents\learning\code\python\data_out.xlsx'
# 创建一个Workbook对象
output_workbook = Workbook()
# 向output_workbook中添加一种名为'out_data_sheet_1'的表
output_wb_sheet = output_workbook.add_sheet('out_data_sheet_1')
with open_workbook(input_file) as workbook:
# 通过名字选取工作簿中的某个表,也可以使用索引值选定
worksheet = workbook.sheet_by_name('supplier_data')
# worksheet = workbook.sheet_by_index(0)
# 通过行、列索引值遍历工作簿中指定表的每一个值
for row_index in range(worksheet.nrows):
for column_index in range(worksheet.ncols):
# 向工作簿中的一个选取的表(output_wb_sheet)的通过索引指定的单元格(row_index, column_index)中写入一个值
output_wb_sheet.write(row_index, column_index, worksheet.cell_value(row_index, column_index))
# 将该工作簿保存为 output_file
output_workbook.save(output_file)
#!/usr/bin/env python3
import pandas as pd
input_file = 'D:\wangm\Documents\learning\code\python\data_row.xlsx'
output_file = 'D:\wangm\Documents\learning\code\python\data_out_pd.xlsx'
# pd.read_excel() 读取一个Excel文件,并指定选中其中的某张表,将其变为一个”数据框“对象
data_frame = pd.read_excel(input_file, sheetname='supplier_data')
# 创建一个Excel文件
writer = pd.ExcelWriter(output_file)
# 将data_frame转为Excel文件,并写入输出文件
data_frame.to_excel(writer, sheet_name='supplier_data', index=False)
# 保存输出文件
writer.save()
#
# 筛选特定的行
# 在基本Python中:
# 类似于之前处理CSV文件,无非是改变了读写文件的函数,过程都是去每一行的值,筛选出符合条件的行
# 保存下来,然后写入Excel文件
# 下面给出使用pandas库来筛选
#!/usr/bin/env python3
import pandas as pd
input_file = 'D:\wangm\Documents\learning\code\python\data_row.xlsx'
output_file = 'D:\wangm\Documents\learning\code\python\data_out_pd.xlsx'
data_frame = pd.read_excel(input_file, 'supplier_data', index_col=None)
# 筛选出Cost值大于500的行,将标题行和这些行作为一个新的‘数据框’对象
# 下面这条用于筛选的语句,通过列名作为索引去除Cost的值,并将其转换为float在进行比较,比较结果为真的行留了下来
# 缺陷:将Cost的值的 $ 的符号丢掉了
#data_frame_value_meets_condition = data_frame[data_frame['Cost'].astype(float) > 500.0]
writer = pd.ExcelWriter(output_file)
#data_frame_value_meets_condition.to_excel(writer, sheet_name='supplier_data', index=False)
#writer.save() # 还可以筛选出某一列中的值属于某个特定集合的行
important_dates = ['1/1/2018', '3/1/2018']
data_frame_value_in_set = data_frame[data_frame['Date'].isin(important_dates)]
data_frame_value_in_set.to_excel(writer, sheet_name='supplier_data', index=False)
writer.save()
# 此处写入后也将Cost的值的 $ 的符号丢掉了,起初我认为是因为被转换为float时的原因,然而此处却发现不是,那到底是为什么? # 类似于处理CSV文件,pandas在处理Excel文件时,也有类似于使用RE筛选的函数 # 此处就产生一个疑问,pandas读取CSV文件、Excel文件后得到的对象为何如此相似?希望在后面具体了解pandas库时得到答案
选取特定的列
类似于处理CSV文件时的情况
读取多个Excel文件时,类似于前面处理CSV文件时的情况,使用glob
以上代码示例分别使用基本Python和pandas库处理Excel文件,运行在Python3.6 Win10上的Spyder下
相关库文档:
使用Python处理Excel文件的一些代码示例的更多相关文章
- 使用Python处理CSV文件的一些代码示例
笔记:使用Python处理CSV文件的一些代码示例,来自于<Python数据分析基础>一书,有删改 # 读写CSV文件,不使用CSV模块,仅使用基础Python # 20181110 wa ...
- [转]用Python读写Excel文件
[转]用Python读写Excel文件 转自:http://www.gocalf.com/blog/python-read-write-excel.html#xlrd-xlwt 虽然天天跟数据打交 ...
- python读写Excel文件的函数--使用xlrd/xlwt
python中读取Excel的模块或者说工具有很多,如以下几种: Packages 文档下载 说明 openpyxl Download | Documentation | Bitbucket The ...
- python之路-随笔 python处理excel文件
小罗问我怎么从excel中读取数据,然后我百了一番,做下记录 以下代码来源于:http://www.cnblogs.com/lhj588/archive/2012/01/06/2314181.html ...
- Python处理Excel文件
因为工作需求,需要审核一部分query内容是否有效,query储存在Excel中,文本内容为页面的Title,而页面的URL以HyperLink的格式关联到每个Cell. 于是本能的想到用Python ...
- 记录:python读取excel文件
由于最近老是用到python读取excel文件,所以特意记录一下python读取excel文件的大体框架. 库:xlrd(读),直接pip安装即可.想要写excel文件的话,安装xlwd库即可,也是直 ...
- Python解析excel文件并存入sqlite数据库
最近由于工作上的需求 需要使用Python解析excel文件并存入sqlite 就此做个总结 功能:1.数据库设计 建立数据库2.Python解析excel文件3.Python读取文件名并解析4.将解 ...
- Python读写EXCEL文件常用方法大全
前言 python读写excel的方式有很多,不同的模块在读写的讲法上稍有区别,这里我主要介绍几个常用的方式. 用xlrd和xlwt进行excel读写: 用openpyxl进行excel读写: 用pa ...
- php读取excel文件的实例代码
php读取excel文件的实例代码. 代码: <?php /** * php读取excel文件 * by www.jbxue.com */ $this->loadexcel();//半酣p ...
随机推荐
- iOS开发 UILabel实现自适应高宽
UILabel是iOS开发常用的控件.UILabel的属性需要了解,UILabel的特殊显示效果也需要我们掌握.UILabel自适应高宽度是很多初学者遇到的技术性难题.比如段文字,要让他完全地分行显示 ...
- HDU——4162Shape Number(字符串的最小表示)
Shape Number Time Limit: 24000/12000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- BZOJ-1085 骑士精神
估价函数其实就是与目标状态有几个不同... 迭代启发搜索. #include <cstdlib> #include <cstdio> #include <cstring& ...
- (转)关于Jackson2.x中com.fasterxml.jackson包的用法
Jackson应该是目前最好的json解析工具了,之前一直用的是org.codehaus.jackson包中的工具,使用的 包是jackson-all-1.9.11.jar. 最近发现Jackson升 ...
- Jdbc执行存储过程报数据库事务无法执行的异常
Jdbc执行存储过程报数据库事务无法执行的异常 环境: Eclipse+Jdk1.7+spring-jdbc-3.0.7+同版本的jdbctemplate+Sqlserver 2012 问题: 一个小 ...
- 加速和简化构建Docker(基于Google jib)
赵安家 2019年02月11日阅读 1518 关注 加速和简化构建Docker(基于Google jib) 介绍 其实jib刚发布时就有关注,但是一直没有用于生产,原因有二 基于 spotify/do ...
- Idea连接服务器docker并部署代码到docker实现一键启动
好记性不如烂笔头,写笔记是为了回头看的. 谁要是不小心搜了看了,如有不足之处敬请谅解. 一.准备工作 虚拟机centos7.X,docker1.3.X,Win10 Idea2018.1 默认Idea已 ...
- lucas定理 +证明 学习笔记
lucas定理 p为素数 \[\dbinom n m\equiv\dbinom {n\%p} {m\%p} \dbinom {n/p}{m/p}(mod p)\] 左边一项直接求,右边可递归处理,不包 ...
- FZOJ Problem 2103 Bin & Jing in wonderland
...
- 【NOIP2015】子串(字符串DP)
题意:有AB两个字符串,用A中连续的K串匹配B全串,问不同的方案总数 n<=1000,m<=200,k<=m 思路:设dp[k,i,j]为用k串 A中前i个字符匹配B中前j个字符的方 ...