在机器学习模型的建立中,不得不借助于Excel强大的统计分析能力,这个时候就牵涉到了如何将python直接处理得到的数据存入excel表格当中以及获取表格的数据进行分析,简单的说,学会使用Python操作Excel文件后,可以运用到机器学习之中,也可以让平常生活中繁琐的工作自动化处理。

openpyxl包安装

Python处理Excel的包是openpyxl,如果你是直接下载的anaconda安装的Python库,那么下载的时候,自带的就已经安装了openpyxl,如果不是,也可以直接在cmd之中,使用pip install openpyxl安装。

安装完成之后,我们应该了解一下Excel的组成部分,如下图所示:

python 数据写到表格中如何换行 python 处理表格数据_Python

openpyxl读取excel

看到上图就应该知道,首先,我们应该获取Excel文件:

import openpyxl as openpyxl

wb = openpyxl.load_workbook('myexcel.xlsx')

读取excel文件常见问题解决:

raise IOError("File contains no valid workbook part")

OSError: File contains no valid workbook part

原因:用openpyxl 模块读取了xls格式的excel,或者读取的是xls文件通过改变后缀变成xlsx格式的文件

解决:重新创建xlsx的文件


zipfile.BadZipFile: File is not a zip file

之前的文件另存为就解决了这个问题,然后把包名也换了,然后就不报错了

对于已经有Excel目标文件来说,使用以上方法,就可以直接获取excel文件,如果你想重新创建一个全新的Excel文件:

wb = openpyxl.Workbook()

已经获取了Excel,但其实我们的数据都在一个一个的表中,如下图所示:

python 数据写到表格中如何换行 python 处理表格数据_Python_02


一个Excel文件中可以有多个表,一般而言操作的都是第一个表,而获取表的方法也有很多,比如:

sheet = wb.worksheets[0]
 
sheet = wb['sheet1']

以上两种方式都是获取第一个表,要是我们使用wb=openpyxl.Workbook()方式,新创建的一个Excel呢?我们需要创建一个操作的表格:

wb.create_sheet(index=0,title='小猪')
 
wb.create_sheet(index=1,title='佩奇')

读取excel表数据

当我们获取表格之后,就可以快乐的操作我们的数据了。

比如这个时候,你想获取表格中的A1单元格中的文本,就可以使用如下方法:

import os
from openpyxl import Workbook
from openpyxl import load_workbook

filename = 'my_excel.xlsx'
if os.path.exists(filename):
    wb = load_workbook(filename)
else:
    wb = Workbook()


sheet = wb.worksheets[0]
sheet = wb['Sheet1']

print(sheet['B2'].value)

输出结果展示:

python 数据写到表格中如何换行 python 处理表格数据_数据_03


要遍历某个表格中的所有数据,该怎么操作呢?这里我们先假如我有如下表格:

python 数据写到表格中如何换行 python 处理表格数据_数据_04


那么遍历起来的代码如下:

import os
from openpyxl import Workbook
from openpyxl import load_workbook

filename = 'my_excel.xlsx'
if os.path.exists(filename):
    wb = load_workbook(filename)
else:
    wb = Workbook()

sheet = wb.worksheets[0]
sheet = wb['Sheet1']
for row in sheet.iter_rows():
    for cell in row:
        print(cell.coordinate, cell.value) #  坐标; 值

上面是逐行遍历,首先我们获取Excel文件,然后获取当中的第一个表格,然后通过获取行数,以及列数进行遍历,openpyxl获取行数的方法为sheet.iter_rows(),获取列数可以直接通过当前行获取也就是for cell in row,代码简洁明了,实现效果如下:

python 数据写到表格中如何换行 python 处理表格数据_Python_05

更新excel表数据

那么怎么修改数据呢?我们先来看看代码:

sheet['A1'].value = '唤醒手腕'
sheet.cell(1, 1).value = '唤醒手腕'
sheet.cell(1, 1, '唤醒手腕')

这三种方式,都可以修改Excel某个单元格数据,同时也可以通过前两种方式获取到这个单元格的值,python的优点就是这么简单明了。

经过这些操作之后,我们还有一个事情要做,那就是如果保存我们创建,或者修改过后的Excel,其实也很简单,一句话就可以做到,代码如下:

wb.save('new_my_excel.xlsx')

excel单元格遍历

单元格遍历

ws.values 返回的是生成器,是将一行数据作为一个元组单元组成的,是由值组成的

ws.values 获取的内容是从 “A1” 到 “最大行最大列”

ws.values # <generator object values at 0x00000297EAB07F68>

for item in sheet.values:
    print(item)
    
"""
('index', 'name', 'school', 'age')
(1, '唤醒手腕', '清华大学', 20)
(2, '菠萝吹雪', '浙江大学', 22)
(3, '麦克劳林', '武汉大学', 24)
"""