欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > 淺談Python xlwings 讀取Excel文件的正確姿勢

淺談Python xlwings 讀取Excel文件的正確姿勢

熱門標簽:正安縣地圖標注app 螳螂科技外呼系統(tǒng)怎么用 電銷機器人系統(tǒng)廠家鄭州 地圖地圖標注有嘆號 遼寧智能外呼系統(tǒng)需要多少錢 阿里電話機器人對話 qt百度地圖標注 400電話申請資格 舉辦過冬奧會的城市地圖標注

使用Python加載最新的Excel讀取類庫xlwings可以說是Excel數據處理的利器,但使用起來還是有一些注意事項,否則高大上的Python會跑的比老舊的VBA還要慢。

這里我們對比一下,用幾種不同的方法,從一個Excel表格中讀取一萬行數據,然后計算結果,看看他們的耗時。

1. 處理要求:

一個Excel表格中包含了3萬條記錄,其中B,C兩個列記錄了某些計算值,讀取前一萬行記錄,將這兩個列的差值進行計算,然后匯總得出差的和。

文件是這個樣子:Book300s.xlsx 。

2. 處理方式有以下3種,我們對比一下耗時的大小。

處理方式 代碼名稱
1. 使用Python的xlwings類庫,讀取Excel文件,然后采用Excel的Sheet和Range的引用方式讀取并計算 XLS_READ_SHEET.py
2. 直接使用Excel自帶的VBA語言進行計算 VBA

3. 使用Python的xlwings類庫,讀取Excel文件,然后采用Python的自帶數據類型List列表進行數據存儲和計算

XLS_READ_LIST.py

3. 首先測試第一種,XLS_READ_SHEET.py

使用Python的xlwings類庫,讀取Excel文件,然后引用Excel的Sheet和Range的方式來讀取并計算

#coding=utf-8
import xlwings as xw
import pandas as pd
import time

start_row = 2 # 處理Excel文件開始行
end_row = 10002 # 處理Excel結束行

#記錄打開表單開始時間
start_open_time = time.time()

#指定不顯示地打開Excel,讀取Excel文件
app = xw.App(visible=False, add_book=False)
wb = app.books.open('D:/PYTHON/TEST_CODE/Book300s.xlsx') # 打開Excel文件
sheet = wb.sheets[0] # 選擇第0個表單

#記錄打開Excel表單結束時間
end_open_time = time.time()

#記錄開始循環(huán)計算時間
start_run = time.time()

row_content = []
#讀取Excel表單前10000行的數據,Python的in range是左閉右開的,到10002結束,但區(qū)間只包含2到10001這一萬條
for row in range(start_row, end_row):
  row_str = str(row)
  #循環(huán)中引用Excel的sheet和range的對象,讀取B列和C列的每一行的值,對比計算
  start_value = sheet.range('B' + row_str).value
  end_value = sheet.range('C' + row_str).value
  if start_value = end_value:
    values = end_value - start_value
    #同時測試List數組添加記錄
    row_content.append(values)

#計算和
total_values = sum(row_content)

#記錄結束循環(huán)計算時間
end_run = time.time()
sheet.range('E2').value = str(total_values)
sheet.range('E3').value = '使用Sheet計算時間(秒):' + str(end_run - start_run)

#保存并關閉Excel文件
wb.save()
wb.close()

print ('結果總和:', total_values)
print ('打開并讀取Excel表單時間(秒):',  end_open_time - start_open_time)
print ('計算時間(秒):',  end_run - start_run)
print ('處理數據條數:' , len(row_content))

用Python直接訪問Sheet和Range取值的計算結果如下:

讀取Excel文件用時 4.47秒

處理Excel 10000 行數據花費了117秒的時間。

4. 然后我們用Excel自帶的VBA語言來處理一下相同的計算。也是直接引用Sheet,Range等Excel對象,但VBA的數組功能實在是不好用,就不測試添加數組了。

Option Explicit

Sub VBA_CAL_Click()
  Dim i_count As Long
  Dim offset_value, total_offset_value As Double
  Dim st, et As Date
  st = Time()

  i_count = Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
  i_count = 10001
  For i_count = 2 To i_count
     If Range("C"  i_count).Value > Range("B"  i_count).Value Then
       offset_value = Range("C"  i_count).Value - Range("B"  i_count).Value
       total_offset_value = total_offset_value + offset_value
     End If
  Next i_count

  et = Time()
  Range("E2").Value = total_offset_value
  Range("E3").Value = et - st

  MsgBox "Result: "  total_offset_value  Chr(10)  "Running time: "  et - st
End Sub

VBA處理計算結果如下:

保存了3萬條數據的Excel文件是通過手工打開的,在電腦上大概花費了8.2秒的時間

處理Excel 前10000行數據花費了1.16秒的時間。

5.使用Python的xlwings類庫,讀取Excel文件,然后采用Python的自帶數據類型List進行數據存儲和計算,計算完成后再將結果寫到Excel表格中

#coding=utf-8
import xlwings as xw
import pandas as pd
import time

#記錄打開表單開始時間
start_open_time = time.time()

#指定不顯示地打開Excel,讀取Excel文件
app = xw.App(visible=False, add_book=False)
wb = app.books.open('D:/PYTHON/TEST_CODE/Book300s.xlsx') # 打開Excel文件
sheet = wb.sheets[0] # 選擇第0個表單

#記錄打開Excel表單結束時間
end_open_time = time.time()

#記錄開始循環(huán)計算時間
start_run = time.time()

row_content = []
#讀取Excel表單前10000行的數據,并計算B列和C列的差值之和
list_value = sheet.range('A2:D10001').value
for i in range(len(list_value)):
   #使用Python的類庫直接訪問Excel的表單是很緩慢的,不要在Python的循環(huán)中引用sheet等Excel表單的單元格,
   #而是要用List一次性讀取Excel里的數據,在List內存中計算好了,然后返回結果
   start_value = list_value[i][1]
   end_value = list_value[i][2]
   if start_value = end_value:
     values = end_value- start_value
     #同時測試List數組添加記錄
     row_content.append(values)

#計算和
total_values = sum(row_content)
#記錄結束循環(huán)計算時間
end_run = time.time()
sheet.range('E2').value = str(total_values)
sheet.range('E3').value = '使用List 計算時間(秒):' + str(end_run - start_run)

#保存并關閉Excel文件
wb.save()
wb.close()

print ('結果總和:', total_values)
print ('打開并讀取Excel表單時間(秒):',  end_open_time - start_open_time)
print ('計算時間(秒):',  end_run - start_run)
print ('處理數據條數:' , len(row_content))

用Python的LIST在內存中計算結果如下:

讀取Excel文件用時 4.02秒

處理Excel 10000 行數據花費了 0.10 秒的時間。

6 結論:

Python操作Excel的類庫有以往有 xlrd、xlwt、openpyxl、pyxll等,這些類庫有的只支持讀取,有的只支持寫入,并且有的不支持Excel的xlsx格式等。

所以我們采用了最新的開源免費的xlwings類庫,xlwings能夠很方便的讀寫Excel文件中的數據,并支持Excel的單元格格式修改,也可以與pandas等類庫集成使用。

VBA是微軟Excel的原生二次開發(fā)語言,是辦公和數據統(tǒng)計的利器,在金融,統(tǒng)計,管理,計算中應用非常廣泛,但是VBA計算能力較差,支持的數據結構少,編輯器粗糙。

雖然VBA有很多不足,但是VBA的宿主Office Excel卻是天才程序員基于C++開發(fā)的作品,穩(wěn)定,高效,易用 。

有微軟加持,VBA雖然數據結構少,運行速度慢,但訪問自己Excel的Sheet,Range,Cell等對象卻速度飛快,這就是一體化產品的優(yōu)勢。

VBA讀取Excel的Range,Cell等操作是通過底層的API直接讀取數據的,而不是通過微軟統(tǒng)一的外部開發(fā)接口。所以Python的各種開源和商用的Excel處理類庫如果和VBA來比較讀寫Excel格子里面的數據,都是處于劣勢的(至少是不占優(yōu)勢的),例子2的VBA 花費了1.16秒就能處理完一萬條數據。

Python基于開源,語法優(yōu)美而健壯,支持面向對象開發(fā),最重要的是,Python有豐富而功能強大的類庫,支持多種工作場景的開發(fā)。

我們應該認識到,Excel對于Python而言,只是數據源文件的一種,當處理大量數據時,Python處理Excel就要把Excel當數據源來處理,一次性地讀取數據到Python的數據結構中,而不是大量調用Excel里的對象,不要說頻繁地寫入Excel,就是頻繁地讀取Excel里面的某些單元格也是效率較低的。例子1的Python頻繁讀取Sheet,Range數據,結果花費了117秒才處理完一萬條數據。

Python的計算效率和數據結構的操作方便性可比VBA強上太多,和VBA聯(lián)合起來使用,各取所長是個好主意。

當Excel數據一次性讀入Python的內存List數據結構中,然后基于自身的List數據結構在內存中計算,例子3的Python只用了 0.1秒就完成了一萬條數據的計算并將結果寫回Excel。

總結:

處理方式-計算Excel里的一萬條記錄的差值的總和 效率
1. 使用Python的xlwings類庫,采用Excel的Sheet和Range的引用方式,按行讀取Excel文件的記錄并計算 差,計算用時 117秒
2. 直接使用Excel自帶的VBA語言進行計算,也是采用Excel的Sheet和Range的引用方式,按行讀取Excel文件的記錄并計算 很高 ,計算用時 1.16秒

3. 使用Python的xlwings類庫,一次性讀取Excel文件中的數據到Python的List數據結構中,然后在Python的List列表中進行數據存儲和計算

最高,計算用時 0.1秒     

到此這篇關于淺談Python xlwings 讀取Excel文件的正確姿勢的文章就介紹到這了,更多相關Python xlwings 讀取Excel內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 如何用python合并多個excel文件
  • python合并多個excel文件的示例
  • 使用python將多個excel文件合并到同一個文件的方法
  • 使用Python橫向合并excel文件的實例
  • Python批量合并有合并單元格的Excel文件詳解
  • Python將多個excel文件合并為一個文件
  • 使用Python快速打開一個百萬行級別的超大Excel文件的方法
  • Python3利用openpyxl讀寫Excel文件的方法實例
  • 基于Python的接口自動化讀寫excel文件的方法
  • python基于openpyxl生成excel文件
  • Python xlrd/xlwt 創(chuàng)建excel文件及常用操作
  • 教你用Python代碼實現合并excel文件

標簽:隨州 興安盟 濟源 昭通 信陽 淘寶好評回訪 阜新 合肥

巨人網絡通訊聲明:本文標題《淺談Python xlwings 讀取Excel文件的正確姿勢》,本文關鍵詞  淺談,Python,xlwings,讀取,Excel,;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《淺談Python xlwings 讀取Excel文件的正確姿勢》相關的同類信息!
  • 本頁收集關于淺談Python xlwings 讀取Excel文件的正確姿勢的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    毛茸茸free性熟hd| 欧美日韩中文字幕视频| 美女黄色一级视频| 国产熟妇久久777777| 日本女人性生活视频| 全网免费在线播放视频入口| 欧美一区二区三区免费视频| 久久久久国产精品麻豆ai换脸 | 一区二区三区中文字幕| 天天影视涩香欲综合网| 极品少妇一区二区三区精品视频| 成人免费精品视频| 欧美日韩一区二区三区四区五区六区| 欧美视频自拍偷拍| 26uuuu精品一区二区| 亚洲卡通动漫在线| 99riav久久精品riav| 亚洲精品成人无码熟妇在线| 欧美一二三四在线| 日本不卡一二三区黄网| 波多野结衣精品在线| 中文字幕免费视频| 欧美日韩国产另类不卡| 久久精品综合网| 国内精品在线播放| 2一3sex性hd| 91精品国产综合久久婷婷香蕉| |精品福利一区二区三区| 男人的j进女人的j一区| 国产无套精品一区二区三区| 天天色天天综合| 欧美成人性福生活免费看| 中文字幕一区二区三区不卡在线| 成人黄色777网| 91国产福利在线| 国产精品天天看| 奇米一区二区三区| 蜜桃传媒一区二区亚洲| 91精品欧美一区二区三区综合在 | 91麻豆精品国产自产在线 | 国产精品成人免费观看| 亚洲最快最全在线视频| 成人高清免费在线播放| 91精品福利在线| 亚洲超碰97人人做人人爱| 99久久精品国产观看| 欧美三级日韩在线| 夜夜嗨av一区二区三区中文字幕| 毛茸茸free性熟hd| 久久精品人人做人人爽人人| 久久99蜜桃精品| aa片在线观看视频在线播放| 欧美日本精品一区二区三区| 奇米四色…亚洲| 久久爱一区二区| 亚洲午夜精品在线| 俄罗斯黄色录像| 欧美日本视频在线| 激情图片小说一区| 在线视频综合导航| 奇米777欧美一区二区| 黄色一级大片在线免费观看| 久久久久久综合| 91麻豆自制传媒国产之光| 在线一区二区观看| 久久成人免费网站| 日本韩国欧美在线| 另类小说图片综合网| 天天摸日日摸狠狠添| 国产欧美精品区一区二区三区| 精品一区二区日韩| 色狠狠一区二区三区香蕉| 亚洲婷婷综合色高清在线| 成人18精品视频| 日韩无一区二区| 韩国毛片一区二区三区| 一本久久精品一区二区| 人人精品人人爱| 色综合 综合色| 理论片日本一区| 欧美日韩不卡一区| 成人午夜视频福利| 久久综合九色综合97婷婷女人| 巨乳女教师的诱惑| 制服丝袜亚洲色图| 国产一区二区福利视频| 成人免费视频入口| 亚洲第一狼人社区| 欧美做爰爽爽爽爽爽爽| 亚洲综合清纯丝袜自拍| 久久久国产精品无码| 精品粉嫩aⅴ一区二区三区四区| 久久不见久久见免费视频1| 在线观看欧美精品| 日韩精品电影在线| 国产伦理片在线观看| 亚洲第一成年网| 色婷婷激情综合| 国产裸体歌舞团一区二区| 日韩一卡二卡三卡| 杨幂一区二区国产精品| 中文字幕乱码久久午夜不卡| 91色在线porny| 国产无遮挡一区二区三区毛片日本| 国产高潮视频在线观看| 亚洲免费观看高清| 玖玖爱在线精品视频| 一区二区三区欧美| 麻豆精品一区二区三区视频| 国产一区欧美日韩| 日韩欧美一级二级三级久久久| 95视频在线观看| 亚洲精选在线视频| 精品欧美一区二区久久久久| 国产高清久久久| 欧美在线观看视频在线| 国产·精品毛片| 日韩欧美在线123| 白嫩情侣偷拍呻吟刺激| 亚洲一区二区欧美日韩| 在线观看视频91| 99re这里都是精品| 一区二区三区四区乱视频| 永久看片925tv| 大陆成人av片| 国产精品伦理一区二区| 最新黄色av网址| 国产精品资源在线| 欧美精品xxxxbbbb| 国产激情视频一区二区在线观看| 精品国产精品网麻豆系列| 成人精品在线观看视频| 伊人夜夜躁av伊人久久| 91精品办公室少妇高潮对白| 91麻豆6部合集magnet| 亚洲免费视频中文字幕| 欧洲一区在线电影| 成人在线短视频| 亚洲国产日韩a在线播放| 欧美日韩精品电影| 久久久久久婷婷| 秋霞电影一区二区| 日韩欧美国产一区二区在线播放 | 91视频免费观看| 一区二区三区国产豹纹内裤在线| 欧洲精品一区二区三区在线观看| 99久久精品国产一区二区三区| 亚洲另类色综合网站| 欧美日韩亚洲综合在线| 屁屁影院国产第一页| 蜜桃av一区二区在线观看| 久久久精品欧美丰满| 日本高清不卡免费| 91影院在线观看| 亚洲观看高清完整版在线观看| 欧美一区二区三区白人| 九色porny自拍视频| 国产综合色精品一区二区三区| 日本一区二区三区免费乱视频| 成年人一级黄色片| 免费观看黄网站| 天天亚洲美女在线视频| 久久久久久久久久看片| 欧洲猛交xxxx乱大交3| 91人人澡人人爽| 青草av.久久免费一区| 中文欧美字幕免费| 欧美写真视频网站| 3d动漫精品啪啪一区二区下载 | 日韩美一区二区三区| 黄色免费一级视频| 91原创在线视频| 奇米精品一区二区三区在线观看一| 日本一区二区成人| 欧美体内she精视频| 性高潮久久久久久久| 欧美一区二区三区爱爱| 在线日韩国产网站| 2018国产精品| 韩国成人精品a∨在线观看| 亚洲天堂av老司机| 欧美一区二区三区日韩视频| 天堂网中文在线观看| 不许穿内裤随时挨c调教h苏绵| 韩国欧美国产1区| 亚洲精品久久久蜜桃| 亚洲精品一区二区三区影院 | 国产主播一区二区| 伊人色综合久久天天人手人婷| 精品国产百合女同互慰| 1024手机在线视频| 色婷婷免费视频| 不卡的av中国片| 另类欧美日韩国产在线| 亚洲美女偷拍久久| 久久蜜桃av一区精品变态类天堂| 在线观看三级视频欧美| 成人18视频免费69| 亚洲少妇18p| 99久久精品免费看|