引入
前面几期我几乎介绍了pandas可能用到的各个基础函数。
但有一个非常重要的内容似乎一直忽视了
包括我近期查阅了许多文章,好像在这部分内容上比较难以讲清楚,没基础的读者很容易云里雾里。
他就是pandas的数据框整体操作
涉及的具体操作包括但不限于:
表的合并(数据的整合)
表的连接(数据的整合)
特征矩阵构建
……
今天开始我们就大致在这些方面提供一些梳理和实例,帮助大家学习和理解。本期主要聚焦第一点,表的合并操作
一、准备工作
这篇文章的阅读希望你有:
一定的python编程基础
一定的pandas了解(我往期的文章看过了应该没问题)
对数据分析工作有一定的热情
吃饱喝足的你带上愿意思考的小脑瓜
本期选用的开发工具是anaconda的jupyter notebook,因为其分步运行比较适合进行讲解,同时作图和交互性适合数据科学工作。有相关规划的朋友可以装一个。
首先来到你们的代码运行环境。任何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等——
pd.concat([a1,b1])
比如我们在这里可以看看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。
三、数据合并的特殊情况
为了增加数据复杂性,我们再创一个a2:
a2=pd.DataFrame([[2,3],[1,4],[5,7]],columns=["i","j"]) a2
不难发现这里有三列数据了。为的就是造一个索引数量与a1,b1不同的dataframe,探究合并的规律。
继续进行合并操作
正如代码中的注释:本质上是以合并方向上的键相同为基础。如无相同键就会空置当条数据
不排除重复这点很好理解,你合并的不是这个方向的数据嘛。
四、数据合并的处理过滤
我们不难发现合并此类数据框的时候会出现nan值,如果觉得这样破坏了和谐,想要去掉,怎么办呢?
设置join参数即可
如果希望保留二层结构,我们可以采用二层索引
这就完成了我们数据表合并的一些基本情况