国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
你好Python!再見(jiàn)Excel?

現(xiàn)在很多行業(yè),都離不開(kāi)Excel:

做財(cái)務(wù)的,要用Excel做報(bào)表;

做物流的,會(huì)用Excel來(lái)跟蹤訂單情況;

做HR的,會(huì)用Excel算工資;

做運(yùn)營(yíng)的,會(huì)用Excel記錄數(shù)據(jù)做分析。

不知道你有沒(méi)有這樣的經(jīng)歷,每次你用Excel做數(shù)據(jù)分析時(shí),往往都要生成好多張工作簿,做中間計(jì)算的時(shí)候,鼠標(biāo)要一路移到最后一頁(yè),才出現(xiàn)最終結(jié)果。

如果其中某個(gè)數(shù)據(jù)出了些問(wèn)題,你可能要從頭開(kāi)始,排查錯(cuò)誤,很容易看花眼,錯(cuò)上加錯(cuò)。

為了避免這種情況,很多人開(kāi)始學(xué)Excel的高級(jí)技能 - VBA。

但其實(shí),VBA并不容易學(xué),而且在數(shù)據(jù)量大的情況下,VBA運(yùn)行很耗時(shí)。

那么我們應(yīng)該怎么解決呢?用Python呀!

相比VBA,Python非常容易入門(mén),而且用途廣泛。別人用Excel花2天做的事情,Python1ge 小時(shí)就能搞定。

下面就用幾個(gè)常見(jiàn)的操作帶你感受一下:

數(shù)據(jù)讀取、生成、存儲(chǔ)

Excel讀取本地?cái)?shù)據(jù)需要打開(kāi)目標(biāo)文件夾選中該文件并打開(kāi)

Pandas支持讀取本地Excel、txt文件,也支持從網(wǎng)頁(yè)直接讀取表格數(shù)據(jù),只用一行代碼即可,

例如讀取上述本地Excel數(shù)據(jù)可以使用pd.read_excel('示例數(shù)據(jù).xlsx')

以生成10*2的0—1均勻分布隨機(jī)數(shù)矩陣為例,在Excel中需要使用rand()函數(shù)生成隨機(jī)數(shù),并手動(dòng)拉取指定范圍

在Pandas中可以結(jié)合NumPy生成由指定隨機(jī)數(shù)(均勻分布、正態(tài)分布等)生成的矩陣,例如同樣生成10*2的0—1均勻分布隨機(jī)數(shù)矩陣為,使用一行代碼即可:pd.DataFrame(np.random.rand(10,2))

在Excel中需要點(diǎn)擊保存并設(shè)置格式/文件名

在Pandas中可以使用

pd.to_excel('filename.xlsx')來(lái)將當(dāng)前工作表格保存至當(dāng)前目錄下,當(dāng)然也可以使用to_csv保存為csv等其他格式,也可以使用絕對(duì)路徑來(lái)指定保存位置

篩選、排序、去重?cái)?shù)據(jù)

使用我們之前的示例數(shù)據(jù),在Excel中篩選出薪資大于5000的數(shù)據(jù)步驟如下

在Pandas中,可直接對(duì)數(shù)據(jù)框進(jìn)行條件篩選,例如同樣進(jìn)行單個(gè)條件(薪資大于5000)的篩選可以使用df[df['薪資水平']>5000],如果使用多個(gè)條件的篩選只需要使用&(并)與|(或)操作符實(shí)現(xiàn)

在Excel中可以點(diǎn)擊排序按鈕進(jìn)行排序,例如將示例數(shù)據(jù)按照薪資從高到低進(jìn)行排序可以按照下面的步驟進(jìn)行

在pandas中可以使用sort_values進(jìn)行排序,使用ascending來(lái)控制升降序,例如將示例數(shù)據(jù)按照薪資從高到低進(jìn)行排序可以使用df.sort_values('薪資水平',ascending=False,inplace=True)

在Excel中可以通過(guò)點(diǎn)擊數(shù)據(jù)—>刪除重復(fù)值按鈕并選擇需要去重的列即可,例如對(duì)示例數(shù)據(jù)按照創(chuàng)建時(shí)間列進(jìn)行去重,可以發(fā)現(xiàn)去掉了196 個(gè)重復(fù)值,保留了 629 個(gè)唯一值。

在pandas中可以使用drop_duplicates來(lái)對(duì)數(shù)據(jù)進(jìn)行去重,并且可以指定列以及保留順序,例如對(duì)示例數(shù)據(jù)按照創(chuàng)建時(shí)間列進(jìn)行去重df.drop_duplicates(['創(chuàng)建時(shí)間'],inplace=True),可以發(fā)現(xiàn)和Excel處理的結(jié)果一致,保留了 629 個(gè)唯一值。

合并/拆分?jǐn)?shù)據(jù)

在Excel中可以使用公式也可以使用Ctrl+E快捷鍵完成多列合并,以公式為例,合并示例數(shù)據(jù)中的地址+崗位列步驟如下

在Pandas中合并多列比較簡(jiǎn)單,類似于之前的數(shù)據(jù)插入操作,例如合并示例數(shù)據(jù)中的地址+崗位列使用df['合并列'] = df['地址'] + df['崗位']

拆分?jǐn)?shù)據(jù)在Excel中可以通過(guò)點(diǎn)擊數(shù)據(jù)—>分列并按照提示的選項(xiàng)設(shè)置相關(guān)參數(shù)完成分列,但是由于該列含有[]等特殊字符,所以需要先使用查找替換去掉

在Pandas中可以使用.split來(lái)完成分列,但是在分列完畢后需要使用merge來(lái)將分列完的數(shù)據(jù)添加至原DataFrame,對(duì)于分列完的數(shù)據(jù)含有[]字符,我們可以使用正則或者字符串lstrip方法進(jìn)行處理,但因不是pandas特性,此處不再展開(kāi)。

數(shù)據(jù)分組、統(tǒng)計(jì)、計(jì)算

在Excel中對(duì)數(shù)據(jù)進(jìn)行分組計(jì)算需要先對(duì)需要分組的字段進(jìn)行排序,之后可以通過(guò)點(diǎn)擊分類匯總并設(shè)置相關(guān)參數(shù)完成,比如對(duì)示例數(shù)據(jù)的學(xué)歷進(jìn)行分組并求不同學(xué)歷的平均薪資

在Pandas中對(duì)數(shù)據(jù)進(jìn)行分組計(jì)算可以使用groupby輕松搞定,比如使用df.groupby('學(xué)歷').mean()一行代碼即可對(duì)示例數(shù)據(jù)的學(xué)歷進(jìn)行分組并求不同學(xué)歷的平均薪資,結(jié)果與Excel一致

在Excel中有很多統(tǒng)計(jì)相關(guān)的公式,也有現(xiàn)成的分析工具,比如對(duì)薪資水平列進(jìn)行描述性統(tǒng)計(jì)分析,可以通過(guò)添加工具庫(kù)之后點(diǎn)擊數(shù)據(jù)分析按鈕并設(shè)置相關(guān)參數(shù)

在pandas中也有現(xiàn)成的函數(shù)describe快速完成對(duì)數(shù)據(jù)的描述性統(tǒng)計(jì),比如使用df['薪資水平'].describe()即可得到薪資列的描述性統(tǒng)計(jì)結(jié)果

在Excel中有很多計(jì)算相關(guān)的公式,比如可以使用COUNTIFS來(lái)統(tǒng)計(jì)薪資大于10000的崗位數(shù)量有518個(gè)

在Pandas中可以直接使用類似數(shù)據(jù)篩選的方法來(lái)統(tǒng)計(jì)薪資大于10000的崗位數(shù)量len(df[df['薪資水平']>10000])

數(shù)據(jù)可視化

在Excel中可以通過(guò)點(diǎn)擊插入并選擇圖表來(lái)快速完成對(duì)數(shù)據(jù)的可視化,比如制作薪資的直方圖,并且有很多樣式可以直接使用

在Pandas中也支持直接對(duì)數(shù)據(jù)繪制不同可視化圖表,例如直方圖,可以使用plot或者直接使用hist來(lái)制作df['薪資水平'].hist()

也可以做數(shù)據(jù)透視表,在Excel中有現(xiàn)成的工具,只需要選中數(shù)據(jù)—>點(diǎn)擊插入—>數(shù)據(jù)透視表即可生成,并且支持字段的拖取實(shí)現(xiàn)不同的透視表,非常方便,比如制作地址、學(xué)歷、薪資的透視表

在Pandas中制作數(shù)據(jù)透視表可以使用pivot_table函數(shù),例如制作地址、學(xué)歷、薪資的透視表pd.pivot_table(df,index=['地址','學(xué)歷'],values=['薪資水平']),雖然結(jié)果一樣,但是并沒(méi)有Excel一樣方便調(diào)整與多樣

vlookup

vlookup號(hào)稱是Excel里的神器之一,用途很廣泛,你會(huì)幾種?

案例一

問(wèn)題:A3:B7單元格區(qū)域?yàn)樽帜傅燃?jí)查詢表,表示60分以下為E級(jí)、60~69分為D級(jí)、70~79分為C級(jí)、80~89分為B級(jí)、90分以上為A級(jí)。D:G列為初二年級(jí)1班語(yǔ)文測(cè)驗(yàn)成績(jī)表,如何根據(jù)語(yǔ)文成績(jī)返回其字母等級(jí)?

方法:在H3:H13單元格區(qū)域中輸入=VLOOKUP(G3, $A$3:$B$7, 2)

python實(shí)現(xiàn):

df = pd.read_excel('test.xlsx', sheet_name=0)def grade_to_point(x): if x >= 90: return 'A' elif x >= 80: return 'B' elif x >= 70: return 'C' elif x >= 60: return 'D' else: return 'E'?df['等級(jí)'] = df['語(yǔ)文'].apply(grade_to_point)df?Out[]: 學(xué)號(hào) 姓名 性別 語(yǔ)文 等級(jí)0 101 王小麗 69 D1 102 王寶勤 85 B2 103 楊玉萍 49 E3 104 田東會(huì) 90 A4 105 陳雪蛟 73 C5 106 楊建豐 42 E6 107 黎梅佳 79 C7 108 張興 91 A8 109 馬進(jìn)春 48 E9 110 魏改娟 100 A10 111 王冰研 64 D

案例二

問(wèn)題:在Sheet1里面如何查找折舊明細(xì)表中對(duì)應(yīng)編號(hào)下的月折舊額?(跨表查詢)

方法:在Sheet1里面的C2:C4單元格輸入 =VLOOKUP(A2, 折舊明細(xì)表!A$2:$G$12, 7, 0)

python實(shí)現(xiàn):使用merge將兩個(gè)表按照編號(hào)連接起來(lái)就行

df1 = pd.read_excel('test.xlsx', sheet_name='折舊明細(xì)表')df2 = pd.read_excel('test.xlsx', sheet_name=1) #題目里的sheet1df2.merge(df1[['編號(hào)', '月折舊額']], how='left', on='編號(hào)')Out[]:     編號(hào)   資產(chǎn)名稱  月折舊額0  YT001    電動(dòng)門(mén)   13991  YT005  桑塔納轎車  11472  YT008    打印機(jī)    51

案例三

問(wèn)題:類似于案例二,但此時(shí)需要使用近似查找

方法:在B2:B7區(qū)域中輸入公式=VLOOKUP(A2&'*', 折舊明細(xì)表!$B$2:$G$12, 6, 0)

python實(shí)現(xiàn):這個(gè)比起上一個(gè)要麻煩一些,需要用到一些pandas的使用技巧

df1 = pd.read_excel('test.xlsx', sheet_name='折舊明細(xì)表') df3 = pd.read_excel('test.xlsx', sheet_name=3) #含有資產(chǎn)名稱簡(jiǎn)寫(xiě)的表df3['月折舊額'] = 0for i in range(len(df3['資產(chǎn)名稱'])): df3['月折舊額'][i] = df1[df1['資產(chǎn)名稱'].map(lambda x:df3['資產(chǎn)名稱'][i] in x)]['月折舊額']?df3Out[]:   資產(chǎn)名稱   月折舊額0 電動(dòng) 13991 貨車 24382 惠普 1323 交聯(lián) 101334 桑塔納 11475 春蘭 230

案例四

問(wèn)題:在Excel中錄入數(shù)據(jù)信息時(shí),為了提高工作效率,用戶希望通過(guò)輸入數(shù)據(jù)的關(guān)鍵字后,自動(dòng)顯示該記錄的其余信息,例如,輸入員工工號(hào)自動(dòng)顯示該員工的信命,輸入物料號(hào)就能自動(dòng)顯示該物料的品名、單價(jià)等。

如圖所示為某單位所有員工基本信息的數(shù)據(jù)源表,在“2010年3月員工請(qǐng)假統(tǒng)計(jì)表”工作表中,當(dāng)在A列輸入員工工號(hào)時(shí),如何實(shí)現(xiàn)對(duì)應(yīng)員工的姓名、身份證號(hào)、部門(mén)、職務(wù)、入職日期等信息的自動(dòng)錄入?

方法:使用VLOOKUP+MATCH函數(shù),在“2010年3月員工請(qǐng)假統(tǒng)計(jì)表”工作表中選擇B3:F8單元格區(qū)域,輸入下列公式=IF($A3='','',VLOOKUP($A3,員工基本信息!$A:$H,MATCH(B$2,員工基本信息!$2:$2,0),0)),按下【Ctrl+Enter】組合鍵結(jié)束。

python實(shí)現(xiàn):上面的Excel的方法用得很靈活,但是pandas的想法和操作更簡(jiǎn)單方便些

df4 = pd.read_excel('test.xlsx', sheet_name='員工基本信息表')df5 = pd.read_excel('test.xlsx', sheet_name='請(qǐng)假統(tǒng)計(jì)表')df5.merge(df4[['工號(hào)', '姓名', '部門(mén)', '職務(wù)', '入職日期']], on='工號(hào)')Out[]:       工號(hào)   姓名  部門(mén)   職務(wù)       入職日期0  A0004  龔夢(mèng)娟  后勤   主管 2006-11-201  A0003   趙敏  行政   文員 2007-02-162  A0005   黃凌  研發(fā)  工程師 2009-01-143  A0007   王維  人事   經(jīng)理 2006-07-244  A0016  張君寶  市場(chǎng)  工程師 2007-08-145  A0017   秦羽  人事  副經(jīng)理 2008-03-06

案例五

問(wèn)題:用VLOOKUP函數(shù)實(shí)現(xiàn)批量查找,VLOOKUP函數(shù)一般情況下只能查找一個(gè),那么多項(xiàng)應(yīng)該怎么查找呢?如下圖,如何把張一的消費(fèi)額全部列出?

方法:在C9:C11單元格里面輸入公式

=VLOOKUP(B$9&ROW(A1),IF({1,0},$B$2:$B$6&COUNTIF(INDIRECT('b2:b'&ROW($2:$6)),B$9),$C$2:$C$6),2,),按SHIFT+CTRL+ENTER鍵結(jié)束。

python實(shí)現(xiàn):vlookup函數(shù)有兩個(gè)不足(或者算是特點(diǎn)吧),一個(gè)是被查找的值一定要在區(qū)域里的第一列,另一個(gè)是只能查找一個(gè)值,剩余的即便能匹配也不去查找了,這兩點(diǎn)都能通過(guò)靈活應(yīng)用if和indirect函數(shù)來(lái)解決,不過(guò)pandas能做得更直白一些。

df6 = pd.read_excel('test.xlsx', sheet_name='消費(fèi)額')df6[df6['姓名'] == '張一'][['姓名', '消費(fèi)額']]Out[]: 姓名 消費(fèi)額0 張一 1002 張一 3004 張一 1000

操作可見(jiàn),其實(shí)Excel在有些地方還是非常方便的。比如:

數(shù)據(jù)量不是很大;

不需要實(shí)時(shí)更新結(jié)果;

更改原數(shù)據(jù),即時(shí)看每次結(jié)果有多大不同;

只要一個(gè)大體概念和粗略分析;

不需要長(zhǎng)期使用和維護(hù)...

相對(duì)而言,Python的優(yōu)點(diǎn)在于:

處理數(shù)據(jù)功能很強(qiáng)大;

圖形展示很高級(jí);

大數(shù)據(jù)量也能處理;

運(yùn)行速度可以分布管理;

可以邊寫(xiě),邊測(cè)試;

很多免費(fèi)好資源直接使用;

可追溯錯(cuò)誤出在哪里;

很容易就實(shí)現(xiàn)自動(dòng)化;

邊寫(xiě)代碼,邊做文檔;

用的很舒服,哈哈!

所以我們在處理數(shù)據(jù)時(shí)也需要正確選擇使用的工具!

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Python也可以實(shí)現(xiàn)Excel中的“Vlookup”函數(shù)?
合并多個(gè)Excel文件,Python相當(dāng)輕松
Python3操作excel的集大成者pandas
Excel 行列轉(zhuǎn)換的最簡(jiǎn)方法
手把手教你用Python替代Mapinfo更快查找兩張表中距離最近的點(diǎn)
比pandas速度更快的數(shù)據(jù)分析工具-polars,已支持python語(yǔ)言!
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服