利用Python的pandas數(shù)據(jù)處理包將寬表變成窄表
前言
工作中經(jīng)常會使用到將寬表變成窄表,例如這樣的形式
編號 | 編碼 | 單位1 | 單位2 | 單位3 | 單位4 | ... | ... | ... | ... | ... | ... |
1 | 編碼1... | 數(shù)量... | 數(shù)量... | 數(shù)量... | 數(shù)量... | ... | ... | ... | ... | ... | ... |
2 | 編碼2... | 數(shù)量... | 數(shù)量... | 數(shù)量... | 數(shù)量... | ... | ... | ... | ... | ... | ... |
然而工作中,這樣查看數(shù)據(jù)不夠方便,往往需要窄表的形式,如下:
編碼 | 單位 | 數(shù)量 |
編碼1 | 單位1 | 數(shù)量1 |
編碼2 | 單位2 | 數(shù)量2 |
編碼3 | 單位3 | 數(shù)量3 |
...... | ...... | ...... |
嘗試使用Excel中的lookup函數(shù)進行填充,較為麻煩還不能直接實現(xiàn)功能,剛好在自學Python,就查閱了資料,看看能不能使用Python強大的數(shù)據(jù)處理功能來實現(xiàn)這個需求。
pandas簡介:pandas=pannel data+ data analysis;最初被作為金融數(shù)據(jù)分析工具而開發(fā)出來的,pandas為時間序列分析提供了很好的支持。同是也能夠靈活處理缺失數(shù)據(jù),為數(shù)據(jù)分析操作提供了更為便捷的手段。
話不多說,直接上jupyter代碼。
1.引入包
供處理分析使用,這步so easy!
import pandas as pd import numpy as np import os
2.加載數(shù)據(jù)并顯示。常規(guī)操作。
data=pd.read_excel('test.xls') data.head()
自己的測試數(shù)據(jù)存在test.xls中,這個文件存儲在路徑不必考慮,直接將原始存儲的文件在jupyter中點upload上傳到里根目錄里就可以。
顯示出來的,結(jié)果如圖所示:
3.關(guān)鍵操作,將寬表轉(zhuǎn)換為窄表
pd.set_option('display.max_rows', None) df=pd.melt(data,id_vars="結(jié)算編碼",var_name="單位",value_name="數(shù)量") df.head()
顯示結(jié)果如下, 可以看到數(shù)據(jù)顯示不全,還有空值,需要進一步進行處理操作。
4.對空值進行處理
pd.set_option('display.max_rows', None) #刪除所有值為空的行 df.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False) #how字段可選有any和all,any表示只要有空值出現(xiàn)就刪除,all表示全部為空值才刪除;inplace字段表示是否替換掉原本的數(shù)據(jù) #刪除所有值為空的列 df.dropna(axis="columns",how="all",inplace=False) df.dropna()
處理后的結(jié)果可以看到,數(shù)據(jù)顯示齊全,并已過濾處理掉了空值。
5.導出存儲到Excel中
file_dir = 'D:/program/write/' exists = os.path.exists(file_dir) if not exists: os.makedirs(file_dir) df["結(jié)算編碼"] = df["結(jié)算編碼"].astype(str) #設(shè)置單元格格式 df.dropna().to_excel(os.path.join(file_dir,"result3.xlsx"), sheet_name="處理結(jié)果")
處理后的存儲結(jié)果:
結(jié)論:Python對數(shù)據(jù)處理分析真的操作簡單高效,后續(xù)可以多多嘗試使用Python來簡化辦公繁雜的程序,提升工作效率。
到此這篇關(guān)于利用Python的pandas數(shù)據(jù)處理包將寬表變成窄表的文章就介紹到這了,更多相關(guān)Python的pandas數(shù)據(jù)處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- python?pandas處理excel表格數(shù)據(jù)的常用方法總結(jié)
- python數(shù)據(jù)處理之Pandas類型轉(zhuǎn)換的實現(xiàn)
- Python?Pandas讀取Excel日期數(shù)據(jù)的異常處理方法
- Python數(shù)據(jù)處理的26個Pandas實用技巧總結(jié)
- python?pandas數(shù)據(jù)處理教程之合并與拼接
- python優(yōu)化數(shù)據(jù)預(yù)處理方法Pandas pipe詳解
- python數(shù)據(jù)處理67個pandas函數(shù)總結(jié)看完就用
- VBA處理數(shù)據(jù)與Python Pandas處理數(shù)據(jù)案例比較分析
- Python使用Pandas對csv文件進行數(shù)據(jù)處理的方法
- Python利用pandas處理Excel數(shù)據(jù)的應(yīng)用詳解
相關(guān)文章
python3 tkinter實現(xiàn)點擊一個按鈕跳出另一個窗口的方法
今天小編就為大家分享一篇python3 tkinter實現(xiàn)點擊一個按鈕跳出另一個窗口的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06Python獲取基金網(wǎng)站網(wǎng)頁內(nèi)容、使用BeautifulSoup庫分析html操作示例
這篇文章主要介紹了Python獲取基金網(wǎng)站網(wǎng)頁內(nèi)容、使用BeautifulSoup庫分析html操作,結(jié)合實例形式分析了Python基于urllib包的網(wǎng)頁內(nèi)容獲取,以及使用BeautifulSoup分析html相關(guān)操作技巧,需要的朋友可以參考下2019-06-06Python Sqlalchemy如何實現(xiàn)select for update
這篇文章主要介紹了Python Sqlalchemy如何實現(xiàn)select for update,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-10-10python調(diào)用matplotlib模塊繪制柱狀圖
這篇文章主要為大家介紹了python調(diào)用matplotlib模塊繪制柱狀圖,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-10-10