可以使用 Python 的第三方库 pandas 将列表转换成 excel 表格。
首先需要安装 pandas 库,在命令行中输入:
pip install pandas
然后可以使用 pandas 库中的 DataFrame 函数将列表转换成 DataFrame 数据结构,再使用 to_excel 函数将 DataFrame 保存为 excel 文件。
示例代码:
import pandas as pd
# 假设你有一个名为 data 的列表
data = [['Tom', 10], ['Dick', 15], ['Harry', 20]]
# 使用 pandas 将列表转换成 DataFrame
df = pdDataFrame(data, columns=['Name', 'Age'])
# 使用 to_excel 函数将 DataFrame 保存为 excel 文件
dfto_excel("dataxlsx")
这样就可以在当前目录下生成一个名为 dataxlsx 的 excel 文件,里面包含了你的列表数据。
Python批量处理excel数据(含完整代码)pandas库可以有效的处理excel、csv和txt文件,并能多格式将数据重新保存为excel、csv和txt文件。
1
1
一、导入数据
利用pandas库中的read函数可以将excel文件读入,转化为 DataFrame格式
import pandas as pd
path = "D:\textxlsx" ##文件路径
data = pdread_excel(path,sheet_name = 0) ##若包含多个子表,可以用sheet_name参参数进行选择
若excel表中不包含列名信息可以在读入时,利用names参数进行指定
data = pdread_excel(path,names=["id","name","date"])
对于csv文件可以使用pdread_csv函数进行数据导入
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
二、空表创建
当输出表格和输入表格的格式不一致时,我们可以通过创建空表来解决问题,新的DataFrame表格的数据可以为空,但是必须设置列名,也就是表头
##利用list创建表头
header = ["name","date","a","b"]
##创建空表
outData = pdDataFrame(columns=header)
1
2
3
4
5
6
7
1
2
3
4
5
6
7
三、数据增删查改
1数据查改
利用loc和iloc函数可以对DataFrame 数据表中的数据进行查改,loc使用行名和列名进行调用,iloc使用行列索引进行调用
propoLoc = dataloc["index", "proportion"]
propoIloc = dataloc[0, 0]
datailoc[:, 5:] = datailoc[:, 5:]astype(int) ##利用索引可以对数据进行批量处理,此句指令用于将表格第五列至最后一列的格式转化为整型int
2数据增删
利用drop函数可以删除指定行列,利用loc或insert函数可以增加列,loc用来增加行
datadrop(index=[0], inplace=True) ##删除行名为0的行
datadrop(columns=[0], inplace=True,axis=1) ##删除列名为0的列
dataloc[str(csvName)] = rowData ##增加行名为csvName的行,注意rowData要保证和data的列数一致
dataloc[:,str(csvName)] = 0 ##增加列名为csvName的列,用0填充该列
datainsert(datashape[1], 'd', 0) ##在datashape[1]处增加列,并用0填充
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
四、批量处理
首先利用os库对文件夹进行遍历,获得所有的excel文件
import os
excelNames = oslistdir(rootPath) ##获得所有的文件名
for excelName in excelNames:
##对每个文件进行处理
1
2
3
4
5
6
7
1
2
3
4
5
6
7
五、常用的数据处理方法
1字符串分割 strsplit(",") 用逗号进行分割,并创建一个list进行存储
2strendswith("hello") 判断字符串的后缀
1
2
1
2
六、表格存储
1单表存储:将一个sheet放入到一个excel中
saveFile = rootPath+"testxlsx" ##指定保存文件,注意反复保存时,excel不要打开,否则无法写入
rootDatato_excel(saveFile,index=False) ##保存指定,并不保存行名
2多表存储:将多个sheet放入到一个excel中
with pdExcelWriter('/dataOutxlsx') as writer:
DFato_excel(writer, sheet_name="表1")
DFbto_excel(writer, sheet_name="表2")
DFcto_excel(writer, sheet_name="表3")
writersave()
writerclose()
批量表格处理完整代码:将多张表的信息进行汇总
import os
import pandas as pd
rootPath = "C:\test\"
def createOutCsv(path):
data = pdread_excel(path, names=["column1", "column2", "column3"])
datadrop(index=[0], inplace=True)
header = ["name"] ###创建表头
for index in dataindex: ##利用data中的所有column1创建表头
column = dataloc[index,"name"]split("")[-1]
headerappend(column
首先需要安装Python,我这里安装的是Python364(注意:Python3和2版本语法有改动)
到 官网 进行下载安装。
选择对应版本的安装包即可,因为我这台电脑是Win10 64位,所以选择Windows x86-64 executable installer。
安装pywin32
pywin32貌似不能通过pip3 install下载,不过可以在sourceforge中找到 下载地址
在其中选择对应版本的安装包即可,我的python版本(通过命令行下执行python --version查看)是364,所以我选择下载pywin32-221win-amd64-py36exe。
下载下来后执行安装。
代码
安装好了Python3和Pywin32之后,我们便可以在代码中调用win32comclient了。
下面的代码用于演示将一个xls格式文件另存为xlsx格式。
import win32comclient as win32
首先,需要安装 pandas 库。在命令行中输入:
pip install pandas
然后可以使用 pandas 的 read_excel 函数读取 Excel 文件,并使用 iloc 属性获取某一整列内容。下面是一个示例代码:
import pandas as pd
# 读取 Excel 文件
df = pdread_excel("your_filexlsx")
# 获取某一整列内容
column_data = dfiloc[:, 2]
# 2 是列的编号,从 0 开始# 修改某一整列内容
column_data = column_data + 1
# 更新到 Excel 文件
dfiloc[:, 2] = column_data
dfto_excel("your_filexlsx", index=False)
上面的代码会读取“your_filexlsx”这个excel文件,获取第3列的内容并修改,最后将修改后的内容重新写入到excel文件中,注意这里没有保留原来的数据,如果需要保留原来的数据需要另外 *** 作。
需要注意的是,若要读取的excel文件中有多个工作表,需要使用 pdread_exPython中的模块也称为库,在Python中 *** 作Excel的模块有很多。
优缺点如下:
1、Pandas模块
Pandas是Python的一一个开源数据分析模块,可用于数据挖掘和数据分析,同时也提供数据清洗功能,可以说它是日前Python数据分析的必备工具之一。Pandas能够处理类似电子表格的数据,用于数据快速加载、 *** 作、对齐、合并、数据预处理等。
Pandas通过对Excel文件的读写实现数据输入、输出,Pandas支持xls和xlsx格式文件的读写,支持只加载每个表的单一工作页。
import pandas as pd
df=pdread_excel(r'E:banxlsx') #pandas 导入库获取excel表的数据内容
df`
2、xlwings模块
xlwings模块可以实现Python中调用Excel,也可以从Excel调用Python,这个模块支持支持xls和xlsx格式文件的读写,支持对这类文件的 *** 作,还支持使用VBA,具有强大的转换功能,并且可以处理大部分数据类型。
3、Xlrd模块
xlrd模块可以读取Excel文件,其对Excel文件的读取可以实现比较精细的控制。虽然现在使用Pandas模块读取和保存Excel文件往往更加方便快捷,但在某些场景下,依然需要xlrd这种更底层的模块来实现对Excel文件读取的控制。
xlrd模块支持xls、xlsx格式文件的读取,但不支持写信息。
4、xlwt模块
前面xlrd模块可以读取Excel文件,但不能写。而xlwt模块可以写、可以修改Excel文件,但不能读,且只支持xls格式文件的写 *** 作。
5、xlutils模块
xlutils也是一个处理Excel文件的模块,但它不能对Excel文件进行读和写的 *** 作,但依赖于xlrd模块和xlwt模块。xlutils模块支持xls格式文件,不支持xlsx格式文件。
6、openpyxl模块
openpyxl模块可以对xlsx格式的Excel文件进行读写 *** 作,特点是读取快、写入慢,且不能 *** 作xls格式文件。
7、xlsxwriter模块
xlsxwriter模块支持多种Excel功能,可以写xlsx格式的Excel文件,而且速度快、占用内存空间小,但不支持读或者修改现有的Excel文件。
8、win32com模块
win32com模块支持xls、xlsx格式的Excel文件的读、写和修改,读写速度快。但win32com模块存在于pywin32的模块中,自身没有完善的文档,使用起来不太方便。
9、分析总结
Pandas模块把Excel当作数据读写的容器,为其强大的数据分析服务,因此读写性能的表现中规中矩。xlwings和win32com这两个模块都拥有很好的读写性能,强大的转换器可以处理大部分数据类型,同时,可以在程序运行时,在打开的Excel文件中进行实时 *** 作,实现过程的可视化。另外,xlwings模块的数据结构转换器使其可以快速地为Excel文件添加二维数据结构,而不需要在Excel文件中重定位数据的行和列,因此笔者认为,从读写的便捷性来看,xlwings模块比较好用一些。Python对于Excel的 *** 作是多种多样的,掌握了相关用法就可以随心所欲的 *** 作数据了!
*** 作xls文件
xlrd(读 *** 作):
import xlrd
1、引入xlrd模块
workbook=xlrdopen_workbook("36xls")
2、打开[36xls]文件,获取excel文件的workbook(工作簿)对象
names=workbooksheet_names()
3、获取所有sheet的名字
worksheet=workbooksheet_by_index(0)
4、通过sheet索引获得sheet对象
worksheet为excel表第一个sheet表的实例化对象
worksheet=workbooksheet_by_name("各省市")
5、通过sheet名获得sheet对象
worksheet为excel表sheet名为各省市的实例化对象
nrows=worksheetnrows
6、获取该表的总行数
ncols=worksheetncols
7、获取该表的总列数
row_data=worksheetrow_values(n)
8、获取该表第n行的内容
col_data=worksheetcol_values(n)
9、获取该表第n列的内容
cell_value=worksheetcell_value(i,j)
10、获取该表第i行第j列的单元格内容
xlwt(写 *** 作):
import xlwt
1、引入xlwt模块
book=xlwtWorkbook(encoding="utf-8")
2、创建一个Workbook对象,相当于创建了一个Excel文件
sheet = bookadd_sheet('test')
3、创建一个sheet对象,一个sheet对象对应Excel文件中的一张表格。
sheetwrite(i, j, '各省市')
4、向sheet表的第i行第j列,写入'各省市'
booksave('Data\\36xls')
5、保存为Data目录下36xls文件
*** 作xlsx文件
openpyxl(读 *** 作):
import openpyxl
1、引入openpyxl模块
workbook=openpyxlload_workbook("36xlsx")
2、打开[36xlsx]文件,获取excel文件的workbook(工作簿)对象
names=workbooksheetnames
worksheet=workbookworksheets[0]
worksheet=workbook["各省市"]
ws = workbookactive
6、获取当前活跃的worksheet,默认就是第一个worksheet
nrows=worksheetmax_row
7、获取该表的总行数
ncols=worksheetmax_column
8、获取该表的总列数
content_A1= worksheet['A1']value
9、获取该表A1单元格的内容
content_A1=worksheetcell(row=1,column=1)value
10、获取该表第1列第1列的内容
openpyxl(写 *** 作):
workbook=openpyxlWorkbook()worksheet = workbookactive
3、获取当前活跃的worksheet,默认就是第一个worksheet
worksheettitle="test"
4、worksheet的名称设置为"test"
worksheet = workbookcreate_sheet()
5、创建一个新的sheet表,默认插在工作簿末尾
worksheetcell(i,j,'空')
6、第i行第j列的值改成'空'
worksheet["B2"]="空"
7、将B2的值改成'空'
worksheetinsert_cols(1)
8、在第一列之前插入一列
worksheetappend(["新增","台湾省"])
9、添加行
workbooksave("Data\\36xlsx")
10、保存为Data目录下36xlsx文件
pandas处理excel文件
pandas *** 作:
import pandas as pd
1、引入pandas模块
data = pdread_excel('36xls')
2、读取[36xls]或者[36xlsx]文件
data = pdread_csv('36csv')
3、读取[36csv]文件
data=datadropna(subset=['店铺'])
4、过滤掉data店铺列有缺失的数据
datasort_values("客户网名", inplace=True)
5、将data数据按照客户网名列进行从小到大排序
data = pdread_csv(36csv, skiprows = [0,1,2],sep = None, skipfooter = 4)
6、读取[36csv]文件,前三行和后四行的数据略过
data = datafillna('空')
7、将data中的空白处填充成'空'
datadrop_duplicates('订单','first',inplace=True)
8、data中的数据,按照订单列做去重处理,保留第一条数据
data=pdDataFrame(data,columns=['订单','仓库'])
9、只保留data中订单仓库列的数据
data = data[(data[u'展现量'] > 0)]
10、只保留展现量列中大于0的数据
data= data[data["订单"]strcontains('000')]
11、只保留订单列中包含'000'的数据
data= data[data["仓库"]=='正品仓']
12、只保留仓库列是'正品仓'的数据
xs= data[data["店铺"]=='南极人']['销售额']
13、获取店铺是南极人的销售额数据
data['订单'] = data['订单']str[3:7]
14、订单列的值只保留4-8个字节的值
data["邮资"] = npwhere((data['店铺']strcontains('T|t')) & -(data['仓库'] == '代发仓'), 8, data['邮资'])
15、满足店铺列包含 T 或 t 并且仓库不等于'代发仓'的话,将邮资的值改成8,否则值不变
data = nparray(data)tolist()
16、将data从DataFrame转换成列表
data=pdDataFrame(data)
17、将列表转换成DataFrame格式
zhan = data[u'展现']sum()round(2)
18、将data中所有展现列数据求和,并取两位小数
sum=datagroupby(['店铺'])['刷单']sum()
19、将data中按照店铺对刷单进行求和
counts=data['店铺']value_counts()
20、将data按照店铺进行计算
avg=datagroupby(['店铺'])['刷单']mean()
21、将data按照店铺对刷单进行求平均数
count = pdconcat([counts,sum], axis=1, ignore_index=True, sort=True)
22、将counts和sum两个DataFrame进行了组合
count=countrename(index=str, columns={0: "订单", 1: "成本"})
23、将新生成的DataFrame列名进行修改
data = pdmerge(sum, counts, how='left', left_on='店铺', right_on='店铺')
24、将列表转换成DataFrame格式
from openpyxl import Workbook
wb=Workbook()
ws1=wbactive
datato_excel('36xlsx')
wbclose()
25、data完整的写入到关闭过程,执行此 *** 作的时候36xlsx不能是打开状态
excel格式 *** 作
样式处理:
1、打开36xlsx
sheet=workbookworksheets[0]
2、将第一个sheet对象赋值给sheet
sheetcolumn_dimensions['A']width = 200
3、将A列的宽度设置为20
sheetrow_dismensions[1]height = 200
4、将第一行的行高设置为20
sheetmerge_cells('A1:A2')
5、将sheet表A1和A2单元格合并
sheetunmerge_cells('A1:A2')
6、将sheet表A1和A2单元格取消合并
sheetinsert_rows(2,2)
7、将sheet表从第2行插入2行
sheetinsert_cols(3,2)
8、将sheet表从第3列插入2列
sheetdelete_rows(2)
9、删除第2行
sheetdelete_cols(3, 2)
10、将sheet表从第3列开始删除2列
from openpyxlstyles import Font, Border, PatternFill, colors, Alignment
11、分别引入字体、边框、图案填充、颜色、对齐方式
sheetcell(i,j)font = Font(name='Times New Roman', size=14, bold=True, color=colorsWHITE)
12、设置sheet表第 i 行第 j 列的字体
sheetcell(i,j)alignment = Alignment(horizontal='center', vertical='center')
13、设置sheet表第 i 行第 j 列的字体对齐方式
left, right, top, bottom = [Side(style='thin', color='000000')] 4sheetcell(i,j)border = Border(left=left, right=right, top=top, bottom=bottom)
14、引入边框样式并调用
fill = PatternFill("solid", fgColor="1874CD")sheetcell(1,j)fill = fill
15、引入填充样式,并调用
import xlrd
from openpyxl import Workbook
from openpyxl import load_workbook
workbook=load_workbook(filename='C:/Users/EDZ/Desktop/工作/20210803/大兄弟xlsx')
sheet=workbookactive
sheetinsert_cols(idx=1)
sheetmerge_cells(A1:A3)
sheet['A1']=['上海','山东','浙江']
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)