此系列文章收錄在公眾號中:數據大宇宙 > 數據處理 >E-pd
經常聽別人說 Python 在數據領域有多厲害,結果學了很長時間,連數據處理都麻煩得要死。後來才發現,原來不是 Python 數據處理厲害,而是他有數據分析神器—— pandas
前言
本系列上一篇文章關於合併多個 Excel 數據,許多小夥伴似乎對此比較感興趣,問我是否可以合併不規範的數據,本文就用他們提出的需求做一個大致講解
上一節文章:
懂Excel就能輕鬆入門Python數據分析包pandas(十六):合併數據
奇葩格式
現實中的表格數據,可能會存在標題等無用行:
注意看,每個文件的表格的表頭位置都不固定,並且有些是空列(估計現實中不會有這麼奇葩的情況)這裡的處理思路其實很簡單:
加載時讓 pandas 不要把首行作為表頭查找前 n 行數據,找到內容有符合表頭的行,把該行作為表頭把無用行與列去掉本系列多次強調,程式語言的作用是能讓你把重複邏輯封裝,以便日後重複使用。
這裡定義一個重置表頭方法:
x_df.head(10).isin(cols).sum(axis=1)>=2 ,用表格的前10行數據,用指定的表頭查找,只要某一行有大於等於2個符合的內容,則這行作為標題x_df.columns = x_df.loc[header_idx] ,通過 DataFrame.columns 可以輕鬆設置其表頭x_df.iloc[header_idx+1:].loc[:,cols] ,.iloc[header_idx+1:] :獲取表頭後的數據。.loc[:,cols]:獲取指定的列這裡涉及多種 pandas 知識,希望系統學習這些知識,我只能推薦你去看看我的 pandas 專欄
看看怎麼調用吧:
這裡的代碼與本系列上一節基本一樣在使用 pd.read_excel 加載數據時,設置 header=None (紅線) ,讓其不把任何數據設置為表頭加載數據後,調用之前定義的方法 reset_header 調整表格(綠線)總結
真的不要再誤以為 pandas 只能處理非常規範的數據了,這是一個類似於 Sql 的聲明式數據處理分析庫,同時也能使用任何命令式來細緻處理數據。
"聲明式數據處理"是指:不需要你編寫遍歷數據的邏輯代碼
本文重點:
pd.read_excel 方法中有大量參數,讓你控制其加載行為。header = None 讓其不把任何數據作為表頭充分利用 Python 的優點,不用每次都編寫複雜的代碼
如果希望從零開始學習 pandas ,那麼可以看看我的 pandas 專欄。