python處理excel資料也是經常需要用到的。本文介紹2種python讀取excel的方法:openpyxl和pandas。事實上,pandas讀取excel比openpyxl更方便,有需要的直接往後拉,看第二種。
import openpyxl
excel_name = 't1.xlsx'
wb = openpyxl.load_workbook(excel_name)
ws = wb.active
print(ws.cell(row=1, column=1).value)
# or
print(ws.cell(1, 1).value)
這裡就會列印第一行第一列的那個值,即a1處的值。
openpyxl的好處是,它會用excel的結構來對待**資料。如上面**所示,ws就是從excel裡獲取到的結構化資料。這個結構化資料既不是list,也不是dict,而是擁有excel結構的資料。可以通過ws.cell(row, column)來訪問**中的每乙個格仔。
上面的**還可以這樣變換:
import openpyxl
excel_name = 't1.xlsx'
wb = openpyxl.load_workbook(excel_name)
ws = wb.active
print(ws['a1'].value)
這裡的a1就是第一行第一列的那個值,你搞清楚excel**的行列就應該知道a1是什麼,同理還有a2,b2...等等。
如果想遍歷這個excel該怎麼辦呢?
沒錯,還是得for迴圈,
import openpyxl
excel_name = 't1.xlsx'
wb = openpyxl.load_workbook(excel_name)
ws = wb.active
# print a column
for r in range(ws.max_row):
print(ws.cell(r+1, 1).value)
這裡有個小細節,因為excel中行和列的取值都不能為0,即都是從1開始,所以需要r+1。
如果咱需要把excel中的某列或者某行轉換成python最方便處理的list,怎麼做呢?
那就自己寫個函式唄:
import openpyxl
excel_name = 't1.xlsx'
wb = openpyxl.load_workbook(excel_name)
ws = wb.active
def read_excel_by_rc(ws, r=-1, c=-1):
ls =
if r == -1 and c == -1:
return
if r > 0 and c == -1:
for c in range(ws.max_column):
elif r == -1 and c > 0:
for r in range(ws.max_row):
else:
print('please input right (r, c) pair!')
return ls
print(read_excel_by_rc(ws, r=1))
print(read_excel_by_rc(ws, c=3))
pandas直接可以把excel**當numpy矩陣處理,更加方便。
import pandas
excel_name = 't1.xlsx'
pd_excel = pandas.read_excel(excel_name)
# 如果有多個sheet, 可以指定sheet name
# pd_excel = pandas.read_excel(excel_name, sheet_name='student')
table1 = pd_excel.values
print(table1)
print(type(table1))
# table1完全可以被當作乙個二維list來索引,方便又好用
table1完全可以被當作乙個二維list來索引,方便又好用。 快速讀取SharedPreferences資料
在開發時時常要用到sharedpreferences存入和讀取一些資料,如果activity很多的話,每次都定義一次sharedpreferences非常麻煩。其實可以很簡單地將sharedpreferences的讀寫抽出來形成乙個工具類,方便呼叫 public class sharedprefer...
Xml快速讀取方式
讀寫xml的選擇順序比較 xmldocument xdocument會將xml全部載入到記憶體,造成記憶體浪費,不適合大資料xml處理。xmlreader 以及子類xmltextreader 則適合快速的讀取,它是唯讀的,並且只向前讀取。其讀取的效能比xml linq快 xml linq 則是.ne...
C 下快速讀取檔案
最近在寫分類演算法,需要和 svm效果做對比。發現svm讀檔案的速度慢的不能忍,所以想 一下windows下的最快的檔案讀取速度。輸入說明 1.輸入資料可能有幾千個1m左右的小檔案 2.也可能為100m左右的單個檔案 3.最終資料有數w行,每一行格式如下 1 201 1 3148 1 3983 1 ...