1. 用openpyxl模块处理excel表格
安装openpyxl模块
pip3 install --user openpyxl
对excel的读取操作
from openpyxl import * #导入openpyxl模块
wb=load_workbook('表格名.xlsx') #读取excel表格
sheet=wb[wb.sheetnames[0]] #读取excel表格中第一张表
# 遍历B列
for i in range(1, sheet.max_row+1):
print(sheet["B"+str(i)].value)
#按列打印B列、C列和D列,column是自己定义的
for column in sheet["B:D"]:
for cell in column:
print(cell.value)
#按行打印3行和4行,row是自己定义的
for row in sheet["3:4"]:
for cell in row:
print(cell.value)
#取出表格中3、4行的2到5列的元素,构成矩阵x
for row in sheet["3:4"]: #此时的row为元组
a=[]
for column in row[2:5]: #对元组操作
a.append(column.value)
x.append(a)
2.用pandas处理.csv表格
读取
import pandas as pd
import numpy as np
data = pd.read_csv("文件名.csv") # 将train.csv文件的内容赋给data
# 将data的内容放到一个矩阵里面,之后只要对这个矩阵进行操作即可,这里会自动把标题行去掉
data_array = np.array(data)
row0 = data_array[0] # 取第零行赋给row0
row0_2 = data_array[0:2] # 取第0行和第1行赋给row0_2
column0 = data_array[:, 0] # 取第0列
column0_2 = data_array[:, 0:2] # 取第0列和第1列赋给column0_2
column0_2_3 = data_array[:, [0, 2, 3]] # 取第0、2、3列赋值给column0_2_3
写入
# 创建一个可写的.csv文件
f = open('submission.csv', 'w', encoding='utf-8')
csv_writer = csv.writer(f)
# 往这个.csv文件中按行写入"sid", "label"
csv_writer.writerow(["sid", "label"])
for i in range(5):
csv_writer.writerow([i, 2*i])
结果:
sid,label
0,0
1,2
2,4
3,6
4,8
补充:
上面所述是在程序与数据文件在一个文件夹下面的情况,此时读取数据的时候可以直接用:
data = pd.read_csv("文件名.csv") # 将train.csv文件的内容赋给data
如果程序和文件不在一个地方就需要写一下路径才能使用,路径可以通过找到文件然后右键点击属性就可以看到路径了。
例如:
value_df = pd.read_csv('/home/ubuntu/PycharmProjects/file_name.csv')
3. 用xlrd处理.xls文件
导入包
import xlrd
读取
# 调用open_workbook()方法打开一个.xls文件
file_xls = xlrd.open_workbook('file_path/file_name.xls')
# 调用sheet_by_name()方法,读取文件的sheet页
st = file_xls .sheet_by_name('sheet_name')
# 调用sheet_names()方法获取.xls文件中的所有sheet页
all_sheet = file_xls .sheet_names()
# 调用sheets()方法加序号,获取第0个sheet页对象
ta = file_xls .sheets()[0]
# 获取ta中数据的行数
rw = ta.nrows
# 在cell()中传入两个值,一个行一个列,然后value获取对应单元格的值
val = ta.cell(1, 0).value # 获取第一行第零列的值