以下介紹使用pythonpandas套件讀寫excelpythonpandas版本如下:

  • Python 3.7.4
  • Pandas 0.25.1

進行之前請安裝好上述的版本。

 

大綱

 

這次要測試的資料如下圖:

1.png

 

使用pandas讀取excel

import pandas as pd
def readExcel(filepath):
    df = pd.read_excel(filepath,
sheet_name='工作表1')
    return df

 

if __name__ =='__main__':

    filepath="test.xlsx"

    df = readExcel(filepath)

    print(df)

一開始先把pandas import 到專案中並取名為pd,接著建置一個涵式 readExcel,直接取用 pandas read_excel進行excel的讀取,filepathexcel的路徑名稱與檔名, sheet_name 則代表要讀取哪張sheet

 

執行結果如下:

2.png

 

使用pandas讀取excel特定列(row)

如果我們只要讀取特定B欄,可以已下述方式讀取:

方法一,在 read_excel後面參數usecols加上指定欄位:

import pandas as pd

  def readExcel(filepath):

    df = pd.read_excel(filepath, sheet_name='工作表1',usecols='B')

    return df

  

  if __name__ =='__main__':

    filepath="test.xlsx"

    df = readExcel(filepath)

    print(df)

 

這樣就只會讀取B欄位的資料如下:

結果圖:

3.png

 

使用pandas讀取excel特定列的範圍

import pandas as pd
def readExcel(filepath):
    df = pd.read_excel(filepath,
sheet_name='工作表1')
    return df

if __name__ =='__main__':
    filepath="test.xlsx"
   
df = readExcel(filepath)
   
print(df.iloc[1:3,1])

iloc這個用法是[row, column],裡面的1:3代表取用index 1但小於index 3row值,取到的是index 1,2,換成excel中的位置是3,4iloc會忽列excel的第一行,所以row實際上都對應到excel+2位置,後面的column固定寫1,代表是取用excel中的B欄,結果如下:

4.png

 

可以再做一個實驗看看,我們改成如下:

print(df.iloc[0:3,1])

理論上是取excel2,3,4,如下圖,證實是正確的

5.png

 

使用pandas讀取excel特定欄(column)

import pandas as pd
def readExcel(filepath):
    df = pd.read_excel(filepath,
sheet_name='工作表1')
    return df

if __name__ =='__main__':
    filepath="test.xlsx"
   
df = readExcel(filepath)
   
print(df.iloc[1,0:3])

現在我們來讀取excel中的row 3,如下圖黃底:

圖片6.png

 

row的讀取中,pandasiloc會把row 1忽略,所以iloc下,row index 0 代表的就是excel row 2 iloc[1:0:3] 意思就是讀取row 30:3則是讀取欄位A~C

 

結果:

˙圖片7.png

 

使用pandas讀取excel特定欄的範圍

修改上述的程式碼,把iloc[1:1:3] 就是讀取excelrow3的欄BC

 

結果:

圖片8.png

 

 

使用pandas讀取excel的特定儲存欄

如果要指定,就是輸入座標,iloc[1,2]: 讀取excel row 3的欄C

 

結果:

圖片9.png

使用pandas將資料寫到excel

我們將下述的資料寫到excel:

圖片10.png

 

import pandas as pd
def writeToExcel(path: str, data: dict):
    writer = pd.ExcelWriter(path)
    data = pd.DataFrame(data)
    data.to_excel(writer,
sheet_name="sheet1")
   
# 以下是紀錄要寫到不同的sheet方法
    # sheetNames = data.keys()
    # for sheet in sheetNames:
    #     data.to_excel(writer, sheet_name=sheet)
   
writer.save()

if __name__=="__main__":
    path =
"writeExcelSample.xls"
   
data = {"name":["Ken","Bob"],"money":["300","100"]}
    writeToExcel(path,data)

data key就是JSONkey欄位,也代表excel中的欄,資料會是放直的,結果如下圖:

圖片11.png

參考連結:

https://blog.csdn.net/qq_45769063/article/details/121268110

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 葛瑞斯肯 的頭像
    葛瑞斯肯

    葛瑞斯肯樂活筆記

    葛瑞斯肯 發表在 痞客邦 留言(0) 人氣()