ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

DataWhale 动手学数据分析 Task03 数据重构

2021-06-19 23:00:33  阅读:250  来源: 互联网

标签:重构 up DataFrame down train DataWhale Task03 csv result


# 导入基本库
import numpy as np
import pandas as pd

任务一:读取数据,并观察数据之间的关系

train_left_up=pd.read_csv('train-left-up.csv')
train_left_down=pd.read_csv(r'.\train-left-down.csv')
train_right_up=pd.read_csv(r'.\train-right-up.csv')
train_right_down=pd.read_csv(r'.\train-right-down.csv')

上面四组数据即为train.csv数据集分成的四块

任务二:使用concat方法:将数据train-left-up.csv和train-right-up.csv横向合并为一张表,并保存这张表为result_up

result_up=pd.concat([train_left_up,train_right_up],axis=1)
result_up.head()

 任务三:使用concat方法:将train-left-down和train-right-down横向合并为一张表,并保存这张表为result_down。然后将上边的result_up和result_down纵向合并为result。

result_down=pd.concat([train_left_down,train_right_down],axis=1)
result=pd.concat([result_up,result_down],axis=0)
result.head()
result.shape

任务四:使用DataFrame自带的方法join方法和append:完成任务二和任务三的任务 

 

##### 当一个DataFrame是一个查找表, 其中包含添加到另一个DataFrame中的其他数据时, join()方法通常很有用。这是一种方便的方法, 可以将两个索引不同的DataFrame的列合并为一个DataFrame。
* (1)识别联接键  为了确定适当的连接键, 首先, 我们必须定义在DataFrame之间共享的必填字段。这两个DataFrame都由具有相同名称并且包含相同数据的列组成
* (2)内部联接  内部联接可以定义为最常用的联接。基本上, 其主要任务是基于连接键将两个DataFrame组合在一起并返回一个新的DataFrame。返回的DataFrame 仅 包含在两个原始DataFrame中都具有匹配值的选定行。
* (3)左联接  如果我们想在不丢失任何数据的情况下向DataFrame中添加一些信息, 我们可以简单地通过称为”左外部连接”或”左连接”的另一种类型的连接来做到这一点。   像内部联接一样, 左联接也使用联接键来组合两个DataFrame, 但是与内部联接不同, 它会返回左侧DataFrame的所有行, 即使那些联接键不包含右侧DataFrame中值的行也是如此 

DataFrame.join(other, on=None, how='left', lsuffix='', rsuffix='', sort=False)
other:DataFrame, Series, 或 list of DataFrame索引应与此列中的一列相似。如果传递了Series,则必须设置其name属性,并将其用作结果联接的DataFrame中的列名称。

on:str, list of str, 或 array-like, 可选参数调用方中要加入索引的列或索引级别名称other,否则加入index-on-index。如果给出多个值,则otherDataFrame必须具有MultiIndex。如果调用DataFrame中尚未包含数组,则可以将其作为连接键传递。就像Excel的VLOOKUP操作一样。

how:{‘left’, ‘right’, ‘outer’, ‘inner’}, 默认为 ‘left’如何处理两个对象的操作。

左:使用调用框架的索引(如果指定了列,则为列)

右:使用other的索引。

external:与调用框架的索引(如果指定为on,则为列)的形式联合other的索引,然后对其进行排序。从字典上看。

inner:与调用框架的索引(或列,如果指定为on)形成交集,other的索引,保留调用顺序。

lsuffix:str, 默认为 ‘’在左框架的重叠列中使用的后缀。

rsuffix:str, 默认为 ‘’在右框架的重叠列中使用的后缀。

sort:bool, 默认为 False通过联接关键字按字典顺序对结果DataFrame进行排序。如果为False,则联接键的顺序取决于联接类型(how关键字)。

result_up=train_left_up.join(train_right_up)
result_down=train_left_down.join(train_right_down)
result_up.append(result_down)

  任务五:使用Panads的merge方法和DataFrame的append方法:完成任务二和任务三的任务

result_up=pd.merge(train_left_up,train_right_up,left_index=True,right_index=True)
result_down=pd.merge(train_left_down,train_right_down,left_index=True,right_index=True)
result=result_up.append(result_down)

【思考】对比merge、join以及concat的方法的不同以及相同。思考一下在任务四和任务五的情况下,为什么都要求使用DataFrame的append方法,如何只要求使用merge或者join可不可以完成任务四和任务五呢?
* 因为merge和join都是做列向的合并,append是行向的合并,因此要上下合并都需要append;只用merge和join不能够完成任务四和五 

 

2.5.1 任务一:将我们的数据变为Series类型的数据


* DataFrame是二维数据表,Series是一维数组其中列名作为索引名。 DF转换成Series相当于二维转换成一维
* stack() 函数是将层级最低(默认)的column转化为index
* unstack()默认是将排位最靠后的index转成column(column放到下面) unstack('1') 

* Pandas中的merge、concat、join等详解:https://www.cnblogs.com/dataxon/p/12634897.html

text=pd.read_csv('result.csv')
text_ser=text.stack()
text_ser.to_csv('text_ser.csv')
text_ser2=pd.read_csv('text_ser.csv')
text_ser2.columns=['编号','信息字段','个人信息']
text_ser2.head()

 

 

 

 

标签:重构,up,DataFrame,down,train,DataWhale,Task03,csv,result
来源: https://blog.csdn.net/weixin_49632439/article/details/118060246

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有