此系列文章收錄在公眾號中:數據大宇宙 > 數據處理 >E-pd轉發本文並私信我"python",即可
經常聽別人說 Python 在數據領域有多厲害,結果學了很長時間,連數據處理都麻煩得要死。後來才發現,原來不是 Python 數據處理厲害,而是他有數據分析神器—— pandas
前言
這是本系列第16篇的文章,之前有小夥伴私信我說,這系列例子太簡單了,能給點實際點的例子嗎。好吧,這篇來看看如何用 pandas 拆分數據到各個 Excel 文件。
這是入門系列,並且是按 Excel 功能來開展,複雜一點的需求,Excel 自帶功能做不到呀
案例1
你的上級一言不合向你扔了一個業績表:
要求每個部門一個 Excel 文件,發送給各自部門這樣子的需求,就別想啥 Excel 自帶功能了,用個 Vba 實現還差不多,只不過你要學習啥數組、字典,這些高大上概念。
看看你怎麼用pandas漂亮回應你的上級:
df.groupby('部門') ,"每個部門 幹啥事情",不就是"按部門分組"嘛,沒錯,就是這麼簡單的表示.apply ,每個部門幹事情,裡面的參數就是做的事情x.to_excel(f'res-部門/{x.name}.xlsx',index=False) ,要做啥呢,輸出到 Excel 文件啊,就是 to_excel 方法不會 groupby ?看專欄第9節內容
案例2
當你以為完成工作的時候,這時候上級又找到你,他希望每個部門的 Excel 文件,可以把男女數據分開2個工作表。
你:what the ………………,so easy
代碼如下:
比之前複雜多了,其實多了2個部分不能直接使用 to_excel 方法,因為這方法每次都會生成一個新的文件,由此要先定義 pd.ExcelWriter當按性別分組時,調用 to_excel 要傳入 pd.ExcelWriterexl.save(), 記得最後要保存文件結果如下:
案例3
當你以為可以下班的時候,麻煩又一次找上你,現在各部門負責人不想按性別分開看,而是想看高於部門平均水平和低於平均水平的人。
有了上次經驗,簡單添加判斷銷售額的語句就可以了:
is_over = x_df['銷售額'] >= x_df['銷售額'].mean() ,得到是否高於平均的值列,當然也是用這列值進行分組總結
DataFrame.to_excel ,一次輸出 Excel 文件pd.ExcelWriter + DataFrame.to_excel ,一個文件輸出多個工作表
如果希望從零開始學習 pandas ,那麼可以看看我的 pandas 專欄。