利用Python的pandas数据处理包将宽表变成窄表
作者:Joy_joye 发布时间:2021-07-28 20:00:11
标签:Python,pandas,数据,处理
前言
工作中经常会使用到将宽表变成窄表,例如这样的形式
编号 | 编码 | 单位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
0
投稿
猜你喜欢
- 如何自动更新导航栏?下面看看如何具体使用Content Linking组件: <&nbs
- 最近因工作需要,要学习PHP的基础编程,于是学习架设PHP工作环境。但按照教材上介绍的那样,安装了WMAP后,一直无法运行成功。后发现Apa
- 本文实例分析了python删除指定类型(或非指定)的文件用法。分享给大家供大家参考。具体如下:如下,删除目录下非源码文件import os
- 目录CMD命令获取电脑里配置过的wifi信息用python脚本来实现这一操作,并获取所有配置过的wifi密码CMD命令获取电脑里配置过的wi
- 本文实例为大家分享了python爬取淘宝商品的具体代码,供大家参考,具体内容如下import requests as req import
- 目录一、Python 异常处理:错误与异常1、什么是错误?2、什么是异常?二、如何使用 Try-Except 处理异常?1、什么是 Try-
- 使用type()查看数据的类型在Python中, 可以使用type()类型来查看数据的类型:>>> type(3)<
- 函数如下: function update_timelist(&$arr,$timestamp,$threshold){ $time
- 代码如下:<% class MyClass Dim var '公共变量必须使
- 本文实例讲述了php多进程中的阻塞与非阻塞操作。分享给大家供大家参考,具体如下:我们通过pcntl_fork来创建子进程,使用pcntl_w
- 楔子估计有不少小伙伴在将 DataFrame 导入到 Excel 的时候,都遇到过下面这种尴尬的情况:想将多个 DataFrame 导入到一
- 以SQL Server中的Northwind示范数据库为例,利用DTS设计器,进行数据的转移。转移任务的步骤:◆1. 新建目的数据库NOrt
- 对于DataFrame的修改操作其实有很多,不单单是某个部分的值的修改,还有一些索引的修改、列名的修改,类型修改等等。我们仅选取部分进行介绍
- 前言Python 有 while 语句和 for 语句作为循环处理。虽然 for 语句具有一定数量的进程,但 while 语句是『直到满足条
- YAHOO.util.Subscriber 与 YAHOO.util.CustomEvent。1. YAHOO
- 一 MySQL WorkbenchMySQL Workbench提供DBAs和developers一个集成工具环境:1)数据库设计和建模2)
- PyQt5布局控件QHBoxLayout简介采用QBOXLayout类可以在水平和垂直方向上排列控件,QHBoxLayout和QVBoxLa
- 1.配置需要python3.7,Chrome或者Edeg浏览器,Chrome驱动或者Edge驱动#需要配置selenium库,baidu-a
- PDO::rollBackPDO::rollBack — 回滚一个事务(PHP 5 >= 5.1.0, PECL pdo >=
- 通过界面设计上是能手工操作的,无法达到我批量修改几千台服务器。 因为此了一个脚本来批量执行。 环境:redgate + mssql 2008