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

Ada
Ada
发布时间:2026-10-16| 4人浏览过
原创

本文介绍如何使用Python的pandas库将宽表转换为窄表。通过pd.melt函数重塑数据结构,并结合dropna处理空值,最终导出为Excel文件。该方法简化了数据分析流程,提升了办公效率。

前言

在数据处理工作中,经常需要将宽表格式转换为窄表格式,例如将多列数据合并为键值对形式。

编号编码单位1单位2单位3单位4..................   
1编码1...数量...数量...数量...数量.....................   
2编码2...数量...数量...数量...数量.....................   

然而,宽表形式在查看和分析数据时往往不够直观和方便,通常需要将数据转换为窄表形式以便进一步处理。

编码单位数量
编码1单位1数量1
编码2单位2数量2
编码3单位3数量3
..................

尝试使用Excel中的lookup函数进行填充较为繁琐且无法直接实现该功能。鉴于正在学习Python,查阅相关资料后,发现可以利用Python强大的数据处理功能来实现这一需求。

pandas简介:pandas由panel data和data analysis组合而成,最初作为金融数据分析工具开发,为时间序列分析提供了良好支持。同时,它能灵活处理缺失数据,为数据分析操作提供了更为便捷的手段。

接下来直接展示Jupyter Notebook中的代码实现过程。

1. 引入包

导入处理分析所需的库,这一步非常简单。

import pandas as pd
import numpy as np
import os

2. 加载数据并显示。这是常规操作。

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

测试数据存储在test.xls文件中。文件存储路径无需过多考虑,只需在Jupyter中将原始文件上传至根目录即可。

显示结果如图所示。

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数据处理内容请搜索本站以前的文章或继续浏览下面的相关文章,希望大家以后多多支持本站!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。