Python工具箱系列(二十七)
对Excel进行操作
Excel是微软出品的办公神器,大部分读者相信或多或少都用过。其自带的函数丰富,可以进行复杂的数据运算、分析以及可视化的输出。到目前为止没有出现可以望其项背的竞品,大部分竞品不是在模仿的路上,就是在失败的路上。
虽然Excel不是数据库管理系统,Excel文档也不是完全结构化的文件,但它以行列形式保存了大量的数据,也可以将其视作准数据库文件。历史上,python有许多库能够操作Excel,例如lsxwriter、openpyxl、pandas、xlwings等,只是功能多少的问题。我们使用openpyxl库来操作excel文档。需要说明的是,由于Excel多次重大升级后,早期版本与现代版本差距明显,openpyxl只能够打开后缀为xlsx的文档。
它的安装过程如下:
pip install openpyxl
使用前文介绍的faker库,创建一些模拟数据,用于后续的读写操作,代码示例如下:
import random
from faker import Faker
from openpyxl import Workbook
# 最高薪资(单位为K)
maxsalary = 30
def fakedata(maxtimes):
# 模拟数据。人名+薪资
fake = Faker('zh_CN')
data_total = [[fake.name(), random.randint(0, maxsalary)]
for x in range(maxtimes)]
return data_total
def create_xlsx(filename):
fakesalary = fakedata(100)
wb = Workbook()
# 获取被激活的 worksheet
ws = wb.active
for info in fakesalary:
ws.append(info)
wb.save(filename)
create_xlsx("d:/salary.xlsx")
Excel文档创建后效果如下图所示:
除此之外,可以打开已经有的Excel文档,对表格、单元、行、列进行操作,相关示例代码如下:
import random
from faker import Faker
from openpyxl import load_workbook
def show_sheets(filename):
wb = load_workbook(filename)
return wb.sheetnames
def create_sheet(filename, name, title):
wb = load_workbook(filename)
ws1 = wb.create_sheet(name)
ws1.title = title
ws1["A1"]=8848.8848
ws1["B2"]="hello raindrop"
wb.save(filename)
def ops_data(filename,sheetname):
wb = load_workbook(filename)
ws1 = wb.get_sheet_by_name(u"Sheet")
# 操作单列
for cell in ws1["A"]:
print(cell.value)
# 操作单行
for cell in ws1["1"]:
print(cell.value)
# 操作多列
for column in ws1['A:B']:
for cell in column:
print(cell.value)
# 操作多行
for row in ws1['1:3']:
for cell in row:
print(cell.value)
# 所有行
for row in ws1.iter_rows():
for cell in row:
print(cell.value)
# 所有列
for column in ws1.iter_cols():
for cell in column:
print(cell.value)
excelname = 'd:/salary.xlsx'
print(show_sheets(excelname))
create_sheet(excelname, "demosheet", "hello excel")
ops_data(excelname, "sheet")
当能够随意操作Excel文档时,就完成了数据分析最基础的工作之一。
本站大部分文章、数据、图片均来自互联网,一切版权均归源网站或源作者所有。
如果侵犯了您的权益请来信告知我们删除。邮箱:1451803763@qq.com