發(fā)布時(shí)間:2024-01-18 11:31:21 瀏覽量:104次
作為一名數(shù)據(jù)分析師,日?qǐng)?bào),周報(bào),月報(bào)是少不了的,經(jīng)常在整理周報(bào)或者月報(bào)的時(shí)候,需要將這周的數(shù)據(jù)或者該月的數(shù)據(jù)進(jìn)行一個(gè)匯總,常規(guī)地做法是將每一天的數(shù)據(jù)進(jìn)行重復(fù)地復(fù)制、粘貼。
顯然,上面的方式不可取,會(huì)加重我們數(shù)據(jù)整理工作,有沒(méi)有一種簡(jiǎn)便的方法??jī)H需鼠標(biāo)點(diǎn)一點(diǎn),即可完成數(shù)據(jù)合并,本文介紹Python數(shù)據(jù)合并、圖形界面開(kāi)發(fā)和Python打包,可解決上述問(wèn)題。
示例工具:anconda3.7
本文講解內(nèi)容:圖形界面開(kāi)發(fā),Python打包
適用范圍:使用交互式命令一鍵批量數(shù)據(jù)合并
如下我們有個(gè)需求,就是將四個(gè)季度的銷(xiāo)售明細(xì)合并在一張表里,本文開(kāi)發(fā)的小工具也是在解決數(shù)據(jù)批量數(shù)據(jù)合并的問(wèn)題。
常規(guī)情況下,導(dǎo)入一個(gè)Excel數(shù)據(jù),使用pd.read_excel命令即可,如下我們導(dǎo)入了其中銷(xiāo)售明細(xì)第1季度的數(shù)據(jù)。
import pandas as pd
df=pd.read_excel(r'D:\系統(tǒng)桌面(勿刪)\Desktop\訂單銷(xiāo)售數(shù)據(jù)\銷(xiāo)售明細(xì)第1季度.xlsx')
df.head()
那么如何導(dǎo)入一個(gè)文件夾下所有的Excel數(shù)據(jù)呢?這里使用os.listdir()命令可以返回該文件夾下的文件目錄,返回結(jié)果如下。
import os
new_path=r'D:\系統(tǒng)桌面(勿刪)\Desktop\訂單銷(xiāo)售數(shù)據(jù)'
listdir=os.listdir(new_path)
listdir
['銷(xiāo)售明細(xì)第1季度.xlsx', '銷(xiāo)售明細(xì)第2季度.xlsx', '銷(xiāo)售明細(xì)第3季度.xlsx', '銷(xiāo)售明細(xì)第4季度.xlsx']
這樣我們就有了一個(gè)思路,首先導(dǎo)入第一個(gè)Excel表,然后使用for循環(huán)遍歷文件目錄,使用pd.concat命令將同一個(gè)文件夾內(nèi)的多個(gè)Excel表進(jìn)行合并。
import pandas as pd
import os
new_path=r'D:\系統(tǒng)桌面(勿刪)\Desktop\訂單銷(xiāo)售數(shù)據(jù)'
listdir=os.listdir(new_path)
df=pd.read_excel(new_path+'\\'+ listdir[0])#導(dǎo)入第一個(gè)數(shù)據(jù)表
for filename in listdir[1:]:
dfi=pd.read_excel(new_path+'\\'+ filename) #導(dǎo)入除第一個(gè)數(shù)據(jù)表外其他數(shù)據(jù)表
df=pd.concat([df,dfi],sort=False) #數(shù)據(jù)縱向合并
df.to_excel(new_path+'\\'+'數(shù)據(jù)合并.xlsx',index=False)
如下即為表格批量合并后的結(jié)果。
我們將上面的代碼定義為一個(gè)combine函數(shù),只要每次導(dǎo)入path的文件夾路徑,即可將數(shù)據(jù)合并。
import pandas as pd
import os
def combine(path):
new_path=path
listdir=os.listdir(new_path)
df=pd.read_excel(new_path+'\\'+ listdir[0])#導(dǎo)入第一個(gè)數(shù)據(jù)表
for filename in listdir[1:]:
dfi=pd.read_excel(new_path+'\\'+ filename) #導(dǎo)入除第一個(gè)數(shù)據(jù)表外其他數(shù)據(jù)表
df=pd.concat([df,dfi],sort=False) #數(shù)據(jù)縱向合并
df.to_excel(new_path+'\\'+'數(shù)據(jù)合并.xlsx',index=False)
為了將代碼的運(yùn)行過(guò)程增加交互式操作,這里使用PySimpleGUI庫(kù)開(kāi)發(fā)一個(gè)圖形界面,其中,layout用于自定義窗口布局,window用于定義整體的窗口界面,while True: 循環(huán)運(yùn)行,當(dāng)滿足特定的"事件"時(shí),則返回具體的"值",從而實(shí)現(xiàn)人機(jī)交互功能。
import PySimpleGUI as sg
#自定義窗口布局,一共是兩行,第一行用于查找需要合并Excel的文件目錄,第二行點(diǎn)擊開(kāi)始合并按鈕進(jìn)行合并
layout = [[sg.Text("請(qǐng)選擇Excel文件所在目錄:"),sg.Input(size=(25, 1), enable_events=True, key="文件路徑"),sg.FolderBrowse(button_text="瀏覽文件"),],
[sg.Button('開(kāi)始合并', enable_events=True, key="開(kāi)始"),]
]
window = sg.Window('批量數(shù)據(jù)合并:By大話數(shù)據(jù)分析', layout)#定義窗口
while True:
event, values = window.read()
if event in (None,):
break #關(guān)閉用戶界面
elif event == "開(kāi)始":
if values["文件路徑"]:
print(values["文件路徑"])
sg.popup('數(shù)據(jù)合并已完畢!')
else:
sg.popup('請(qǐng)先輸入Excel文件所在的路徑!')
window.close()
如下將人機(jī)交互功能開(kāi)發(fā)完畢,點(diǎn)擊瀏覽文件,找到需要批量合并文件的文件夾目錄,點(diǎn)擊開(kāi)始合并,即可輸出結(jié)果,其中,values["文件路徑"]輸入的是需要合并Excel數(shù)據(jù)的文件路徑,print打印出來(lái)的就是需要合并Excel數(shù)據(jù)的文件路徑。
至此,Python圖形界面開(kāi)發(fā)完畢,之前定義了combine函數(shù),當(dāng)滿足特定事件和值時(shí),執(zhí)行combine(values["文件路徑"])命令,即可使用交互式命令,完成數(shù)據(jù)表合并。
import pandas as pd
import os
def combine(path):
new_path=path
listdir=os.listdir(new_path)
df=pd.read_excel(new_path+'\\'+ listdir[0])#導(dǎo)入第一個(gè)數(shù)據(jù)表
for filename in listdir[1:]:
dfi=pd.read_excel(new_path+'\\'+ filename) #導(dǎo)入除第一個(gè)數(shù)據(jù)表外其他數(shù)據(jù)表
df=pd.concat([df,dfi],sort=False) #數(shù)據(jù)縱向合并
df.to_excel(new_path+'\\'+'數(shù)據(jù)合并.xlsx',index=False)
import PySimpleGUI as sg
#自定義窗口布局,一共是兩行,第一行用于查找需要合并Excel的文件目錄,第二行點(diǎn)擊開(kāi)始合并按鈕進(jìn)行合并
layout = [[sg.Text("請(qǐng)選擇Excel文件所在目錄:"),sg.Input(size=(25, 1), enable_events=True, key="文件路徑"),sg.FolderBrowse(button_text="瀏覽文件"),],
[sg.Button('開(kāi)始合并', enable_events=True, key="開(kāi)始"),]
]
window = sg.Window('批量數(shù)據(jù)合并:By大話數(shù)據(jù)分析', layout)#定義窗口
while True:
event, values = window.read()
if event in (None,):
break #關(guān)閉用戶界面
elif event == "開(kāi)始":
if values["文件路徑"]:
combine(values["文件路徑"])
sg.popup('數(shù)據(jù)合并已完畢!')
else:
sg.popup('請(qǐng)先輸入Excel文件所在的路徑!')
window.close()
交互式的命令開(kāi)發(fā)完畢,如何分享給別人使用?或者是別人的電腦上沒(méi)有安裝Python也能正常使用數(shù)據(jù)合并功能?這里給大家介紹Python程序打包,使用虛擬環(huán)境進(jìn)行打包,在命令行輸入如下命令下載pipenv包。
#使用虛擬環(huán)境壓縮
pip install pipenv -i https://pypi.tuna.tsinghua.edu.cn/simple
使用快捷鍵Win+R鍵,然后輸入CMD,輸入pipenv shell命令,進(jìn)入虛擬環(huán)境,沒(méi)有虛擬環(huán)境的話會(huì)自動(dòng)建立一個(gè)。
#Win+R輸入CMD,進(jìn)入虛擬環(huán)境,沒(méi)有虛擬環(huán)境的話會(huì)自動(dòng)建立一個(gè)
pipenv shell
由于Python打包會(huì)將電腦安裝的Python包全部打包,這里我們?cè)谔摂M環(huán)境中只安裝Python程序涉及的模塊,這樣會(huì)減少打包的體積,注意xlrd==1.2.0下載低版本的包,默認(rèn)安裝的是高版本的,安裝高版本的包在程序使用中會(huì)報(bào)錯(cuò)。
#只安裝Python程序涉及的模塊
pip install pandas xlrd==1.2.0 id-validator PySimpleGUI pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple
將帶有交互式命令的數(shù)據(jù)合并代碼導(dǎo)出為.py文件,在命令行輸入如下的打包命令,指定具體的路徑即可打包。
#進(jìn)行打包
pyinstaller -F -w C:\Desktop\combine.py
稍等幾分鐘,在Python的工作目錄下看到一個(gè)dist文件,如果不知道自己的Python工作目錄,可使用os.getcwd()命令查看。
該dist文件包含一個(gè)combine.exe程序。
雙擊combine.exe程序,在圖形交互界面導(dǎo)入具體的文件路徑即可完成數(shù)據(jù)合并,如果你對(duì)這個(gè)批量數(shù)據(jù)合并的小工具感興趣,也想用于日常的批量表格數(shù)據(jù)合并,可以添加我后臺(tái)的聯(lián)系方式,免費(fèi)獲取。
三年互聯(lián)網(wǎng)數(shù)據(jù)分析經(jīng)驗(yàn),擅長(zhǎng)Excel、SQL、Python、PowerBI數(shù)據(jù)處理工具,數(shù)據(jù)可視化、商業(yè)數(shù)據(jù)分析技能,統(tǒng)計(jì)學(xué)、機(jī)器學(xué)習(xí)知識(shí),持續(xù)創(chuàng)作數(shù)據(jù)分析內(nèi)容,點(diǎn)贊關(guān)注,不迷路~
熱門(mén)資訊
1. iPhone6的UI設(shè)計(jì)尺寸規(guī)范,原來(lái)如此重要!
想要了解iPhone6界面設(shè)計(jì)的尺寸規(guī)范嗎?這里為您詳細(xì)介紹iPhone6的UI設(shè)計(jì)尺寸規(guī)范,包括界面尺寸、圖標(biāo)尺寸、可點(diǎn)擊高度規(guī)范、搜索欄高度規(guī)范以及界面元素之間的距離規(guī)范。
2. 12個(gè)絕佳的UI設(shè)計(jì)網(wǎng)站,助力你的創(chuàng)作之旅!
將為大家介紹12個(gè)絕佳的UI設(shè)計(jì)網(wǎng)站,這些網(wǎng)站不僅可以為你提供靈感,還可以幫助你學(xué)習(xí)新的技巧,助力你的創(chuàng)意之旅!dribbbleDribbble 是一個(gè)面向設(shè)計(jì)師的...
3. 移動(dòng)端UI設(shè)計(jì)中常見(jiàn)的5種APP界面類型,你get到了嗎?
通過(guò)介紹移動(dòng)端UI設(shè)計(jì)中的閃屏頁(yè)、引導(dǎo)頁(yè)、浮層引導(dǎo)頁(yè)、空白頁(yè)和首頁(yè)等5種APP界面類型,幫助大家更好地了解UI設(shè)計(jì)的基本知識(shí)
4. 10個(gè)免費(fèi)學(xué)習(xí)UI設(shè)計(jì)的網(wǎng)站 提升你的設(shè)計(jì)能力
怎樣可以提升你的UI設(shè)計(jì)能力!第一個(gè):站酷站酷想必是設(shè)計(jì)師都知道的一個(gè)網(wǎng)站,里面不止有UI設(shè)計(jì)的資源,還有其他設(shè)計(jì)的,不如:平面設(shè)計(jì)、網(wǎng)頁(yè)設(shè)計(jì)、字體...
5. 移動(dòng)端列表頁(yè)和表單頁(yè)設(shè)計(jì)秘訣:讓你的APP點(diǎn)擊率翻倍
在移動(dòng)端設(shè)計(jì)中,列表頁(yè)和表單頁(yè)是不可或缺的部分。一個(gè)好的列表頁(yè)和表單頁(yè)設(shè)計(jì)能夠讓用戶輕松地獲取信息并產(chǎn)生點(diǎn)擊欲望,從而提高點(diǎn)擊率。本文將為你...
6. 推薦10本適合UI設(shè)計(jì)師看的書(shū)籍,輕松掌握技能!
對(duì)于想要提高自己的設(shè)計(jì)能力和創(chuàng)造力的小白和UI設(shè)計(jì)師來(lái)說(shuō),這本書(shū)是一個(gè)很好的選擇。4.《設(shè)計(jì)的覺(jué)醒》(IKKO TANAKA)推薦理由: 這本書(shū)是日本現(xiàn)代平面...
7. 零基礎(chǔ)學(xué)UI設(shè)計(jì)要多久?培訓(xùn)完能拿多少工資?
探索零基礎(chǔ)UI設(shè)計(jì)培訓(xùn)的時(shí)長(zhǎng)與薪資前景。了解數(shù)字藝術(shù)教育領(lǐng)域的專業(yè)課程,以及培訓(xùn)后的職業(yè)發(fā)展機(jī)會(huì)。
8. 物聯(lián)網(wǎng)APP UI設(shè)計(jì):創(chuàng)造智能硬件領(lǐng)域的沉浸式體驗(yàn)
ui設(shè)計(jì)應(yīng)該讓用戶一目了然,能夠快速找到所需的信息和功能。在設(shè)計(jì)過(guò)程中,應(yīng)盡量使用簡(jiǎn)潔的圖標(biāo)、文字和色彩,避免過(guò)多的視覺(jué)干擾。符合用戶習(xí)慣:ui設(shè)...
9. 武漢UI設(shè)計(jì)培訓(xùn)班費(fèi)用怎么樣?想學(xué)UI設(shè)計(jì)要多少錢(qián)?
想了解武漢UI設(shè)計(jì)培訓(xùn)班的費(fèi)用是多少嗎?不知道學(xué)UI設(shè)計(jì)要花多少錢(qián)?不妨看看這篇文章,了解UI設(shè)計(jì)培訓(xùn)班的學(xué)費(fèi)價(jià)格以及學(xué)習(xí)內(nèi)容。
10. 設(shè)計(jì)中的色彩心理學(xué):淺析中西方色彩的歷史演變與設(shè)計(jì)應(yīng)用
摘要:本文探討了色彩的歷史演變和設(shè)計(jì)應(yīng)用。通過(guò)對(duì)色彩在早期文明社會(huì)中的實(shí)用運(yùn)用、不同文化背景下色彩觀念的差異、色彩在設(shè)計(jì)中的重要性以及新興技...
最新文章
同學(xué)您好!