前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用Pandas读取复杂Excel表单

使用Pandas读取复杂Excel表单

作者头像
Lenis
发布2019-12-25 16:51:44
5K0
发布2019-12-25 16:51:44
举报
文章被收录于专栏:有关SQL有关SQL

传统企业里,Excel仍然是数据存储,报表生成和数据分析的主力军,随着数据体量的增长,和数据分析、挖掘,BI更进一步需要,如何快速地使用Pandas来ETL Excel或者分析Excel就变得很重要了。

今天讨论的就是几个比较特殊的表单形式,

(图1)

(图2)

(图3)

碰到上面的这几种形式,你会怎么做?

这里我介绍下我的做法,

第一个和第二个图都是多行表头的形式,pandas的read_excel运行指定从指定行开始读取(就是忽略某些行)以及指定哪些为表头,

代码语言:javascript
复制
import pandas as pd

图1的代码实现

代码语言:javascript
复制
df = pd.read_excel('3headers_demo.xlsx'
                   ,sheet_name="Sheet1"
                   ,header=[0,1,2])
 df
代码语言:javascript
复制
df=df.set_index(df.columns[0])
df=df.stack(level=0).stack(level=0).reset_index()
df.columns=list(df.columns[1:].insert(0,'Date'))
df

图2的代码实现,

代码语言:javascript
复制
df = pd.read_excel('3headers_demo.xlsx'
                   ,sheet_name="Sheet4"
                   ,skiprows=1
                   ,header=[0,1,2])
df=df.iloc[:,1:]
df=df.set_index(df.columns[0])
df

得到和图1一样的结果,接下来的处理便一样了

图3的代码实现

图3是一种常见的MultiIndex形式

代码语言:javascript
复制
df = pd.read_excel('3headers_demo.xlsx'
                   ,sheet_name="Sheet3"
                   ,index_col=[0,1])
                   
df.reset_index()

Pandas不仅仅可以方便读取上面的复杂格式数据,也提供了非常丰富的数据转换函数,

有兴趣的同学可以详细阅读这篇文章,代码为主,https://pandas.pydata.org/pandas-docs/stable/user_guide/reshaping.html

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 有关SQL 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档