python二维数组转一维,python 将三维数据转为二维
在分析数据的时候,同事经常会给你一个二维的表格。你是不是每分钟都有想哭的冲动?怎么能一起看透很多东西?做进一步的分析也特别麻烦。今天给你一个方便的方法。
首先,介绍性版本
让我们先看看我们可能要处理什么样的文档。
听着,别担心。当然,我们不可能一开始就处理这么复杂的风格。先做个简单的验证。
这样的二维数据怎么会变成一维数据呢?
您可以在excel中完成此操作。
选择透视表,快捷键alt d p,这里是用wps演示,和office有异曲同工之妙。
选择多个合并计算区域。
创建单面字段
选择数据区域。
添加数据区域
默认情况下,单击“完成”确认新工作表。
这样的数据透视表就出现了。
这时,读者可能会认为它没有变成一维表,但它仍然是二维表。别急,有以下几个关键步骤。
删除数据透视表区域中的行和列的数据,只保留值区域。
改变之前
变更后
这就是我们的数据透视表的样子:
双击这个值,我们就得到这个6762。
这时,我进入了这样一个界面。相信细心的朋友会发现,这正是我们想要的2D数据。复制全部内容,更改以下名称。
让我们头疼的二维表也因此变成了一维表。
二、进阶版
这么简单的验证之后,我们再来考虑一下我们开头提到的复杂风格?我该怎么处理这个?可以这样解决吗?
先试试。
似乎不再那么管用了。我们希望二级地区、业务员、类型能像一级地区一样发展,但是在这里混了。我能做些什么呢?
熊猫来救援了。
熟悉python的人应该知道,经常有人说python是数据分析的好工具,但实际上python能进入数据分析领域,熊猫是其中最大的贡献者。熊猫和numpy成为python数据分析的最大法宝。这里我们要用熊猫的一个很方便的功能。
介绍相关数据包
#介绍相关产品包
进口熊猫作为pd
将numpy作为np导入
读入文件
#读入文件
File=rE:\销售数据报表项目\医美专题\2dims.xlsx
df=pd.read_excel(文件)
df.head()
输出:
一级区域和二级区域的销售员模型1月2月3月4月5月6月7月8月10月11月12月
浙南地区,浙南地区,名称1型1 . 20000000065
浙南地区,浙南地区,名称1型2。56360.68868886661
浙南地区,浙南地区,命名为2型1。56660.88868686661
浙南,华南(South China),名称2类型2.2000000000001 . 20001
浙南,即南方地区,有3种类型1之称。56660.68638686661
如你所见,它与我们在excel中看到的一致。
接下来,我们将开始转换过程。
转换处理
#转换处理
1=df.set _ index ([一级区域,二级区域,销售员,模型])
df2=df1.stack()
df3=df2.reset_index()
df3.columns=[主区域,子区域,销售人员,
产品_规格,月份,目标]
df3
输出:
主要_区域子区域销售_人工产品_规格月目标
0浙南地区名称1类型1 1月222.392385
1浙南地区名称1类型1 2月110.469420
2南区,浙南区,命名1型1,2007年3月。56866.78676886666
3浙南地区名称1类型14月208.341450
4浙南地区名称1类型1 5月23489775
南区,浙南区,名称1类型1,6月244.680075
6浙南地区名称1类型1 7月239.834925
7浙南地区名称1类型1 8月249.525225
8浙南地区名称1类型1 9月205.918875
9.名称1类型1 10,浙南,南区,10月276.173550
10南区,浙南区,名称1类型1 11,11 296 . 19961119921
11浙南地区名称1类型1 12 12 290.709000
2浙南地区名称1类型2 1月52.166115
.
305鲁北地区名称140类型2 10 10 127.680000
306鲁北地区名称140类型2 19800年11月
307鲁北地区名称140类型2 12 1340000
3408行 6列
可以看到,二维表变成了我们想要的一维表。
中间发生了什么神奇的事情?
我们来解释一下刚才的代码:
#转换处理开始。
#首先,将数据df设置为多个索引,如下所示
1=df.set _ index ([一级区域,二级区域,销售员,模型])
#然后将2D桌子变成堆叠风格
df2=df1.stack()
#重新索引堆叠的数据。
df3=df2.reset_index()
#我们把原来一行的内容改成了一列,系统当然不知道应该叫什么,
#所以我们要在这里命名这个新列。这里,为了方便后面的分析和使用,
#直接将所有列重命名为英文
df3.columns=[主区域,子区域,销售人员,
产品_规格,月份,目标]
#那么为什么要生成df1,2,3呢?这是为了覆盖原始数据,以防我们误恢复不了。
让我们来看看每次更改后的数据:
#设置多个索引后
输入:df1
出局:
一月二月三月四月五月六月七月八月九月十月十一月十二月
一级区域和二级区域的推销员模型
浙南地区名称1类型1.200000000001 . 20001
类型2 52.166115 25.912580 48.688370217 55.121058 57.3940955 56.55058 48 64
类型1 866.394630 430.63659634988 811.655105
输入2203.228370 100.950040 189.67988233 214.74040217 223.59545 50 228.01187 188 . 2566
类型1 1280.382795 636.0007140 1195.0239487 150 1352.909999925 1408
键入2 300.336705 149.18686860281.361183 317.34949248 323.49525 336.97095
类型1 891.733315 442.2899094835
输入2209.173185 103.903020 195.2228306 195.95745221.0217775 230.136075 225.
关于浙北地区的5型地名56660.88868688661
键入2 151.164000 75.088000 141.086400 141.613333 159.7266667 166.3133333 163.0200006 169.6066666667 139.9666667 187 186
名称6类型1 619.650000 307.800000 578.340000 580.500000 654.750000 681.750000 668.250000 695.250000 573.750000 769.50000 826.2000 810.000。
#更改为堆叠风格后
输入:df2
出局:
一级区域和二级区域的推销员模型
浙南地区名称1类型1 1 1月222.392385
2月110.469420
2006年3月207日,226页。
四月208.341450
5月234日
六月,26860 . 686866866666
7月239日
八月,249年,24380 . 488888888486
18875年9月205日
10月276.173550
11月296日至180日。59866.88888888686
12月290.709000
键入1月52.166115
12580年2月25日
三月四十八日
217年4月48日
2058年5月55日
657.394092
七月56日
58.530608年8月
1958年9月48日
1450年10月64日
11月69日554820
12月68日191000
2名称2类型1 1月1日866.394630
二月430.365960
有点像花括号的效果。不过这里可以看到,月份和销量都没有列出来。
#在这里,另一个df已经重建用于演示,
#因为以前的df3已经重命名了列名
In: df4=df2.reset_index()
df4
出局:
Level_4 0,一级区域和二级区域的销售员模型
0浙南地区名称1类型1 1月222.392385
1浙南地区名称1类型1 2月110.469420
2南区,浙南区,命名1型1,2007年3月。56866.78676886666
3浙南地区名称1类型14月208.341450
4南区,浙南区,名称1类型1,5月23489775
南区,浙南区,名称1类型1,6月244.680075
6浙南地区名称1类型1 7月239.834925
7浙南地区名称1类型1 8月249.525225
8浙南地区名称1类型1 9月205.918875
9.名称1类型1 10,浙南,南区,10月276.173550
10南区,浙南区,名称1类型1 11,11 296 . 19961119921
11浙南地区名称1类型1 12 12 290.709000
可以看到,前面的一级区和二级区都是内容填充的。但是月份和销量还是没有列出来。
In: df4.columns=[primary_area , sub_area , sales_man ,
产品_规格,月份,目标]
df4
出局:
主要_区域子区域销售_人工产品_规格月目标
0浙南地区名称1类型1 1月222.392385
1浙南地区名称1类型1 2月110.469420
2南区,浙南区,命名1型1,2007年3月。56866.78676886666
3浙南地区名称1类型14月208.341450
这样就完成了从有多个索引的二维表到一维表的转换。可见使用熊猫方便快捷,最重要的是可以处理excel不方便的地方。
附言
至此,今天的内容结束。可能有朋友说,你的题目不是说一维表和二维表要相互转换吗?为什么只谈二维表谈一维表?其实一维表转二维表是最简单的内容,主要和excel中的透视表有关。pandas还提供了一个类似于透视表的功能,那就是pivot_table函数。这个可以留给朋友们自己研究。有需要的可以关注微信官方账号给我留言,我们一篇文章讲。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。