持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第9天,点击查看活动详情
✔个人主页:Mr.Darcy8的掘金主页
🎉欢迎关注👀点赞👍收藏⭐留言📝以及交流人生哲理🎈学习心得🎁
引入
前面几期我几乎介绍了pandas可能用到的各个基础函数。
但有一个非常重要的内容似乎一直忽视了
包括我近期查阅了许多文章,好像在这部分内容上比较难以讲清楚,没基础的读者很容易云里雾里。
他就是pandas的数据框整体操作
涉及的具体操作包括但不限于:
- 表的合并(数据的整合)
- 表的连接(数据的整合)
- 特征矩阵构建
- ……
今天开始我们就大致在这些方面提供一些梳理和实例,帮助大家学习和理解。本期主要聚焦第一点,表的合并操作
一、准备工作
这篇文章的阅读希望你有:
- 一定的python编程基础
- 一定的pandas了解(我往期的文章看过了应该没问题)
- 对数据分析工作有一定的热情
- 吃饱喝足的你带上愿意思考的小脑瓜
本期选用的开发工具是anaconda的jupyter notebook,因为其分步运行比较适合进行讲解,同时作图和交互性适合数据科学工作。有相关规划的朋友可以装一个。
黄色的就是jupyter
首先来到你们的代码运行环境。任何ide都可以。
先导入pandas支持和numpy支持。并将文件读取。
数据说明
这里的数据和前几期的一样,是某电商平台的消费者行为数据。user列和brand列分别代表用户和品牌编号,不同用户不同品牌不重复,behavr列中0代表浏览,1代表购买,2代表收藏,3代表加入购物车,date列代表行为日期。
二、简单的数据合并
我们一般用contact函数来进行这个处理
先创建两个范例dataframe:
a=np.array([[2,4],[7,1]])
b=np.array([[3,5],[2,7]])
这两行代码是为了创建两个array数组,用以后期创建dataframe。注意这里的array本质是一维的,其中的元素是两个列表,列表里才是我们的2,4,7,1等——
比如我们在这里可以看看a是什么
a1=pd.DataFrame(a,index=[1,2],columns=["i","j"])
b1=pd.DataFrame(b,index=[1,2],columns=["i","j"])
这两行代码是用DataFrame函数来创建一个可以自定义行列名的dataframe,数据就是我们前面建立的两个array。
准备完成,开始合并:
pd.concat([a1,b1])
此操作直接将a1,b1合并为一个dataframe。
可以发现默认是竖向合并,在“列”上拼接。即合并列名相同的数据。
若要横向合并只需设定axis参数=1即可:
三、数据合并的特殊情况
为了增加数据复杂性,我们再创一个a2:
a2=pd.DataFrame([[2,3],[1,4],[5,7]],columns=["i","j"])
a2
不难发现这里有三列数据了。为的就是造一个索引数量与a1,b1不同的dataframe,探究合并的规律。
继续进行合并操作
正如代码中的注释:本质上是以合并方向上的键相同为基础。如无相同键就会空置当条数据
不排除重复这点很好理解,你合并的不是这个方向的数据嘛。
四、数据合并的处理过滤
我们不难发现合并此类数据框的时候会出现nan值,如果觉得这样破坏了和谐,想要去掉,怎么办呢?
设置join参数即可
如果希望保留二层结构,我们可以采用二层索引
这就完成了我们数据表合并的一些基本情况
新人上路,欢迎互相帮扶~Mr_darcy8的掘金主页
可以的话给咱点个赞呗💖