Python學習之幾種存取xls/xlsx檔案的方法
阿新 • • 發佈:2019-02-06
想在深度學習程式執行時動態存下來一些引數。
存成Excel檔案檢視方便,就查了幾種方法,做個測試。因為我平常也不怎麼用 Excel,簡單的存取資料就夠了。
xlwt/xlrd庫 存Excel檔案:(如果儲存資料中有字元,那麼寫法還有點小小的變化)
import xlwt workbook = xlwt.Workbook(encoding='utf-8') booksheet = workbook.add_sheet('Sheet 1', cell_overwrite_ok=True) #存第一行cell(1,1)和cell(1,2) booksheet.write(0,0,34) booksheet.write(0,1,38) #存第二行cell(2,1)和cell(2,2) booksheet.write(1,0,36) booksheet.write(1,1,39) #存一行資料 rowdata = [43,56] for i in range(len(rowdata)): booksheet.write(2,i,rowdata[i]) workbook.save('test_xlwt.xls')
讀Excel檔案:(同樣是對於數值型別資料)
import xlrd workbook = xlrd.open_workbook('D:\\Py_exercise\\test_xlwt.xls') print(workbook.sheet_names()) #檢視所有sheet booksheet = workbook.sheet_by_index(0) #用索引取第一個sheet booksheet = workbook.sheet_by_name('Sheet 1') #或用名稱取sheet #讀單元格資料 cell_11 = booksheet.cell_value(0,0) cell_21 = booksheet.cell_value(1,0) #讀一行資料 row_3 = booksheet.row_values(2) print(cell_11, cell_21, row_3) >>>34.0 36.0 [43.0, 56.0]
openpyxl 庫 存Excel檔案:
from openpyxl import Workbook
workbook = Workbook()
booksheet = workbook.active #獲取當前活躍的sheet,預設是第一個sheet
#存第一行單元格cell(1,1)
booksheet.cell(1,1).value = 6 #這個方法索引從1開始
booksheet.cell("B1").value = 7
#存一行資料
booksheet.append([11,87])
workbook.save("test_openpyxl.xlsx")
讀Excel檔案:
原理上其實都一樣,就寫法上有些差別。from openpyxl import load_workbook workbook = load_workbook('D:\\Py_exercise\\test_openpyxl.xlsx') #booksheet = workbook.active #獲取當前活躍的sheet,預設是第一個sheet sheets = workbook.get_sheet_names() #從名稱獲取sheet booksheet = workbook.get_sheet_by_name(sheets[0]) rows = booksheet.rows columns = booksheet.columns #迭代所有的行 for row in rows: line = [col.value for col in row] #通過座標讀取值 cell_11 = booksheet.cell('A1').value cell_11 = booksheet.cell(row=1, column=1).value
其實如果對儲存格式沒有要求的話,我覺得存成 csv檔案 也挺好的:
import pandas as pd
csv_mat = np.empty((0,2),float)
csv_mat = np.append(csv_mat, [[43,55]], axis=0)
csv_mat = np.append(csv_mat, [[65,67]], axis=0)
csv_pd = pd.DataFrame(csv_mat)
csv_pd.to_csv("test_pd.csv", sep=',', header=False, index=False)
因為它讀起來非常簡單:
import pandas as pd
filename = "D:\\Py_exercise\\test_pd.csv"
csv_data = pd.read_csv(filename, header=None)
csv_data = np.array(csv_data, dtype=float)