這里介紹Python中使用Pandas讀取Excel的方法
一、軟件環境:
OS:Win7 64位
Python 3.7
二、文件准備
1、項目結構:
2、在當前實驗文件夾下建立一個Source文件夾,里面放待讀取的Excel文件
3、待讀取的Excel文件名:Book1.xlsx,Sheet Name:Sheet1
內容示例:
三、代碼參考
代碼中已進行了注釋說明,這里就不重復說明了。
1、第一行作為列名處理,數據的第1行實際是從Excel的第2行開始,數據的最大行數等於Excel的最大行數減1
#! -*- coding utf-8 -*- #! @Time :2019/3/20 22:00 #! Author :Frank Zhang #! @File :Pandas_ReadExcelV1.0.py #! Python Version 3.7 """ 模塊功能:讀取當前文件夾下的Source里的Excel文件,顯示其相關信息 說明:默認把Excel的第一行當做列名,數據的第1行是從Excel的第2行開始 這里獲取的最大行是Excel的最大行減去作為列名的第1行 """ import pandas as pd sExcelFile="./Source/Book1.xlsx" df = pd.read_excel(sExcelFile,sheet_name='Sheet1') #獲取最大行,最大列 nrows=df.shape[0] ncols=df.columns.size print("=========================================================================") print('Max Rows:'+str(nrows)) print('Max Columns'+str(ncols)) #顯示列名,以列表形式顯示 print(df.columns) #顯示列名,並顯示列名的序號 for iCol in range(ncols): print(str(iCol)+':'+df.columns[iCol]) #列出特定行列,單元格的值 print(df.iloc[0,0]) print(df.iloc[0,1]) print("=========================================================================") #查看某列內容 #sColumnName='fd1' print(df[sColumnName]) #查看第3列的內容,列的序號從0開始 sColumnName=df.columns[2] print(df[sColumnName]) #查看某行的內容 iRow=1 for iCol in range(ncols): print(df.iloc[iRow,iCol]) #遍歷逐行逐列 for iRow in range(nrows): for iCol in range(ncols): print(df.iloc[iRow,iCol]) print('=====================================End==================================')
2、不把第1行作為列名,讀取Excel那就沒有列名,需增加參數:header=None
代碼如下:
#! -*- coding utf-8 -*- #! @Time :2019/3/20 9:44 #! Author :Frank Zhang #! @File :Pandas_ReadExcelV1.1.py #! Python Version 3.7 """ 模塊功能:讀取當前文件夾下的Source里的Excel文件,顯示其相關信息 說明:數據從第1行開始,不設列名,不把第1行作為列名 這里獲取的最大行就是是Excel的最大行 """ import pandas as pd sExcelFile="./Source/Book1.xlsx" df = pd.read_excel(sExcelFile,sheet_name='Sheet1',header=None) #獲取最大行和最大列數 nrows=df.shape[0] ncols=df.columns.size print("=====================================================") print('Max Rows: '+str(nrows)) print('Max Columns: '+str(ncols)) #顯示某特定單元格的值 print(df.iloc[0,0]) print(df.iloc[0,1]) print("=====================================================") #查看某行的內容 print("====================顯示某一行=======================") #iRow=1 print("請輸入行號(1-"+str(nrows)+"):") iRow=int(input())-1 for iCol in range(ncols): print(df.iloc[iRow,iCol]) print("====================顯示某一列=======================") #iCol=1 print("請輸入列號(1-"+str(ncols)+"):") iCol=int(input())-1 if iCol>=0 and iCol<=ncols: for iRow in range(nrows): print(df.iloc[iRow,iCol]) else: print('輸入了錯誤的列號') #遍歷逐行逐列 print("\n逐行逐列顯示:") for iRow in range(nrows): for iCol in range(ncols): print(df.iloc[iRow,iCol]) print('=========================End=========================')
示例2增加了動態輸入行號和列號,顯示相應行列的內容。
這兩個示例都是可以運行的。