task3——数据重构
学习参考资料:datawhale动手学数据分析
学习链接:https://github.com/datawhalechina/hands-on-data-analysis
学习目标:
- 了解数据重构的方法
- 学会使用groupby作数据运算
什么是数据重构?
数据重构:指数据从一种格式到另一种格式的转换,包括结构转换、格式变化、类型替换等,以解决空间数据在结构、格式和类型上的统一,实现多源和异构数据的联接与融合。
合并数据集
【知识部分】
stack
使用pandas进行数据重排时,经常用到stack和unstack两个函数。stack的意思是堆叠,堆积,unstack即“不要堆叠”。
常见的数据层次化结构有:花括号和表格。
表格在行列方向上均有索引(类似于DataFrame)。
花括号结构只有“列方向”上的索引(类似于层次化的Series)。
stack函数会将数据从”表格结构“变成”花括号结构“,即将其行索引变成列索引,反之,unstack函数将数据从”花括号结构“变成”表格结构“,即要将其中一层的列索引变成行索引。
方法 | 介绍 |
---|---|
stack | stack函数会将数据从”表格结构“变成”花括号结构“ ,将列索引转为行索引,完成层级索引 |
unstack | unstack函数将数据从”花括号结构“变成”表格结构“,层级索引展开 ,默认操作内层索引 |
df_obj = pd.DataFrame(np.random.randint(0,10, (5,2)), columns=['data1', 'data2'])
df_obj
stacked = df_obj.stack()
print(stacked)
stackedd=stacked.unstack()
print(stacked)
代码效果如下所示·:
concat
Pandas中的pd.concat与np.concatenate类似,但可选参数更多,功能更为强大。
pd.concat可以简单地合并一维的对象:
ser1 = pd.Series(['A', 'B', 'C'], index=[1, 2, 3])
ser2 = pd.Series(['D', 'E', 'F'], index=[4, 5, 6])
pd.concat([ser1, ser2])
多维数据合并:
df1 = make_df('AB', [1, 2])
df2 = make_df('AB', [3, 4])
display('df1', 'df2', 'pd.concat([df1, df2])')
concat函数的参数:
参数 | 说明 |
---|---|
objs | 参与连接pandas对象的列表或字典 |
axis | 连接指明的轴向 |
join | 指明其他轴向上的索引是按交集还是并集进行合并 |
join_axes | 指明用于其他n-1条轴向上的层次化索引。可以是任意值的列表或数组,元组数组,数组列表 |
levels | 指定用作层次化索引各级别上的索引 (如果设置外层索引) |
names | 用于创建分层的名字 |
verify_integrity | 检查结果对象新轴上的重复情况 |
ignore_index | 不保留连接轴上的索引,产生一组新索引range(total_length) |
numpy中concatenate和pd.concat的很像。
他俩的主要差异就在于pd.concat在合并时会保留索引&#x