其他
Python 实战 | 利用 Python 做长宽面板转换(附数据&代码)
Python教学专栏,旨在为初学者提供系统、全面的Python编程学习体验。通过逐步讲解Python基础语言和编程逻辑,结合实操案例,让小白也能轻松搞懂Python!
>>>点击此处查看往期Python教学内容
本文目录
一、前言
二、处理思路浅析
三、处理代码
1. 读取原表
2. 分年份提取数据
3. 合并所有年份数据并排序
4. 保存为 Excel 表
四、总结
五、相关推荐
本文共 3925 个字,阅读大约需要 10 分钟,欢迎指正!
一、前言
二、处理思路浅析
先读取原表,然后在原表的基础上变换表格结构来达到目的。 读取原表,每次从中取出一年的数据,然后再将它们合并起来,最后按序排序即可。
三、处理代码
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 新手拿来练手。最后我们将本文用到的数据集和代码分享给大家,欢迎大家交流讨论。👉后台回复关键词“20240419”获取本文演示代码以及演示所用数据。
五、相关推荐
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 解决方案
Python 实战 | 从 PDF 中提取(框线不全的)表格
数据可视化
星标⭐我们不迷路!想要文章及时到,文末“在看”少不了!
点击搜索你感兴趣的内容吧
往期推荐
数据治理 | 江小涓:构建数据的经济学分析框架
Python 教学 | 卷积神经网络数学原理解析
软件应用 | 客观对比Python所有的依赖环境管理工具
数据可视化 | sjvisualizer,一个超强的Python数据可视化动画库
软件应用 | 没有思考过 Embedding,不足以谈 AI
数据Seminar
这里是大数据、分析技术与学术研究的三叉路口
欢迎扫描👇二维码添加关注