python中操作excel的常用库和方法

无论办公自动化或者数据分析中,我们常会用到excel表格。在python中都有哪些库处理数据表格?下面就说明一下在python中有哪些库能够处理数据表格。

xlwt库

pip install xlwt

xlwt库仅仅能向excel中写入数据,流程如下:

  • 创建一个workbook
  • 添加一个sheet
  • 写入单元格数据

import xlwtbook = xlwt.Workbook()sheet = book.add_sheet("Sheet1")sheet.write(0,0,"你好")book.save("record.xls")

在这里插入图片描述

openpyxl库

pip install openpyxl

生成一个excel表格,流程如下:

  • 构建一个workbook对象
  • 创建一个sheet
  • 设置sheet的标题和属性设置
  • 添加单元格内容

import openpyxlwb = openpyxl.Workbook()print(wb.sheetnames)
# ws  = wb.activews2 = wb.create_sheet("NewTitle",1)
ws2.sheet_properties.tabColor = 'ff00ff'
# 下表是从1开始的
ws2.cell(row=1,column=1,value="你好")wb.save("record1.xlsx")

在这里插入图片描述
打开一个已存在excel文件,并写入新内容


wb = openpyxl.load_workbook("record1.xlsx")ws = wb['Sheet']ws.sheet_properties.tabColor = '99cccc'# 下表是从1开始的
ws.cell(row=1,column=1,value="重新写入内容")wb.save("record2.xlsx")

在这里插入图片描述
批量写入列表数据


import openpyxl
from openpyxl.styles import colors,Font,Alignmentwb = openpyxl.Workbook()ws = wb.activerows = [["ID","姓名","性别"],[1,"老朱","男"],[2,"老朱1","男"],[3,"老朱2","男"],
]for row in rows:ws.append(row)font = Font(name="微软雅黑",size=25,italic=True,bold=True)ws['A1'].font = fontws.row_dimensions[5].height = 40
ws.column_dimensions['A'].width = 30ws.merge_cells("A7:C7")
ws.merge_cells("A9:C13")
ws['A9'] = "合并单元格"wb.save("record3.xlsx")

在这里插入图片描述
下面是一个在excel中生成日历的简单演示


import calendar
import time
import openpyxlfrom openpyxl.styles import Fontyear = time.strftime("%Y", time.localtime())#周六为每周第一天
calendar.setfirstweekday(firstweekday=6)wb = openpyxl.Workbook()
for i in range(12,0,-1):# 创建一个sheetsheet = wb.create_sheet(index=0,title= str(i) + '月')# 每月天数days = calendar.monthcalendar(int(year),i)for j in range(len(days)): for k in range(len(days[j])):value = days[j][k]if value == 0:value = ''else:sheet.cell(row=j+9,column=k+1).font =  Font(u"微软雅黑",size=11)sheet.cell(row=j+9,column=k+1).value = valuewb.save("calendar.xlsx")
wb

calendar.xlsx文件中生成12个sheet,每个sheet中显示日历信息。

效果如下图:

在这里插入图片描述

pandas库

最后就是做数据分析的pandas库了。通过read_excel和to_excel进行数据读取和写入。

读取一个xlsx文件,进行数据处理后,存储在person2.xlsx中。


import pandas as pd
import datetime
from datetime import date#skiprows跳过几行 usecols第几列,dtype设置某一类的类型
persons = pd.read_excel("people.xlsx",skiprows="1",usecols="A:K",index_col="编号",dtype={"旷工天数":str})startday = datetime.datetime.now()# 增加了2列,生成和出勤天数
for i in persons.index:persons.at[i,'生日'] = date(startday.year+i,startday.month,startday.day)persons.at[i,"出勤天数"] = 1 if i % 2 == 1 else 0persons.to_excel("person2.xlsx")print("Done")

在这里插入图片描述
而且可以通过pandas读取excel数据并进一步处理后生成各种图表。

下面给出pands生成几种常见图表示例:

  • 柱状图
import pandas as pd
import matplotlib.pyplot as pltpersons = pd.read_excel("person2.xlsx",index_col="编号")#通过实发工资,进行排序,inplace原地修改,ascending False从大到小,True从小到大
persons.sort_values(by="实发工资",inplace=True,ascending=False)#plt.bar 生成树状图
plt.bar(persons['姓名'],persons['实发工资'],color="Orange")#添加中文字体支持
from matplotlib.font_manager import FontPropertiesfont = FontProperties(fname=r"c:/windows/fonts/simhei.ttf",size=15)# 设置图标标题,横纵坐标
plt.title("员工工资统计",fontproperties=font,fontsize=15)
plt.xlabel("姓名",fontproperties=font,fontsize=12)
plt.ylabel("工资",fontproperties=font,fontsize=12)# 因为xlabel过长,使用rotaion翻转90
plt.xticks(persons['姓名'],font=font,rotation=90)plt.show()

在这里插入图片描述

  • 叠加树状图

#叠加树状图
import pandas as pd
import matplotlib.pyplot as pltusers = pd.read_excel("test.xlsx")users['total'] = users['yuwen'] + users['yingyu'] + users['shuxue']users.sort_values(by="total",inplace=True,ascending=False)users.plot.bar(x="name",y=["yuwen","shuxue","yingyu"],stacked=True)plt.tight_layout()plt.show

在这里插入图片描述


#横向的叠加树状图
users.plot.barh(x="name",y=["yuwen","shuxue","yingyu"],stacked=True)plt.tight_layout()plt.show
  • 饼图

#饼图绘图,体现占比import pandas as pd
import matplotlib.pyplot as plttotals = pd.read_excel("test1.xlsx",index_col="from")#通过pandas的plot.pie绘制饼图,饼图只需要使用一列数据,我们直接使用Series
#counterclock为False让饼图顺时针方向显示\
#startangle其实角度,从0度角开始
totals["order"].plot.pie(fontsize=9,counterclock=False,startangle=0)#订单饼图
plt.title("order",fontsize=15,fontweight="bold")
plt.ylabel("order",fontsize=12,fontweight="bold")
plt.show()plt.show()

在这里插入图片描述

  • 折线图

#通过pandas绘制折线图import pandas as pd
import matplotlib.pyplot as pltpersons = pd.read_excel("test.xlsx",index_col="id")persons.plot(y=['yuwen','yingyu','shuxue'])plt.title('Title',fontsize=15)
plt.xlabel("student no")
plt.xticks(persons.index)
plt.show()

在这里插入图片描述


#仅仅plot.area方法
persons.plot.area(y=['yuwen','yingyu','shuxue'])plt.title('Title',fontsize=15)
plt.xlabel("student no")
plt.xticks(persons.index)
plt.show()

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/235721.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式Linux:配置Ubuntu系统环境和安装开发工具

目录 1、配置Ubuntu系统环境 1.1、APT下载工具 1.2、更新语言 1.3、更新本地数据库 1.4、安装VIM编辑器 1.5、Ubuntu 和 Windows 文件互传 1.6、开启NFS服务 1.7、开启SSH服务 2、安装开发工具 2.1、Ubuntu安装VSCode 2.2、Windows安装MobaXterm 安装好Ubuntu系统环…

排序分析(Ordination analysis)及R实现

在生态学、统计学和生物学等领域,排序分析是一种用于探索和展示数据结构的多元统计技术。这种分析方法通过将多维数据集中的样本或变量映射到低维空间,以便更容易理解和可视化数据之间的关系。排序分析常用于研究物种组成、生态系统结构等生态学和生物学…

【Openstack Train安装】十二、Cinder安装

Cinder在块存储资源和计算服务(Nova)之间提供了一个抽象层。通过Cinder API,块存储可以被管理(创建、销毁和分配等),而不需要知道提供存储的底层资源。 本文介绍Cinder安装步骤,Cinder需在控制节…

苹果TF签名全称TestFlight签名,需要怎么做才可以上架呢?

如果你正在开发一个iOS应用并准备进行内测,TestFlight是苹果提供的一个免费的解决方案,它使开发者可以邀请用户参加应用的测试。以下是一步步的指南,教你如何利用TestFlight进行内测以便于应用后续可以顺利上架App Store。 1: 准备工作 在测…

怎么一键批量转换PDF/图片为Excel、Word,从而提高工作效率?

在处理大量PDF、图片文件时,我们往往需要将这些文件转换成Word或Excel格式以方便编辑和统计分析。此时,金鸣表格文字识别大师这款工具可以发挥巨大作用。下面,我们就来探讨如何使用它进行批量转换,以实现高效处理。 一、准备工作…

初识elasticsearch

文章目录 一、前言二、了解ES2.1 elasticsearch的作用2.2 ELK技术栈2.3 elasticsearch和lucene2.4 为什么不是其他搜索技术2.5 总结 三、倒排索引3.1 正向索引3.2 倒排索引3.3 正向和倒排 四、es的一些概念4.1 文档和字段4.2 索引和映射4.3 mysql和elasticsearch 一、前言 前一…

StartRocks 连接 Paimon外部表

版本 StartRocksPaimon3.2.00.5 sr 环境准备 CREATE external CATALOG paimon_hdfs PROPERTIES ("type" "paimon",paimon.catalog.type filesystem,"paimon.catalog.warehouse" "hdfs://hadoop03:9000/paimon/test" );mysql> …

高效率:使用DBeaver连接spark-sql

提高运行效率一般采取底层使用spark引擎替换成hive引擎的方式提高效率,但替换引擎配置较为复杂考虑到兼容版本且容易出错,所以本篇将介绍使用DBeaver直接连接spark-sql快速操作hive数据库。 在spark目录下运行以下命令,创建一个SparkThirdSe…

链表高频面试题

1. 两个链表第一个公共子节点 LeetCode160 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: listA [4,1,8,4,5], listB [5…

Windows系列:windows server 2016 下域环境的搭建(完整版)

windows server 2016 下域环境的搭建(完整版) windows server 2016 下域环境的搭建在搭建之前简单介绍一下基础知识:一、环境介绍 :1.这里用拓扑图进行展示:2.所有环境配置如下 二、搭建主域:一. 创建主域1…

91基于matlab的以GUI实现指纹的识别和匹配百分比

基于matlab的以GUI实现指纹的识别和匹配百分比,中间有对指纹的二值化,M连接,特征提取等处理功能。数据可更换自己的,程序已调通,可直接运行。 91M连接 特征提取 (xiaohongshu.com)

Android 架构实战MVI进阶

MVI架构的原理和流程 MVI架构是一种基于响应式编程的架构模式,它将应用程序分为四个核心组件:模型(Model)、视图(View)、意图(Intent)和状态(State)。 原理&…