利用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上傳到里根目錄里就可以。

顯示出來的,結果如圖所示:

3.關鍵操作,將寬表轉(zhuǎn)換為窄表
pd.set_option('display.max_rows', None)
df=pd.melt(data,id_vars="結算編碼",var_name="單位",value_name="數(shù)量")
df.head()顯示結果如下, 可以看到數(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()處理后的結果可以看到,數(shù)據(jù)顯示齊全,并已過濾處理掉了空值。

5.導出存儲到Excel中
file_dir = 'D:/program/write/'
exists = os.path.exists(file_dir)
if not exists:
os.makedirs(file_dir)
df["結算編碼"] = df["結算編碼"].astype(str) #設置單元格格式
df.dropna().to_excel(os.path.join(file_dir,"result3.xlsx"), sheet_name="處理結果")處理后的存儲結果:

結論:Python對數(shù)據(jù)處理分析真的操作簡單高效,后續(xù)可以多多嘗試使用Python來簡化辦公繁雜的程序,提升工作效率。
到此這篇關于利用Python的pandas數(shù)據(jù)處理包將寬表變成窄表的文章就介紹到這了,更多相關Python的pandas數(shù)據(jù)處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
- python?pandas處理excel表格數(shù)據(jù)的常用方法總結
- python數(shù)據(jù)處理之Pandas類型轉(zhuǎn)換的實現(xiàn)
- Python?Pandas讀取Excel日期數(shù)據(jù)的異常處理方法
- Python數(shù)據(jù)處理的26個Pandas實用技巧總結
- python?pandas數(shù)據(jù)處理教程之合并與拼接
- python優(yōu)化數(shù)據(jù)預處理方法Pandas pipe詳解
- python數(shù)據(jù)處理67個pandas函數(shù)總結看完就用
- VBA處理數(shù)據(jù)與Python Pandas處理數(shù)據(jù)案例比較分析
- Python使用Pandas對csv文件進行數(shù)據(jù)處理的方法
- Python利用pandas處理Excel數(shù)據(jù)的應用詳解
相關文章
Keras構建神經(jīng)網(wǎng)絡踩坑(解決model.predict預測值全為0.0的問題)
這篇文章主要介紹了Keras構建神經(jīng)網(wǎng)絡踩坑(解決model.predict預測值全為0.0的問題),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07
利用Python定位Span標簽中文字的實戰(zhàn)指南
在網(wǎng)頁數(shù)據(jù)抓取和信息提取的過程中,經(jīng)常需要定位并獲取HTML中特定標簽的內(nèi)容,其中,<span>標簽是一個常見的內(nèi)聯(lián)元素,用于對文本進行分組或應用樣式,本文將詳細介紹如何使用Python來定位并提取<span>標簽中的文字,需要的朋友可以參考下2024-12-12
基于Python編寫一個監(jiān)控CPU的應用系統(tǒng)
在使用電腦辦公時,有時候不知道哪些軟件或進程會占用大量的資源,導致進行其他任務時出現(xiàn)變慢、卡頓等現(xiàn)象。因此,實時監(jiān)控系統(tǒng)的資源就變得非常重要。本文用Python編寫了一款超治愈的RunCat監(jiān)控應用系統(tǒng),需要的可以參考一下2022-06-06

