本文作者:王碧琪
文字編輯:方 言
技術總編:張馨月
爬蟲俱樂部將於2020年8月25日至28日在線上舉行Stata數據分析法律與制度專題訓練營,主要是為了讓學員掌握Stata軟體進階操作,涉及內容包括基本字符串函數及其應用、正則表達式、法律與制度數據網絡爬蟲技巧、判案文書的文本分析等技術。詳情請參考《8月Stata數據分析法律與制度專場來啦!》 另外,爬蟲俱樂部於2020年7月在線上舉辦的Stata與Python編程技術訓練營已圓滿結束。應廣大學員需求,我們的課程現已在騰訊課堂雙雙上線,且繼續提供答疑服務。現在關注公眾號並在朋友圈轉發推文《來騰訊課堂學Stata和Python啦!》,即可獲得600元課程優惠券,集贊50個再領200元課程優惠劵!(截圖發至本公眾號後臺領取)原價2400元的課程,現在只要1600元!使用Excel進行數據分析時常常用到vlookup函數。在《Stata實現Excel中vlookup函數功能》中介紹了vlookup函數的基本用法,今天,我們使用Python中的pandas庫來實現該函數的相應功能。
本文使用的原始數據文件來源於《明星閃閃亮:各校高被引論文》中公布的全國高校經管類核心期刊發文排行榜(前200),文件名為「第一單位排名匯總.xlsx」。
(二)結果文件樣式現在有一部分大學名單,想要提取該大學對應的「發文量」和「發文排名」數據。其中,大學名單為亂序,且可能存在原始文件中找不到的情況(北京第二外國語學院無對應數據)。
本文的處理目的是將上述表格填充完整。
(三)函數簡介實現vlookup函數功能需要用到pandas中的merge()函數。在《Python之數據合併與連接》和《DataFrame數組常用方法(二)》中都有介紹merge的使用方法。常用格式如下:
pd.merge(df1,df2,left_on='col1',right_on='col2',how='inner/left/right/outer')pd.merge(df1,df2,on=[col1,col2,...],how='inner/left/right/outer')merge函數的參數見下表:
參數說明left參與合併的左鍵DataFrameright參與合併的右鍵DataFramehow四個取值:inner,outer,left,right。兩列的交集(inner),保留第一個數據的所有值(left),保留第二個數據的所有值(right),兩列的併集(outer)on用於連接的列名。必須存在於左右兩個 Data Frame對象中。如果未指定,且其他連接鍵也未指定,則以left和right列名的交集作為連接鍵left_on左側 DataFrame中用作連接鍵的列right_on右側 DataFrame中用作連接鍵的列left_index將左側的行索引用作其連接鍵right_index類似於 - left indexsort根據連接鍵對合併後的數據進行排序,默認為Truesuffixes字符串值元組,用於追加到重疊列名的末尾,默認為(x,y)。例如,如果左右兩個Dataframe對象都有「data」,則結果中就會出現data_x和data_ycopy設置為False,可以在某些特殊情況下避免將數據複製到結果數據結構中,默認值為複製二、程序處理(一)準備工作import ospath=r'F:\vlookup函數'if not os.path.exists(path): os.makedirs(path)os.chdir(path) import pandas as pdinfile="第一單位排名匯總.xlsx" outfile="out.xlsx" (二)讀入infiledf1 = pd.read_excel(infile,encoding = 'utf-8')print(df1.head())
結果中顯示了df1的前幾行數據值。
(三)創建outfiledata={'大學':['北京第二外國語學院','中南財經政法大學','深圳大學','上海大學','華中科技大學']}df2 = pd.DataFrame(data) print(df2)
結果中顯示df2成功寫入了所需的大學名單。
(四)合併dfneed=df1[['大學', '發文量','發文排名']] #df1中用到的列oncol='大學' #按照這一列進行合併df2=df2.merge(dfneed, how='left', on=oncol) #合併df2和df1中的dfneed#df2=pd.merge(df2,dfneed,how='left',on=oncol) #與上一行功能相同print(df2)
這裡我們設置保留左側的DataFrame的全部數據,可以將「北京第二外國語學院」這條數據保留下來(儘管它是空的,顯示為NaN)。
(五)導出df2.to_excel(outfile,index=False)打開Excel文件可以看到:
此時,已成功實現vlookup函數功能,得到目標文件。
三、結語pandas是Python中處理Excel常用的庫,今天我們使用其中的merge函數實現了Excel中的vlookup函數功能,除此之外pandas還有其他許多非常強大的功能,如果需要對大量表格數據進行處理,可以嘗試Python中的pandas庫。
對我們的推文累計打賞超過1000元,我們即可給您開具發票,發票類別為「諮詢費」。用心做事,不負您的支持!明星閃閃亮:各校高被引論文
split和nsplit助你輕鬆拆分
集成學習介紹之三——Stacking算法
Mylabels命令介紹
用WordStat看中國日報新聞
數據集的劃分——交叉驗證法
微信公眾號「Stata and Python數據分析」分享實用的stata、python等軟體的數據處理知識,歡迎轉載、打賞。我們是由李春濤教授領導下的研究生及本科生組成的大數據處理和分析團隊。
此外,歡迎大家踴躍投稿,介紹一些關於stata和python的數據處理和分析技巧。投稿郵箱:statatraining@163.com投稿要求:
1)必須原創,禁止抄襲;
2)必須準確,詳細,有例子,有截圖;
注意事項:
1)所有投稿都會經過本公眾號運營團隊成員的審核,審核通過才可錄用,一經錄用,會在該推文裡為作者署名,並有賞金分成。
2)郵件請註明投稿,郵件名稱為「投稿+推文名稱」。
3)應廣大讀者要求,現開通有償問答服務,如果大家遇到有關數據處理、分析等問題,可以在公眾號中提出,只需支付少量賞金,我們會在後期的推文裡給予解答。