日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

利用Python的pandas數據處理包將寬表變成窄表_python

作者:Joy_joye ? 更新時間: 2022-11-10 編程語言

前言

工作中經常會使用到將寬表變成窄表,例如這樣的形式

編號 編碼 單位1 單位2 單位3 單位4 ... ... ... ... ... ... ? ? ?
1 編碼1... 數量... 數量... 數量... 數量... ... ... ... ... ... ... ? ? ?
2 編碼2... 數量... 數量... 數量... 數量... ... ... ... ... ... ... ? ? ?

然而工作中,這樣查看數據不夠方便,往往需要窄表的形式,如下:

編碼 單位 數量
編碼1 單位1 數量1
編碼2 單位2 數量2
編碼3 單位3 數量3
...... ...... ......

嘗試使用Excel中的lookup函數進行填充,較為麻煩還不能直接實現功能,剛好在自學Python,就查閱了資料,看看能不能使用Python強大的數據處理功能來實現這個需求。

pandas簡介:pandas=pannel data+ data analysis;最初被作為金融數據分析工具而開發出來的,pandas為時間序列分析提供了很好的支持。同是也能夠靈活處理缺失數據,為數據分析操作提供了更為便捷的手段。

話不多說,直接上jupyter代碼。

1.引入包

供處理分析使用,這步so easy!

import pandas as pd
import numpy as np
import os

2.加載數據并顯示。常規操作。

data=pd.read_excel('test.xls')
data.head()

自己的測試數據存在test.xls中,這個文件存儲在路徑不必考慮,直接將原始存儲的文件在jupyter中點upload上傳到里根目錄里就可以。

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

3.關鍵操作,將寬表轉換為窄表

pd.set_option('display.max_rows', None)
df=pd.melt(data,id_vars="結算編碼",var_name="單位",value_name="數量")
df.head()

顯示結果如下,?可以看到數據顯示不全,還有空值,需要進一步進行處理操作。

?4.對空值進行處理

pd.set_option('display.max_rows', None)
#刪除所有值為空的行
df.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False) 
#how字段可選有any和all,any表示只要有空值出現就刪除,all表示全部為空值才刪除;inplace字段表示是否替換掉原本的數據
#刪除所有值為空的列
df.dropna(axis="columns",how="all",inplace=False)
df.dropna()

處理后的結果可以看到,數據顯示齊全,并已過濾處理掉了空值。?

?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對數據處理分析真的操作簡單高效,后續可以多多嘗試使用Python來簡化辦公繁雜的程序,提升工作效率。

原文鏈接:https://blog.csdn.net/weixin_40165004/article/details/126873878

欄目分類
最近更新