網站首頁 編程語言 正文
前言
工作中經常會使用到將寬表變成窄表,例如這樣的形式
編號 | 編碼 | 單位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
相關推薦
- 2022-09-04 python接口自動化之正則用例參數化的示例詳解_python
- 2022-06-25 python+opencv實現堆疊圖片_python
- 2022-02-17 antv g2設置chart圖例的legend為一條線與一個圓的組合
- 2022-06-23 Android通過SeekBar調節布局背景顏色_Android
- 2022-05-12 前端在線預覽 tiff 格式的圖片
- 2022-09-03 Python?pandas?DataFrame基礎運算及空值填充詳解_python
- 2022-05-23 C#中的數據結構介紹_C#教程
- 2024-07-18 Spring Security之基于HttpRequest配置權限
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支