深度解析:会用Excel,还有必要学Python吗?
在看到知乎上有個(gè)問題:
我都會(huì)用Excel了,還有必要學(xué)Python嗎?
這個(gè)問題大概率可以說明問這個(gè)問題的這位同學(xué)目前還沒有遇到非Python不可的場(chǎng)景,之所以產(chǎn)生了學(xué)Python的念頭是因?yàn)檫@兩年P(guān)ython實(shí)在是太火了,如果自己不學(xué)總覺得差點(diǎn)什么。但是學(xué)了一點(diǎn)以后又發(fā)現(xiàn)Python做的那些事情,我Excel也可以做,既然如此,我為什么還要費(fèi)這么大勁去學(xué)Python呢?
為什么要學(xué)Python
大家在學(xué)一個(gè)工具或者一項(xiàng)知識(shí)的時(shí)候,一定不要為了學(xué)而學(xué),這樣不僅學(xué)起來很痛苦,而且很難堅(jiān)持下去的。
那既然如此,是不是我們就可以不學(xué)Python了?不是的,你想想為什么現(xiàn)在幾乎所有的招聘要求上都會(huì)要求掌握Python技能?
原因主要有兩個(gè):
1、有些事情雖然Excel也能做,但是用Python效率會(huì)更高?
2、有些事情是只有Python可以做,而Excel是做不了的
綜合這兩個(gè)原因,就要求你必須掌握Python技能,雖然不一定100%的工作都用Python,但是不得不用Python的時(shí)候你得會(huì)。
Excel和Python在不同場(chǎng)景下的異同
接下來我們就圍繞一名數(shù)據(jù)從業(yè)者在工作中可能會(huì)涉及到的工作內(nèi)容進(jìn)行展開,看看不同工作內(nèi)容下,Excel和Python的異同。主要從以下幾方面進(jìn)行展開:
數(shù)據(jù)處理與運(yùn)算
報(bào)表自動(dòng)化
圖表可視化
統(tǒng)計(jì)檢驗(yàn)
機(jī)器學(xué)習(xí)算法
數(shù)據(jù)處理與運(yùn)算
數(shù)據(jù)處理與運(yùn)算這部分工作是我們工作中的大頭,我們先來看下關(guān)于數(shù)據(jù)處理與運(yùn)算中比較高頻的一些內(nèi)容:
學(xué)過Excel的同學(xué)對(duì)這些應(yīng)該都不陌生,這些內(nèi)容在Excel是完全可以實(shí)現(xiàn),在Python中也是可以實(shí)現(xiàn)的,那我們應(yīng)該如何選呢?
原則就是哪個(gè)方便用哪個(gè),如果你現(xiàn)在只有100行數(shù)據(jù),你現(xiàn)在要對(duì)這100行數(shù)據(jù)進(jìn)行降序排列,這個(gè)時(shí)候肯定用Excel效率更高,你用Python的話還需要先把數(shù)據(jù)導(dǎo)入到Python中以后再做處理,相對(duì)來說更麻煩一些。
但如果你的數(shù)據(jù)條數(shù)超過10萬行,你試著用Excel執(zhí)行一下刪除重復(fù)值的操作,幾乎會(huì)瞬間無響應(yīng),然后Excel就閃退了,很多人又沒有及時(shí)保存文件的習(xí)慣,閃退會(huì)導(dǎo)致之前做的工作白做了。如果你用Python的話,首先Python處理幾十萬條數(shù)據(jù)的時(shí)候,速度還是可以的,即使速度慢一點(diǎn),大多數(shù)時(shí)候是不會(huì)出現(xiàn)軟件閃退的,而且即使閃退了,之前的代碼是有的,只需要把之前的代碼重新運(yùn)行一遍就好了,不需要重頭再做。
如果你的數(shù)據(jù)超過100萬行,那么就只能用Python了,因?yàn)镋xcel的最大行數(shù)為1048576行。
需要聲明的是,不管是Excel還是Python,數(shù)據(jù)處理速度會(huì)跟電腦自身的性能有很大關(guān)系。
綜上,如果你平常接觸的數(shù)據(jù)都是10萬以內(nèi)的小數(shù)量級(jí),那么其實(shí)是可以不學(xué)Python的,但如果需要經(jīng)常處理大數(shù)量級(jí)的數(shù)據(jù),還是有必要學(xué)一學(xué)Python的。
報(bào)表自動(dòng)化
報(bào)表是作為一個(gè)數(shù)據(jù)從業(yè)者不得不做的一件事,常見的報(bào)表就是日?qǐng)?bào)、周報(bào)、月報(bào)這些,這些報(bào)表有一個(gè)好處就是格式比較固定,只有固定的內(nèi)容我們就可以進(jìn)行自動(dòng)化。而所謂的自動(dòng)化就是讓機(jī)器代替人工做事情的過程。
下圖是我列的常規(guī)報(bào)表自動(dòng)化的流程,主要分為5個(gè)步驟,核心在于前兩個(gè)步驟,先對(duì)整個(gè)報(bào)表制作流程進(jìn)行拆解,拆解成若干個(gè)小的步驟,然后再找每個(gè)步驟對(duì)應(yīng)的代碼是什么,最后把小步驟的代碼合并起來就是整個(gè)報(bào)表制作的代碼,我們每次只需要把寫好的代碼運(yùn)行一遍,結(jié)果就自動(dòng)出來了,也就達(dá)到了報(bào)表自動(dòng)化的目的。
運(yùn)行效率:
在代碼這一塊我們既可以用Excel中的VBA,也可以用Python。那我們應(yīng)該如何選呢?首先看效率問題,有個(gè)博主專門測(cè)試過Python和VBA逐行讀取同一個(gè)文件,Python耗時(shí)0.639秒,VBA耗時(shí)2.855秒,兩者相差4.x多倍。
博文鏈接:
https://www.cnblogs.com/metree/p/3477351.html
書寫效率:
除了執(zhí)行效率方面以外,還有就是代碼書寫效率,下面截圖是從網(wǎng)上找的一個(gè)關(guān)于讀取txt文件的VBA代碼:
文檔鏈接:
https://blog.csdn.net/weixin_42578747/article/details/90111536
下面是用Python讀取txt文件時(shí)的代碼:
import?pandas?as?pd pd.read_table('file_name.txt')是不是明顯Python的代碼要更簡(jiǎn)潔,而且更容易理解,read_table就是讀取文件,多直觀。
綜上,如果是平常有大量工作需要自動(dòng)化的話,也還是有必要學(xué)習(xí)Python的。
圖表可視化
效率方面:
圖表可視化也是我們?nèi)粘9ぷ髦斜容^使用比較高頻一部分,圖表除了傳遞信息以外,還要盡可能的美觀,讓看表的人視覺體驗(yàn)更好。
下圖中左半圖時(shí)Excel默認(rèn)的折線圖樣式,右半圖時(shí)Python中Seaborn庫中默認(rèn)的折線圖樣式,很明顯右圖要比左圖觀看體驗(yàn)上更好一些。
雖然Excel圖表在進(jìn)行專門的樣式設(shè)置以后也能達(dá)到比較好看的效果,但是進(jìn)行樣式設(shè)置很耗費(fèi)時(shí)間的,我們還是希望用更少的時(shí)間得到稍微不那么丑的圖表。
再比如繪制統(tǒng)計(jì)學(xué)中的核密度圖,雖然Excel中也可以通過復(fù)雜的操作實(shí)現(xiàn),但是Python中只需要如下一行代碼就可以繪制出比較好看的核密度圖:
sns.displot(penguins,?x="flipper_length_mm",?hue="species",?kind="kde",?multiple="stack")圖表全面性:
上面是看了Excel和Python的在效率方面的差異,接下來我們看下在圖表全面性方面兩者的差別。
折線圖、柱狀圖是比較常見的一些圖表,除了這些比較常規(guī)的圖表以外,我們有的時(shí)候我們還會(huì)去繪制一些比較專業(yè)圖表,比如小提琴圖,在Excel里面就不太好去實(shí)現(xiàn),而在Python里面也只需要如下一行代碼就可以輕松實(shí)現(xiàn):
sns.catplot(x="day",?y="total_bill",?hue="sex",kind="violin",?split=True,?data=tips)在圖表可視化方面,Python中有很多的庫可以供我們使用,下面是一些比較常用的庫的官網(wǎng),我們只需要根據(jù)具體場(chǎng)景選擇適合自己的就好了。
matplotlib官網(wǎng):https://matplotlib.org/?
pyecharts官網(wǎng):https://pyecharts.org/#/?
seaborn官網(wǎng):https://seaborn.pydata.org/index.html
plotly官網(wǎng):https://chart-studio.plotly.com/feed/#/?
Boken官網(wǎng):https://docs.bokeh.org/en/latest/
綜上,如果平常工作中對(duì)圖表的視覺體驗(yàn)沒太多要求,而且也涉及到一些高級(jí)的統(tǒng)計(jì)圖表的話,Excel就用了。如果要是對(duì)效率和圖表的全面性都有要求的話,還是有必要學(xué)Python的。
統(tǒng)計(jì)學(xué)檢驗(yàn)
我們?cè)谄匠9ぷ髦袝?huì)做很多AB測(cè)試,而AB測(cè)試的核心就是背后的統(tǒng)計(jì)學(xué)檢驗(yàn),我們看下Excel和Python在統(tǒng)計(jì)檢驗(yàn)方面有啥區(qū)別。
統(tǒng)計(jì)檢驗(yàn)中比較基礎(chǔ)的檢驗(yàn)就是T檢驗(yàn)。
在Excel中進(jìn)行T檢驗(yàn)時(shí),使用的TTEST()函數(shù),在該函數(shù)中指明要檢驗(yàn)的兩組數(shù)據(jù)核檢驗(yàn)分布即可,也比較簡(jiǎn)單:
在Python中進(jìn)行T檢驗(yàn)時(shí),使用的代碼如下:
stats.ttest_ind(treat_data,?control_data)從簡(jiǎn)單的T檢驗(yàn)來看的話,兩者基本沒啥差別。
稍微高級(jí)一點(diǎn)的就是多重檢驗(yàn),就是用來檢驗(yàn)多組內(nèi)任意兩組之間的差異情況,此時(shí)如果在Excel中需要用到人工進(jìn)行兩兩比較,而在Python中只需要下面一行代碼即可得出兩兩之間的檢驗(yàn)結(jié)果。
MultiComparison(data,?groups)綜上,一些簡(jiǎn)單的檢驗(yàn)的話,Excel和Python是沒啥區(qū)別的,而一些稍微復(fù)雜的檢驗(yàn)的話,Python里面都會(huì)把復(fù)雜的步驟封裝好,使用起來會(huì)更方便。
機(jī)器學(xué)習(xí)算法
作為一名數(shù)據(jù)分析師,雖然日常工作中的主要工作不是做算法,但是還是需要對(duì)一些常見算法的原理和實(shí)現(xiàn)是了解的。
機(jī)器學(xué)習(xí)領(lǐng)域比較知名的庫就是Sklearn,用這個(gè)庫可以讓你很輕松的就能夠?qū)崿F(xiàn)一個(gè)機(jī)器學(xué)習(xí)算法。
算法里面最基礎(chǔ)的就是線性回歸了,運(yùn)行如下代碼就可以求取出線性回歸的各項(xiàng)系數(shù):
from?sklearn?import?linear_model reg?=?linear_model.LinearRegression() reg.fit([[0,?0],?[1,?1],?[2,?2]],?[0,?1,?2]) reg.coef_Sklearn庫中不僅包含了常見的分類和回歸算法,還包含了特征工程等部分,讓你輕松掌握機(jī)器學(xué)習(xí)。
Sklearn官網(wǎng):https://scikit-learn.org/stable/index.html
而Excel中是沒有這種條件的。
上面從各個(gè)方面介紹了在不同場(chǎng)景下Excel和Python的異同,相信大家對(duì)于自己到底要不要學(xué)Python應(yīng)該比較清楚了。那如果想學(xué),我們應(yīng)該怎么學(xué)呢?
怎么學(xué)
學(xué)習(xí)Python首先要明白兩句核心內(nèi)容,只要真正理解了這兩句話,那你學(xué)起來會(huì)很快的:
1、不管Excel還是Python,這些都是實(shí)現(xiàn)工具而已,背后的理論原理是都一樣的;2、常用的功能大概占全部功能的20%,剛開始學(xué),要抓主要矛盾,學(xué)主要內(nèi)容,等把主要內(nèi)容學(xué)會(huì)以后,再學(xué)次要內(nèi)容就容易很多了。
對(duì)比學(xué)習(xí)法
Excel中的數(shù)據(jù)透視表大家應(yīng)該都比較熟悉,核心就是下面這四個(gè)框,只需要把不同的字段拖到對(duì)應(yīng)的框里面就行。
如果現(xiàn)在我讓你用Python對(duì)一個(gè)數(shù)據(jù)表做一個(gè)數(shù)據(jù)透視表,你肯定會(huì)一臉懵,Excel中都是鼠標(biāo)拖拽的,Python要怎么實(shí)現(xiàn)呢?
其實(shí)也簡(jiǎn)單,在Python中做數(shù)據(jù)透視表需要用到pivot_table()函數(shù),該函數(shù)的關(guān)鍵參數(shù)如下:
pd.pivot_table(data,values=None,index=None,columns=None,aggfunc='mean')看到這里應(yīng)該還不太明白,我們?cè)偻驴?#xff1a;
看到這張圖是不是就差不多理解了,不同的參數(shù)其實(shí)就代表Excel中不同的框,在Excel中是用鼠標(biāo)把字段拖到框里面,在Python中是將字段名賦值給相應(yīng)的參數(shù)。
pivot_table()函數(shù)中的data參數(shù)表示要做數(shù)據(jù)透視表的整個(gè)表,aggfunc表示對(duì)values的進(jìn)行什么樣的運(yùn)算。
數(shù)據(jù)透視表不是Excel所獨(dú)有的,在不同工具里面的實(shí)現(xiàn)邏輯是一樣的,只不過具體的實(shí)現(xiàn)方式會(huì)不一樣,但是只要我們把背后的邏輯掌握了,然后借助于我們現(xiàn)有的、比較熟悉的Excel去學(xué)習(xí)和理解Python的實(shí)現(xiàn)方式,這樣學(xué)起來就會(huì)輕松很多。
其實(shí)不僅是透視表這個(gè)案例,我們所用到的很多知識(shí)都是可以按照這種思路去學(xué)習(xí)的,我們把這種學(xué)習(xí)方法稱為對(duì)比學(xué)習(xí)法。
我的《對(duì)比Excel》系列三本書:《對(duì)比Excel,輕松學(xué)習(xí)Python數(shù)據(jù)分析》、《對(duì)比Excel,輕松學(xué)習(xí)SQL數(shù)據(jù)分析》、《對(duì)比Excel,輕松學(xué)習(xí)Python報(bào)表自動(dòng)化》均是采用了這種思想進(jìn)行寫作的。
先解決主要矛盾
很多Python的書和課程會(huì)追求大而全,會(huì)講很多又難但又使用頻率不那么高的知識(shí)點(diǎn),比如面向?qū)ο缶幊?#xff0c;很多學(xué)了幾年的人也沒學(xué)會(huì),新手一學(xué)更是懵逼。這些知識(shí)點(diǎn)會(huì)把很多新人勸退的,真正的做到了從入門到放棄。
我們?cè)趧傞_始學(xué)的時(shí)候,盡量去學(xué)那些主要的知識(shí)點(diǎn),學(xué)完之后馬上逼自己把學(xué)到的應(yīng)用到實(shí)際工作中,當(dāng)你看到學(xué)有所用的時(shí)候,大腦會(huì)形成正向反饋,越學(xué)越有勁,很快就學(xué)會(huì)了。
點(diǎn)擊下方卡片進(jìn)行關(guān)注,獲取更多內(nèi)容
點(diǎn)分享
點(diǎn)收藏
點(diǎn)點(diǎn)贊
點(diǎn)在看
總結(jié)
以上是生活随笔為你收集整理的深度解析:会用Excel,还有必要学Python吗?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MATLAB绘图总结(MathWorks
- 下一篇: 2022春节快递什么时候放假