admin管理员组文章数量:1664590
更多详情请点击查看原文:Python 实战 | 利用 Python 做长宽面板转换(附数据&代码)
Python教学专栏,旨在为初学者提供系统、全面的Python编程学习体验。通过逐步讲解Python基础语言和编程逻辑,结合实操案例,让小白也能轻松搞懂Python!
>>>点击此处查看往期Python教学内容
本文目录
一、前言
二、处理思路浅析
三、处理代码
1. 读取原表
2. 分年份提取数据
3. 合并所有年份数据并排序
4. 保存为 Excel 表
四、总结
五、相关推荐
本文共 3925 个字,阅读大约需要 10 分钟,欢迎指正!
一、前言
从 Wind 下载的一些上市公司信息表样式比较复杂,字段非常多,就像下面这样。
上述表格记录了部分上市公司1990-2022年的九项信息,但每一个字段只记录了一项信息一年的数据,这样算下来全表字段数量已经接近 300 个,这样一个“长表”非常不利于我们精准查找信息。所以我们可以使用 Python 将其转换为如下图所示易用的宽面板数据。
二、处理思路浅析
要将上述长表转换为宽表,无非就是利用 Pandas 进行表格结构的转换,我们有以下两种思路:
-
先读取原表,然后在原表的基础上变换表格结构来达到目的。
-
读取原表,每次从中取出一年的数据,然后再将它们合并起来,最后按序排序即可。
第一种方式难度更高一些,因为字段名称中同时包含了指标名称和年份,所以我们需要把年份独立出来,但这显然不是通过常规的转置等操作就可以实现的。因此使用第二种方式更为方便。
三、处理代码
1. 读取原表
import pandas as pd
# dtype=str 表示以字符类型读取所有列,这是为了防止 pandas 字段类型特性改变数字的精度
data = pd.read_excel('./金融机构上市信息-财务信息20230519.xlsx', dtype=str)
data
2. 分年份提取数据
# 获取原表中所有的指标名称
New_cols1 = [COL.split('\n')[0] for COL in list(data.columns)[2:]]
# 对指标名称去重
New_cols = list(set(New_cols1))
# 去重后再根据原始顺序排序
New_cols.sort(key=New_cols1.index)
# ['资产总计', '负债合计', '所有者权益合计', '营业收入', '营业支出', '营业利润', '利润总额', '所得税', '净利润']
# 先获取所有包含指标名称和年份的原始表字段名
ORICOLS = list(data.columns)[2:]
# 创建一个列表,用于存放每一年的数据
ALL_YEARS = []
for year in list(range(1990, 2023)):
# 循环年份
# COL_year 是后续从原始表中取数据时需要的字段
COL_year = ['证券代码', '证券简称']
# 循环筛选后面的字段,找出符合年份要求的字段名
for col in ORICOLS:
if str(year) in col:
COL_year.append(col)
# 根据前面获取的字段名列表从原始表中筛选数据
data_year = data.loc[:,COL_year]
# 插入年份字段
data_year.insert(2, '年份', str(year))
# 优化字段名,仅保留指标名称
data_year.columns = [COL.split('\n')[0] for COL in list(data_year.columns)]
# 处理后的单个年份的数据表存入提前准备好的列表 ALL_YEARS 中
ALL_YEARS.append(data_year)
3. 合并所有年份数据并排序
# 循环结束后,将所有年份的数据纵向合并在一起形成宽面板
ALL_DATA = pd.concat(ALL_YEARS)
# 按照证券代码和年份进行排序
ALL_DATA.sort_values(by=['证券代码', '年份'], inplace=True)
ALL_DATA
合并、排序后,最终表的结构如下。
4. 保存为 Excel 表
# index=False 表示写入时不保留行索引
# 行索引是 DataFrame 类型特有的属性,若无特殊需求,一般在写入时都不会保留索引
ALL_DATA.to_excel('./金融机构上市信息-财务信息20230519_宽面板.xlsx', index=False)
四、总结
💡本期文章分享了一个非常简单的 Python 数据处理案例,虽然处理思路和过程十分简单,但还是用到了数据分析库 Pandas 中的多个函数,例如读写数据、数据切片、数据排序等,十分有利于 Python 新手拿来练手。最后我们将本文用到的数据集和代码分享给大家,欢迎大家交流讨论。
👉数据 Seminar (GZH) 后台回复关键词“20240419”获取本文演示代码以及演示所用数据。
如果你想学习各种 Python 编程技巧,提升个人竞争力,那就加入我们的数据 Seminar 交流群吧(请查看原文,以获取交流方式),欢迎大家在社群内交流、探索、学习,一起进步!同时您也可以分享通过数据 Seminar 学到的技能以及得到的成果。
五、相关推荐
Python 教学
-
Python 教学 | 学习 Python 第一步——环境安装与配置
-
Python 教学 | Python 基本数据类型
-
Python 教学 | Python 字符串操作(上)
-
Python 教学 | Python 字符串操作(下)
-
Python 教学 | Python 变量与基本运算
-
Python 教学 | 组合数据类型-列表
-
Python 教学 | 组合数据类型-集合(内含实例)
-
Python 教学 | 组合数据类型 - 字典&元组
-
Python 教学 | Python 中的分支结构(判断语句)
-
Python 教学 | Python 中的循环结构(上)
-
Python 教学 | Python 中的循环结构(下)
-
Python 教学 | Python 函数的定义与调用
-
Python 教学 | Python 内置函数
-
Python 教学 | 最常用的标准库之一 —— os
-
Python 教学 | 盘点 Python 数据处理常用标准库
-
Python 教学 | “小白”友好型正则表达式教学(一)
-
Python 教学 | “小白”友好型正则表达式教学(二)
-
Python 教学 | “小白”友好型正则表达式教学(三)
-
Python 教学 | 数据处理必备工具之 Pandas(基础篇)
-
Python 教学 | 数据处理必备工具之 Pandas(数据的读取与导出)
-
Python 教学 | Pandas 数据索引与数据选取
-
Python 教学 | Pandas 妙不可言的条件数据筛选
-
Python 教学 | Pandas 缺失值与重复值的处理方法
-
Python 教学 | Pandas 表格数据行列变换
-
Python 教学 | Pandas 表格字段类型精讲(含类型转换)
-
Python 教学 | Pandas 数据合并(含目录文件合并案例)
-
Python 教学 | Pandas 数据匹配(含实操案例)
-
Python 教学 | Pandas 函数应用(apply/map)【上】
-
Python 教学 | Pandas 函数应用(apply/map)【下】
-
Python 教学 | Pandas 分组聚合与数据排序
-
Python 教学 | Pandas 时间数据处理方法
-
Python 教学 | 列表推导式 & 字典推导式
-
Python 教学 | 一文搞懂面向对象中的“类和实例”
-
Python 教学 | Python 学习路线+经验分享,新手必看!
-
Python 教学 | 解密 Windows 中的 Path 环境变量
-
Python教学 | 有备无患!详解 Python 异常处理(try-except)
Python实战
-
Python实战 | 如何使用 Python 调用 API
-
Python 实战 | 使用正则表达式从文本中提取指标
-
大数据分析 | 用 Python 做文本词频分析
-
数据治理 | 从“今天中午吃什么”中学习Python文本相似度计算
-
数据治理 | 省下一个亿!一文读懂如何用python读取并处理PDF中的表格(赠送本文所用的PDF文件)
-
数据治理 | 还在人工识别表格呢?Python 调用百度 OCR API 又快又准
-
数据治理 | 如何用 Python 批量压缩/解压缩文件
-
案例分享:使用 Python 批量处理统计年鉴数据(上)
-
案例分享:使用 Python 批量处理统计年鉴数据(下)
-
Python 实战 | ChatGPT + Python 实现全自动数据处理/可视化
-
ChatGPT在指尖跳舞: open-interpreter实现本地数据采集、处理一条龙
-
Python 实战 | 文本分析之文本关键词提取
-
Python 实战 | 文本分析工具之HanLP入门
-
Python 实战 | 进阶中文分词之 HanLP 词典分词(上)
-
Python 实战 | 进阶中文分词之 HanLP 词典分词(下)
-
Python实战 | 文本文件编码问题的 Python 解决方案
-
Python 实战 | 从 PDF 中提取(框线不全的)表格
数据可视化
-
数据可视化 | 讲究!用 Python 制作词云图学问多着呢
-
数据可视化 | 地址数据可视化—教你如何绘制地理散点图和热力图
-
数据可视化 | 太酷了!用 Python 绘制3D地理分布图
-
数据可视化 | 用 Python 制作动感十足的动态柱状图
-
数据可视化 | Python绘制多维柱状图:一图展示西部各省人口变迁【附本文数据和代码】
-
数据可视化 | 3D 柱状图一览各省农民合作社存量近十年变化
版权声明:本文标题:Python 实战 | 利用 Python 做长宽面板转换(附数据&代码) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1730022161a1219585.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论