利用Python的pandas数据处理包将宽表变成窄表

 更新时间:2022年09月19日 16:57:44   作者:Joy_joye  
这篇文章主要介绍了利用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来简化办公繁杂的程序,提升工作效率。

到此这篇关于利用Python的pandas数据处理包将宽表变成窄表的文章就介绍到这了,更多相关Python的pandas数据处理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python3 tkinter实现点击一个按钮跳出另一个窗口的方法

    python3 tkinter实现点击一个按钮跳出另一个窗口的方法

    今天小编就为大家分享一篇python3 tkinter实现点击一个按钮跳出另一个窗口的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • Python计算素数个数的两种方法

    Python计算素数个数的两种方法

    本文主要介绍了Python计算素数个数的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • Python如何利用%操作符格式化字符串详解

    Python如何利用%操作符格式化字符串详解

    %是Python风格的字符串格式化操作符,非常类似C语言里的printf()函数的字符串格式化,下面这篇文章主要给大家介绍了关于Python如何利用%操作符格式化字符串的相关资料,需要的朋友可以参考下
    2021-10-10
  • Python获取基金网站网页内容、使用BeautifulSoup库分析html操作示例

    Python获取基金网站网页内容、使用BeautifulSoup库分析html操作示例

    这篇文章主要介绍了Python获取基金网站网页内容、使用BeautifulSoup库分析html操作,结合实例形式分析了Python基于urllib包的网页内容获取,以及使用BeautifulSoup分析html相关操作技巧,需要的朋友可以参考下
    2019-06-06
  • Python实现音频提取的示例详解

    Python实现音频提取的示例详解

    在日常生活中,有好听的翻唱视频或音乐视频可以将其音频分离保存到网易云或QQ音乐中随时听,然而大部分的音频分离软件需要下载和安装,所以本文就来分享一种提取音频的简便方法吧
    2023-09-09
  • python对url格式解析的方法

    python对url格式解析的方法

    这篇文章主要介绍了python对url格式解析的方法,涉及Python针对URL解析的相关技巧,需要的朋友可以参考下
    2015-05-05
  • Python Sqlalchemy如何实现select for update

    Python Sqlalchemy如何实现select for update

    这篇文章主要介绍了Python Sqlalchemy如何实现select for update,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • 5种Python单例模式的实现方式

    5种Python单例模式的实现方式

    这篇文章主要为大家介绍了5种Python单例模式的实现方式,所谓单例,是指一个类的实例从始至终只能被创建一次,对单例感兴趣的小伙伴们可以参考一下
    2016-01-01
  • python调用matplotlib模块绘制柱状图

    python调用matplotlib模块绘制柱状图

    这篇文章主要为大家介绍了python调用matplotlib模块绘制柱状图,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • 教你用 Python 发送告警通知到微信的操作过程

    教你用 Python 发送告警通知到微信的操作过程

    大家都知道常见的告警方式有:邮件,电话,短信,微信,今天通过本文给大家介绍下Python 发送告警通知到微信的操作过程,感兴趣的朋友一起看看吧
    2022-01-01

最新评论