一开始我也不理解什么是宽表,搜了一下资料,原来横向看很长的表被叫做:宽表

一般宽表有时间轴,如从2013-2016年间的数据。如下:

长表则是这样的:

它的字段并不会很多,但是行数很多。

字段:excel中列的意思

如何将这两种类型表转化呢?

宽表转长表

第一步:将表放到pandas

import pandas as pd #宽表转长表 data=pd.read_excel('C:/Users/yellow/Desktop/data.xlsx',header=0)

print(data)

正常打印

第二步:确定索引列,就是你需要保存的字段

data1=data.melt(id_vars=["公司","名字"],var_name="Year",value_name="sale")

这段代码的意思是,将"公司","名字"这2个字段固定起来,然后将【2013、2014、2015、2016】转成Year列,将【5000、3500】值转成sale列,注意这里要用“双引号”,书是这样说的,赋值给data1,否则数据不会改变。

print(data1)

看见这种情况,就知道我们已经转成长表了。

现在我们开始从长表转成宽表:

长表转宽表

以下是长表的样子:

其实这个结果是data1的结果了,我把它转出excel了,那看看我们怎么转成宽表

第一步:打印在pandas

data2=pd.read_excel('C:/Users/yellow/Desktop/data1.xlsx',header=0)

打印成功的话,准备转了

第二步:开始转宽表

data3=data2.pivot_table(index=["公司","名字"],columns="Year",values="sale")

要用到pivot_table,我也不知道这个是啥东西,要打。index=["公司","名字"],你需要固定的列,columns="Year"将Year字段作为列,values="sale"将sale字段作为值。注意这里要用“双引号”,书是这样说的,赋值给data1,否则数据不会改变。

查看结果图:

以下是完整代码:

import pandas as pd #宽表转长表 data=pd.read_excel('C:/Users/yellow/Desktop/data.xlsx',header=0) print(data) data1=data.melt(id_vars=["公司","名字"],var_name="Year",value_name="sale") data1.to_excel('C:/Users/yellow/Desktop/data1.xlsx',index=True) print(data1) #长表转宽表 data2=pd.read_excel('C:/Users/yellow/Desktop/data1.xlsx',header=0) data3=data2.pivot_table(index=["公司","名字"],columns="Year",values="sale") data3.to_excel('C:/Users/yellow/Desktop/data2.xlsx',index=False) print(data3)

总结:

这个转化,特别简单,解决了我用透视表整理数据的烦恼。希望能对你们有帮助~