Pandas大数据分析之列表重塑和透视

134 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第14天,点击查看活动详情

✔个人主页:Mr.Darcy8的掘金主页

🎉欢迎关注👀点赞👍收藏⭐留言📝以及交流人生哲理🎈学习心得🎁

引入

在处理数据文件的时候,我们往往需要通过自己再处理来获得方便分析的数据表。这时候会经常用得到的操作就包括了重塑和透视。本期将对这个两个操作进行讲解,希望大家都能作出令自己满意的分析结果~

1.基础重塑

多层索引在DataFrame中提供了一种一致性的方式用于重排列数据。以下是两个基础操作:

1.1 stack(堆叠)

该操作会“旋转”或者将列中的数据透视到行。

1.2 unstack(拆堆)

该操作会将行中的数据透视到列。

下面来实际操作一下。我们选用jupyter notebook开发环境为例。

image.png

如上图,我们通过以下代码将所需要的包导入python环境

import numpy as np
import pandas as pd

接下来创建一个dataframe对象来处理数据——

df=pd.DataFrame({"a":["i","j","k","i","j","k"],"b":[2,1,4,1,2,4],"c":[3,2,2,1,2,3]})
df#用于在jupyter 环境中展示代码

对df进行stack操作,进行堆叠——转置列的数据到行:

image.png

成功转置了数据,但我们不难发现,这不再是一个dataframe了

image.png

我们得到的新对象是一个series。

image.png

同理,unstack就是stack的逆向。如上图,进行stack再进行unstack就会回到df。

tip:unstack是对series作用的。stack是对dataframe进行的。

2.重塑中的缺失值

如果层级中的所有值并未包含于每个子分组时,拆分可能会带来缺失值。

image.png

如图,我们创建一个子分组不对等的series:

s1=pd.Series([0,1,2,3],index=["a","b","c","d"])
s2=pd.Series([4,5,6],index=["c","d","e"])
df2=pd.concat([s1,s2],keys=["one","two"])

可以从图中看出,one 和 two的子分组中不对等。一个包含abcd,一个包含cde

运行unstack将其拆为dataframe,生成的是带有缺失值的数据:

df2.unstack()

但是需要注意的是,stack会过滤出缺失值,因此stack和unstack在有缺失值的情况下仍然符合可逆的特性

image.png

非常人性化是吗

新人上路,欢迎互相帮扶~Mr_darcy8的掘金主页

可以的话给咱点个赞呗💖