横向表格如何转换竖表(excel横表变竖表)

我们日常做数据分析,接收到最多的表格是纵表,每个字段变量都有很长数据的长表,我们称之为纵向数据,但是,有时候,我们也会遇到横表,称之为横向数据,对于横向数据,我们会数据转化,将其转化为纵向数据进行数据处理,下面一起来学习。

示例工具:anconda3.7

本文讲解内容:pandas数据重塑

适用范围:在Python横表与纵表转化

横向表格如何转换竖表(excel横表变竖表)

首先导入我们本次案例使用的横向数据,从这里看出,横向数据类似于Excel数据透视表得出的表,将''季度''这个字段拖入到列,就会得到横表。

横向表格如何转换竖表(excel横表变竖表)

导入横向数据如下,包含城市、年份等字段。

import pandas as pd

wide_table=pd.read_excel(r'C:\Users\尚天强\Desktop\各城市销量横向数据.xlsx')
wide_table
横向表格如何转换竖表(excel横表变竖表)

横表转纵表

横表转纵表这里介绍两种方法,一种是melt()方法,另一种是stack()方法,在melt()的参数中id_vars表示不需要被转换的列名,除此之外剩下的列全部都要转换,就不用写了,var_name和value_name是自定义设置对应的列名,转为长表的数据如下所示。

long_table=wide_table.melt(id_vars=["城市","年份"],var_name="季度",value_name="销售量")
long_table=long_table.sort_values(by=["城市","年份","销售量"],ascending=False)
long_table

使用stack()方法,首先将'城市','年份'设置为这组数据的索引,然后stack()将列索引转换为行索引,最后reset_index()重置索引,修改一下列名,即可的得到与上面一样的结果。

long_table=wide_table.set_index(['城市','年份']).stack().reset_index()
long_table.columns=['城市','年份','季度','销售量']
long_table
横向表格如何转换竖表(excel横表变竖表)

纵表转横表

纵表转横表就是使用前面介绍的数据透视的方法,看看Python如何做数据透视,这里使用pivot_table(),与Excel数据透视表类似,index放入行值,columns放入列值,values放入计算的值,然后重置索引,即可得到横表的结果。

wide_table=long_table.pivot_table(index=['城市','年份'],columns='季度',values='销售量').reset_index()
wide_table=wide_table[['城市','年份','第一季度','第二季度','第三季度','第四季度']]
wide_table

除此之外介绍一个SQL语法创建数据透视表的方法,这里导入pandasql库,sum结合case when函数判断计算列值,然后group by进行分组,即可得出如下的结果。

import pandasql as sql

sql.sqldf("""select 城市,年份,
             sum(case when 季度="第一季度" then 销售量 end) as "第一季度",
             sum(case when 季度="第二季度" then 销售量 end) as "第二季度",
             sum(case when 季度="第三季度" then 销售量 end) as "第三季度",
             sum(case when 季度="第四季度" then 销售量 end) as "第四季度"
             from long_table
             group by 城市,年份
             order by 年份;""")
横向表格如何转换竖表(excel横表变竖表)

数据导出

本节的内容相对比较简单,熟练掌握纵表和横表的相互转化方法,以及数据透视的方法,可以让数据清洗变得尤为简单,数据表转换后赋值变量,然后导出,数据结果如下所示。

table1=long_table
table2=sql.sqldf("""select 城市,年份,
                    sum(case when 季度="第一季度" then 销售量 end) as "第一季度",
                    sum(case when 季度="第二季度" then 销售量 end) as "第二季度",
                    sum(case when 季度="第三季度" then 销售量 end) as "第三季度",
                    sum(case when 季度="第四季度" then 销售量 end) as "第四季度"
                    from long_table
                    group by 城市,年份
                    order by 年份;""")
#数据导出
write=pd.ExcelWriter(r'C:\Users\尚天强\Desktop'+'\\Python转置结果'+'.xlsx')

table1.to_excel(write,sheet_name='Python横向转纵向',index=False)
table2.to_excel(write,sheet_name='Python纵向转横向',index=False)

write.save()
write.close()
横向表格如何转换竖表(excel横表变竖表)

免责声明: 文章源于会员发布,不作为任何投资建议

如有侵权请联系我们删除,本文链接:https://www.sws100.com/baike/269738.html

(0)
鸟叔鸟叔
上一篇 2023年 3月 13日
下一篇 2023年 3月 13日

相关推荐

  • 多肉移植后需要浇水吗(多肉移植后多久浇水晒太阳)

    今天有肉友问唐长老:多肉重新翻盆后需要浇水吗? 鲁氏锦 虽然说万物生长靠太阳,但水分对于多肉植物来说同样是非常重要的,所以不管是我们平常养护也好,还是多肉刚刚栽种和翻盆也罢,都必须按照盆土干湿情况和水分需求程度按时补充水分,否则不仅会影响多肉的正常生长,同时也会影响它们发根服盆,甚至于完全无法服盆。 月影SP 给多肉翻盆的最好季节是春季和秋季,而其它两个季节…

    2023年 3月 13日
  • 怎么创建新的微信号(如何创建微信小号)

    日前,微信已经更新到了8.0.15版,除了一些日常更新,还有部分Android用户发现官方在recover工具中新增了深度清理内存的功能,可以节省出很多的内存空间。 不仅如此,这两天还悄悄上线了一个“图*****辅助注册”功能,可通过当前图*****注册另一个新账号。 而在此前,注册图*****必须通过手机号收取验证码,而且是一对一绑定,也就是说,如果只有一…

    2023年 4月 14日
  • 重庆今天限号是多少号(重庆今天限号是多少号哪些地方)

    最近有很多朋友都想知道重庆今天限号是多少号是什么。今天小编特意为大家整理了相关知识来解答!还有其他网友想搞清楚重庆今天限号是多少号哪些地方,句子百科(www.sws100.com)已经为你找到了相关问题的答案,接下来一起看看吧,希望能给大家带来帮助。 每到月初 小编就要跟大家再提醒下 重庆限行规定 不然有些迷糊的小粉丝 一不小心忘了重庆限行规定开车出去 那又…

    2022年 8月 29日
  • 广州高速封路了吗(广州高速路口有没有封路)

    12月31日,记者从广东交警获悉,在元旦、春节、端午节、国庆节等重大节假日和春运高峰期间广东省内高速公路禁止危险货物运输车辆通行。 据了解,为加强危险货物运输车辆交通安全管理,保护人民群众生命财产安全和环境安全,确保2023年重大节假日和春运高峰期间全省高速公路交通安全畅通,依据《中华人民共和国道路交通安全法》《危险化学品安全管理条例》《道路运输条例》《危险…

    社会百科 2023年 2月 1日
  • 2022宝宝取名大全男孩免费(2021年宝宝起名 男孩大全)

    中国传统是以立春为新的一年伊始,所以生肖属相的更替也是以立春为依据的。也就是说,其实2022年2月4日4点50分36秒之后出生的才算是虎宝宝。但是起名不是一件简单的事情,对于即将出生的虎宝宝,我们要提前起好名字。接下来,小编就给大家带来一些虎宝宝名,希望大家喜欢。 虎年吉祥又霸气的男宝宝名字大全镇棋、吟霜、诚秉、游旭、玉彻 彦池、济钧、誓天、少识、钟怀 铭影…

    2023年 6月 7日

联系我们

在线咨询: QQ交谈

邮件:k37759@foxmail.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信