2019-12-13 (一)使用Xlwings從Excel,取數(shù)至Pandas的DataFrame和Series

#-&- coding: utf-8 -&-

"""

Createdon Mon Jul? 8 22:05:32 2019

@author:

same3

"""

我們通過(guò)Xlwings 調(diào)用 Excel特定區(qū)域的數(shù)據(jù)集,將用來(lái)測(cè)試Panda對(duì)于None值/NaN/null/空值(以下統(tǒng)稱(chēng)空值)的處理,本次我們將會(huì)學(xué)到:

利用Xlwings從Excel特定區(qū)域讀入數(shù)據(jù)集到Pandas的DataFrame和Series。

對(duì)含有空值的DataFrame進(jìn)行各種選擇操作,以及對(duì)空值數(shù)據(jù)的填充fillna()、刪除dropna(),我們將在后面陸續(xù)介紹。

筆者是技術(shù)進(jìn)步的擁躉,Python 的IDE:Spyder,從剛開(kāi)始是Python(x,y)的作者為Python開(kāi)發(fā)的一個(gè)簡(jiǎn)單的集成開(kāi)發(fā)環(huán)境,發(fā)展到現(xiàn)在V4.0白、富、美的開(kāi)發(fā)環(huán)境,著實(shí)令人驚艷!感謝這個(gè)世界上眾多無(wú)私付出、默默耕耘的人們,有了你們,世界越來(lái)越好!

和其他的Python開(kāi)發(fā)環(huán)境相比,Spyder最大的優(yōu)點(diǎn)就是模仿MATLAB的“工作空間”的功能,可以很方便地觀察和修改對(duì)象的值。

學(xué)習(xí)使用spyder(python IDE) 參考資料:https://blog.csdn.net/u010547283/article/details/76860428

'''

##引入三個(gè)Python 包

##Pandas:數(shù)據(jù)分析包

import pandas as pd?

#"as"顧名思義,即以后可以在程序中以縮寫(xiě)pd 代表 pandas

#numpy:科學(xué)計(jì)算包

import numpy? as np

##xlwings:python操作Excel的模塊,最好的Excel操作包之一,有取代VBA的趨勢(shì)

## xlwings中文入門(mén)學(xué)習(xí)資料之一:https://www.cnblogs.com/catgatp/p/7875683.html

## xlwings英文官方學(xué)習(xí)網(wǎng)站https://docs.xlwings.org/en/stable/

import xlwings as xw

##聲明Excel應(yīng)用程序,及workboos文件路徑

file= r'D:\VBA\LEARNING_ERP.xlsm'?

#字符串前面加r,是表示其后的字符串不轉(zhuǎn)義,使用真實(shí)字符

wb=xw.Book(file)

wb.app.display_alerts=False

#禁止Excel彈出提示的對(duì)話框

#“view”作為存放結(jié)果數(shù)據(jù)集的sheet表

sht_view=wb.sheets['view']

##“基礎(chǔ)表”作為存放原始數(shù)據(jù)集的sheet表

sht_base=wb.sheets['基礎(chǔ)表']

##讓我們看一下Excel中的原始數(shù)據(jù)吧:



'''選中存放原始數(shù)據(jù)集所在的區(qū)域,將數(shù)據(jù)導(dǎo)入Series

第25行第9列,可以使用sheet.range(row,column)的方法,也可以使用sheet[row-1,

column-1]的方法,第一種方法是標(biāo)準(zhǔn)的VB-Excel風(fēng)格,下標(biāo)從1開(kāi)始,使用小括號(hào)();第二種方法遵循的是Python風(fēng)格,下標(biāo)從0開(kāi)始,使用中括號(hào)[]。'''

s_choose=sht_base.range(25,9).options(pd.Series,expand='table').value

## expand='table',指示將從單元格沿right、down擴(kuò)展取數(shù),詳見(jiàn)Xlwings文檔。

'''按F5運(yùn)行程序,然后在IDE右下方的即時(shí)窗口In[ ]:后面輸入print(s_choose),按回車(chē),顯示如下:'''

##上面是VB-Excel風(fēng)格,試一下第二種方法,遵循的是Python風(fēng)格

s_choose=sht_base[24,8].options(pd.Series,expand='table').value

##可見(jiàn)兩種方法,結(jié)果是一樣的

##選中employee 所在的區(qū)域,第25行第1列

range_employee=sht_base[25,1].api.currentregion

##命名區(qū)域

range_employee.name='range_employee'

##導(dǎo)入Dataframe

df_employee=sht_base['range_employee'].options(pd.DataFrame,header=1,index=True).value

'''index=True,指示使用原始數(shù)據(jù)集中的索引默認(rèn)第一列,而不是使用自動(dòng)索引,自動(dòng)索引從0開(kāi)始

header=1,指示使用原始數(shù)據(jù)集中的第一行作為列名,而不是使用自動(dòng)列名,更多使用方法,將在后面陸續(xù)介紹。'''

#按F5運(yùn)行程序,然后在IDE右下方的即時(shí)窗口In:后面輸入print(df_employee),按回車(chē),顯示如下:


##計(jì)算機(jī)顯示的時(shí)候,對(duì)齊有跑題的嫌疑(對(duì)不上標(biāo)題),不過(guò),習(xí)慣了就好!

##下一次,我們將對(duì)含有空值的DataFrame進(jìn)行各種選擇操作

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容