Python数据分析之Excel

2023-11-08


1、openpyxl概述

openpyxl是一个用于处理xlsx格式Excel表格文件的第三方python库,几乎支持Excel表格的所有操作

基本概念:

  • Workbook:相当于一个Excel文档,每个Workbook对象都是一个独立的Excel文件
  • Sheet:Excel文档中的表单,每个Excel文档中至少有一个Sheet
  • Cell:Excel单元格,是不可分割的基本数据存储单元

安装:

pip install openpyxl

2、Excel写入

2.1、新建

from openpyxl import load_workbook, Workbook

# 新建一个Excel文档(初始化)
workbook = Workbook()
# 初始化/获取一个Sheet(新创建的Excel默认自带名为Sheet的表单)
# sheet = workbook.active
# 创建一个Sheet,新建的多个Sheet默认插在后面
sheet = workbook.create_sheet("Sheet1")
# 创建一个Sheet,插入到最前面
# sheet = workbook.create_sheet("Sheet1", 0)

2.2、添加数据

'''
append(list):在已有的数据后面追加写入(增量写入)
'''
# 定义表头(插入一条数据)
sheet.append(['id', 'name', 'age', 'addr'])
# 批量插入数据
data = [
    ['001', 'Tom', 18],
    ['002', 'Jerry', 17, 'US'],
    ['003', 'Alice', 20]
]
for row in data:
    sheet.append(row)

# 保存Excel-Sheet1
workbook.save(r'C:\Users\cc\Desktop\openpyxl.xlsx')

2.3、单元格格式

from openpyxl.styles import Font, Border, Side, PatternFill, colors, Alignment

# 1)字体
# 设置A1单元格字体风格为Times New Roman,大小16,粗体、斜体,蓝色
sheet['A1'].font = Font(name='Times New Roman', size=16, bold=True, italic=True, color=colors.BLUE)

# 2)对齐方式
# 设置单元格horizontal水平和vertical垂直对齐方式,其他值:left、right
sheet['A1'].alignment = Alignment(horizontal='center', vertical='center')

# 3)行高和列宽
# 设置行高
sheet.row_dimensions[1].height = 25
# 设置列宽
sheet.column_dimensions['A'].width = 15

# 4)边框
# 设置边框四个方向的线条种类
left, right, top, bottom = [Side(style='thin', color='000000')] * 4
# 将各方向线条作为参数传入Border方法
sheet['A1'].border = Border(left=left, right=right, top=top, bottom=bottom)

# 5)合并、拆分单元格
# 合并单元格
sheet.merge_cells('A1:B2')
# 拆分单元格
sheet.unmerge_cells('A1:B2')

# 保存Excel-Sheet2
workbook.save(r'C:\Users\cc\Desktop\openpyxl.xlsx')

3、Excel读取

'''
load_workbook(Excel):文件必须是xlsx格式,默认为可读可写
'''
workbook = load_workbook(r'C:\Users\cc\Desktop\openpyxl.xlsx')
# 读取指定Sheet
sheet = workbook.get_sheet_by_name('Sheet1')

# 追加一条记录
sheet.append(['004', 'Bob', 19, 'CN'])

# 保存Excel
workbook.save(r'C:\Users\cc\Desktop\openpyxl.xlsx')

4、openpyxl操作Excel之CRUD

添加数据见2.2节

4.1、查

# 获取所有Sheet表名,返回List
print(workbook.sheetnames)     # ['Sheet', 'Sheet1']

# 最大行数
print(sheet.max_row)
# 最大列数
print(sheet.max_column)

# 单元格访问
print(sheet['A1'].value)
print(sheet.cell(row=4, column=2).value)

# 访问行或列
print(sheet['A'])
print(sheet['A':'C'])
print(sheet[1])
print(sheet[1:3])
# 获取所有行或列
row_list = []
for row in sheet.iter_rows():
    row_ls = []
    col_len = len(list(sheet.iter_cols()))
    for cell in row:
        col_len -= 1
        row_ls.append(cell.value)
        if col_len == 0:
            continue
    row_list.append(row_ls)

print(row_list)
'''
[['id', 'name', 'age', 'addr'], ['001', 'Tom', 18, None], ['002', 'Jerry', 17, 'US'], ['003', 'Alice', 20, None]]
'''

4.2、改

# 修改指定值
sheet['C4'].value = 21
sheet.cell(row=4, column=4).value = 'CN'

# 修改操作后要保存
workbook.save(r'C:\Users\cc\Desktop\openpyxl.xlsx')

4.3、删

# 删除指定行或列
sheet.delete_rows(2)

# 删除Excel-Sheet
workbook.remove_sheet(sheet)
del workbook['Sheet']

# 删除操作后要保存
workbook.save(r'C:\Users\cc\Desktop\openpyxl.xlsx')

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python数据分析之Excel 的相关文章

  • 如何查看Databricks中的所有数据库和表

    我想列出 Azure Databricks 中每个数据库中的所有表 所以我希望输出看起来像这样 Database Table name Database1 Table 1 Database1 Table 2 Database1 Table
  • Python:在列表理解本身中引用列表理解?

    这个想法刚刚出现在我的脑海中 假设您出于某种原因想要通过 Python 中的列表理解来获取列表的唯一元素 i if i in created comprehension else 0 for i in 1 2 1 2 3 1 2 0 0 3
  • Django 管理员在模型编辑时间歇性返回 404

    我们使用 Django Admin 来维护导出到我们的一些站点的一些数据 有时 当单击标准更改列表视图来获取模型编辑表单而不是路由到正确的页面时 我们会得到 Django 404 页面 模板 它是偶尔发生的 我们可以通过重新加载三次来重现它
  • 将 saxon 与 python 结合使用

    我需要使用 python 处理 XSLT 目前我正在使用仅支持 XSLT 1 的 lxml 现在我需要处理 XSLT 2 有没有办法将 saxon XSLT 处理器与 python 一起使用 有两种可能的方法 设置一个 HTTP 服务 接受
  • 将数据从 python pandas 数据框导出或写入 MS Access 表

    我正在尝试将数据从 python pandas 数据框导出到现有的 MS Access 表 我想用已更新的数据替换 MS Access 表 在 python 中 我尝试使用 pandas to sql 但收到错误消息 我觉得很奇怪 使用 p
  • 将 Matplotlib 误差线放置在不位于条形中心的位置

    我正在 Matplotlib 中生成带有错误栏的堆积条形图 不幸的是 某些层相对较小且数据多样 因此多个层的错误条可能重叠 从而使它们难以或无法读取 Example 有没有办法设置每个误差条的位置 即沿 x 轴移动它 以便重叠的线显示在彼此
  • Django:按钮链接

    我是一名 Django 新手用户 尝试创建一个按钮 单击该按钮会链接到我网站中的另一个页面 我尝试了一些不同的例子 但似乎没有一个对我有用 举个例子 为什么这不起作用
  • 如何使用Conda下载python包并随后离线安装?

    我知道通过 pip 我可以使用以下命令下载 Python 包 但 pip install 破坏了我的内部包依赖关系 当我做 pip download
  • Spark KMeans 无法处理大数据吗?

    KMeans 有几个参数training http spark apache org docs latest api python pyspark mllib html highlight kmeans pyspark mllib clus
  • 以编程方式停止Python脚本的执行? [复制]

    这个问题在这里已经有答案了 是否可以使用命令在任意行停止执行 python 脚本 Like some code quit quit at this point some more code that s not executed sys e
  • OpenCV 无法从 MacBook Pro iSight 捕获

    几天后 我无法再从 opencv 应用程序内部打开我的 iSight 相机 cap cv2 VideoCapture 0 返回 并且cap isOpened 回报true 然而 cap grab 刚刚返回false 有任何想法吗 示例代码
  • 如何加速Python中的N维区间树?

    考虑以下问题 给定一组n间隔和一组m浮点数 对于每个浮点数 确定包含该浮点数的区间子集 这个问题已经通过构建一个解决区间树 https en wikipedia org wiki Interval tree 或称为范围树或线段树 已经针对一
  • 在Python中获取文件描述符的位置

    比如说 我有一个原始数字文件描述符 我需要根据它获取文件中的当前位置 import os psutil some code that works with file lp lib open path to file p psutil Pro
  • 如何使用Python创建历史时间线

    So I ve seen a few answers on here that helped a bit but my dataset is larger than the ones that have been answered prev
  • 为字典中的一个键附加多个值[重复]

    这个问题在这里已经有答案了 我是 python 新手 我有每年的年份和值列表 我想要做的是检查字典中是否已存在该年份 如果存在 则将该值附加到特定键的值列表中 例如 我有一个年份列表 并且每年都有一个值 2010 2 2009 4 1989
  • Python:如何将列表列表的元素转换为无向图?

    我有一个程序 可以检索 PubMed 出版物列表 并希望构建一个共同作者图 这意味着对于每篇文章 我想将每个作者 如果尚未存在 添加为顶点 并添加无向边 或增加每个合著者之间的权重 我设法编写了第一个程序 该程序检索每个出版物的作者列表 并
  • 如何计算 pandas 数据帧上的连续有序值

    我试图从给定的数据帧中获取连续 0 值的最大计数 其中包含来自 pandas 数据帧的 id date value 列 如下所示 id date value 354 2019 03 01 0 354 2019 03 02 0 354 201
  • 发送用户注册密码,django-allauth

    我在 django 应用程序上使用 django alluth 进行身份验证 注册 我需要创建一个自定义注册表单 其中只有一个字段 电子邮件 密码将在服务器上生成 这是我创建的表格 from django import forms from
  • 使用 Python 的 matplotlib 选择在屏幕上显示哪些图形以及将哪些图形保存到文件中

    我想用Python创建不同的图形matplotlib pyplot 然后 我想将其中一些保存到文件中 而另一些则应使用show 命令 然而 show 显示all创建的数字 我可以通过调用来避免这种情况close 创建我不想在屏幕上显示的绘图
  • 从列表指向字典变量

    假设你有一个清单 a 3 4 1 我想用这些信息来指向字典 b 3 4 1 现在 我需要的是一个常规 看到该值后 在 b 的位置内读写一个值 我不喜欢复制变量 我想直接改变变量b的内容 假设b是一个嵌套字典 你可以这样做 reduce di

随机推荐

  • 密码学与网络安全笔记整理-数据完整性技术

    1 数据完整性 类似于通信中的校验码功能 在密码学领域数据完整性用于验证收到信息的正确性 校验收到的信息是否经过篡改 校验收到的信息是真实的发送者发送而非伪造 发送者通过编码为消息增加一些 冗余 生成一个校验值 并将该校验值附在消息之后 接
  • 基于深度学习的DDN图像去雨算法实战准备指南

    一 DDN图像去雨算法的复现代码下载 1 DDN的图像去雨算法的代码分为tensorflow版本和matlab版本 下载的链接分别如下 1 DDN tensorflow下载 https download csdn net download
  • border-box和content-box最直观的区别和解释

    Chrome浏览器box sizing默认是content box content box就是元素的width和height决定了元素的宽高 这意味着元素的border和padding等不能算在元素的width和height中 paddin
  • python怎么用for循环找出最大值_用for循环语句写一个在输入的十个数字中求最大和最小值的python程序应该怎么写?...

    在输入的十个数字中求最大和最小值的 python 代码 这个需求 在不同时间来看 解题思路不同 所需要的 python 知识点不同 作为萌新的我 为此特意整理了 3 种解法 以及相应的知识点笔记 解法A 不使用列表 min 或 max 只是
  • 笔记:Element UI Dialog弹框 水平垂直居中

    需求 element dialog 默认不是水平居中的 需要改为水平垂直居中 方法一 全局设置 在App vue中添加代码 全局设置 element ui dialog水平垂直居中 el dialog left 50 top 50 tran
  • 超全超详细的安装nvidia显卡驱动教程

    最近想做的事情有点多 感觉卡不够用了 师兄不知道在实验室机房哪个地方找了一个两卡的废旧服务器 开始上手才发现服务器显卡驱动都没装 显卡还是个GTX1060 6G 甜点级别显卡 跑点小东西玩玩 打点小比赛行了 准备工作 安装驱动 1 使用标准
  • udp包最大数据长度是多少

    原文地址 https blog csdn net caoshangpa article details 51530685 每个udp包的最大大小是多少 65507 约等于 64K 为什么最大是65507 因为udp包头有2个byte用于记录
  • 谷粒商城(一)

    谷粒商城 一 1 环境搭建 安装 docker docker 安装 mysql docker 安装 redis 安装配置 git 准备工具 IDEA VsCode 从 gitee 初始化项目 2 创建微服务项目 1 创建项目 2 初始化数据
  • 大疆睿炽Tello EDU无人机python操控之三——使用easyGUI模拟操控界面控制Tello EDU

    使用easyGUI模拟操控界面控制Tello EDU 说到easyGUI这个模块 大家应该都不陌生了 模块名中有个 easy 是的 这代表它用起来很简单 这个模块就是一个能够轻易创建用户界面的工具 所以本篇文章我们将实现使用用户界面来对Te
  • Gateway、Nacos依赖启动问题解决

    今天是2022年开工的第一天 本是摸鱼带薪的一天 最终被一个bug所打扰 这怎么可以呢 新的一年第一个bug记录一下 祝大家 新年快乐 摸摸头 代码样例 报错如下 启动即报错 直接好家伙 下面是排查报错的步骤 相信英语跟我一样不好的同学 翻
  • 全排列算法的c++实现(非递归)

    本文算法出自 梦辽软件 只实现了文中所说的第五种算法 全排列 非递归求顺序 算法 1 建立位置数组 即对位置进行排列 排列成功后转换为元素的排列 2 按如下算法求全排列 设P是1 n 位置编号 的一个全排列 p p1 p2 pn p1 p2
  • Dynamics CRM IFD部署之后遇到的登录问题

    Dynamics CRM IFD部署之后遇到的登录问题 证书问题 共用证书 域控问题 跨域登录 登录后报404 证书问题 共用证书 因为公司只给了一个证书 且UAT环境和生产环境都进行了IFD部署 当在同一个浏览器同时登录UAT和生产环境就
  • COCO数据集annotation内容

    本文转载自 http blog csdn net qq 30401249 article details 72636414 找了很多coco数据集的资料 感觉里面的东西有些还是不清楚 顺便就转载下 instances train2014 j
  • 2020年度全球人工智能十大事件

    当前 新一代人工智能技术在全球蓬勃兴起 迅猛发展 与大数据 区块链 5G等新技术相互融合 相互因应 为经济社会发展尤其是数字经济发展注入新动能 正在深刻改变社会生产生活方式 与此同时 如何在新技术变革浪潮中始终立于主动 实现人工智能等前沿科
  • 机器学习基础篇-数据清洗

    Capture 1 在机器学习的工作流中 数据清洗环节尤为重要 接下来首先让我们看一下数据预处理的流程图 总的来说 主要包含下面三大块 收集数据 标注数据 提升数据质量 Capture 2 NO 1 Data Errors 所谓数据错误 就
  • 【2023】Nacos下载与安装配置(2.2.3版本示例)

    目录 1 Nacos概述 2 下载地址和版本 2 修改配置文件 2 1 配置鉴定密钥 自定义密钥 2 2 配置数据库 3 启动 4 项目注册 4 1 配置yml文件 4 2 在启动类上加入注解 4 3 使用 bat文件启动 需要学习naco
  • 【WIFI】802.11AX(WIFI6)无线协商速率计算

    从2019年末的iphone11系列开始 到后来的三星S10 在手机参数中总会有WIFI6这么一条参数 这里的WIFI6就是802 11的一个比较新的协议规范 802 11AX 因为笔者软件出生 对射频了解的不多 基本上也是靠查查找到 学习
  • 解决stylelint报错:Expected double quotes

    目录 背景 处理 背景 问题原因 stylelint对css期望引用时使用双引号 解决方法 修改stylelint 中css引入图片必须使用双引号的检查 注意 只希望修改掉stylelint 中css用url引入图片必须使用双引号的检查 而
  • stable diffusion webui 安装部署(linux系统)

    文中部署stable diffusion webui所使用的机器是腾讯云服务器linux系统 centos7 一 环境准备 在这里使用anaconda安装 优势就是可以方便地安装和管理软件包 同一系统上可以同时使用不同版本的 Python
  • Python数据分析之Excel

    openpyxl库 1 openpyxl概述 2 Excel写入 2 1 新建 2 2 添加数据 2 3 单元格格式 3 Excel读取 4 openpyxl操作Excel之CRUD 4 1 查 4 2 改 4 3 删 1 openpyxl