基础知识在数据分析中就像是九阳神功,熟练的掌握,加以运用,就可以练就深厚的内力,成为绝顶高手自然不在话下!
.
为了更好地学习数据分析,我对于数据分析中pandas这一模块里面常用的函数进行了总结。整篇总结,在详尽且通俗易懂的基础上,我力求使其有很强的条理性和逻辑性,所以制作了思维导图,对于每一个值得深究的函数用法,我也会附上官方链接,方便大家继续深入学习。
.
文章中的所有代码都会有讲解和注释,绝大部分也都会配有运行结果,酱紫的话,整篇总结篇幅量自然不小,所以我分成了上下两篇,这里是下篇。
5. 数据预处理
先创建一个data2数据集
data2=pd.DataFrame({
"id":np.arange(102,105),
"profit":[1,10,2]
})
data2
输出结果:
id | profit | |
---|---|---|
0 | 102 | 1 |
1 | 103 | 10 |
2 | 104 | 2 |
再创建一个data3数据集
data3=pd.DataFrame({
"id":np.arange(111,113),
"money":[106,51]
})
data3
输出结果:
id | money | |
---|---|---|
0 | 111 | 106 |
1 | 112 | 51 |
5.1 数据的合并
用merge合并
DataFrame.merge(self,right,how =‘inner’,on = None)
- right指要合并的对象
- on指要加入的列或索引级别名称,必须在两个DataFrame中都可以找到。
- how决定要执行的合并类型:left(使用左框架中的键)、right、inner(交集,默认)、outer(并集)
data_new=pd.merge(data,data2,on='id',how='inner') # 默认取交集
data_new=pd.merge(data,data2,on='id',how='outer') # 取并集,没有值的地方填充NaN
data.merge(data2,on='id',how='inner') # 另一种写法,输出结果见下方
输出结果:
id | date | money | product | department | origin | profit | |
---|---|---|---|---|---|---|---|
0 | 102 | 2020-03-11 | 4.000000 | 可乐 | 饮料 | China | 1 |
1 | 103 | 2020-03-12 | 65.000000 | 牛肉干 | 零食 | America | 10 |
2 | 104 | 2020-03-13 | 20.666667 | 老干妈 | 调味品 | China | 2 |
更多关于pandas.DataFrame.merge的用法,戳下面官方链接:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.merge.html
data.merge(data2,on='id',how='left') # 使用左框架中的键
输出结果:
id | date | money | product | department | origin | profit | |
---|---|---|---|---|---|---|---|
0 | 101 | 2020-03-10 | 5.000000 | 苏打水 | 饮料 | China | NaN |
1 | 102 | 2020-03-11 | 4.000000 | 可乐 | 饮料 | China | 1.0 |
2 | 103 | 2020-03-12 | 65.000000 | 牛肉干 | 零食 | America | 10.0 |
3 | 104 | 2020-03-13 | 20.666667 | 老干妈 | 调味品 | China | 2.0 |
4 | 105 | 2020-03-14 | 15.000000 | 菠萝 | 水果 | Thailand | NaN |
5 | 106 | 2020-03-15 | 20.000000 | 冰激凌 | 冷冻食品 | China | NaN |
6 | 107 | 2020-03-16 | 35.000000 | 洗面奶 | 日用品 | America | NaN |
7 | 108 | 2020-03-17 | 16.000000 | 洋葱 | 蔬菜 | China | NaN |
8 | 109 | 2020-03-18 | 6.000000 | 牙膏 | 日用品 | China | NaN |
9 | 110 | 2020-03-19 | 20.000000 | 薯片 | 零食 | Japan | NaN |
用append合并
data.append(data2) # 在原数据集的下方合并入新的数据集
输出结果:
date | department | id | money | origin | product | profit | |
---|---|---|---|---|---|---|---|
0 | 2020-03-10 | 饮料 | 101 | 5.000000 | China | 苏打水 | NaN |
1 | 2020-03-11 | 饮料 | 102 | 4.000000 | China | 可乐 | NaN |
2 | 2020-03-12 | 零食 | 103 | 65.000000 | America | 牛肉干 | NaN |
3 | 2020-03-13 | 调味品 | 104 | 20.666667 | China | 老干妈 | NaN |
4 | 2020-03-14 | 水果 | 105 | 15.000000 | Thailand | 菠萝 | NaN |
5 | 2020-03-15 | NaN | 106 | 20.000000 | China | 冰激凌 | NaN |
6 | 2020-03-16 | 日用品 | 107 | 35.000000 | America | 洗面奶 | NaN |
7 | 2020-03-17 | 蔬菜 | 108 | 16.000000 | China | 洋葱 | NaN |
8 | 2020-03-18 | 日用品 | 109 | 6.000000 | China | 牙膏 | NaN |
9 | 2020-03-19 | 零食 | 110 | 20.000000 | Japan | 薯片 | NaN |
0 | NaN | NaN | 102 | NaN | NaN | NaN | 1.0 |
1 | NaN | NaN | 103 | NaN | NaN | NaN | 10.0 |
2 | NaN | NaN | 104 | NaN | NaN | NaN | 2.0 |
用join合并
用下面这种方式会报错:列重叠,且没有指定后缀,因为上面的数据data和data2都有“id”列,所以需要给id列指明后缀。
data.