1.数据的合并
1.1 导入基本库
import numpy as np
import pandas as pd
1.2载入数据
#将data文件夹里面的所有数据都载入,与之前的原始数据相比,观察他们的之间的关系
text_left_up = pd.read_csv("train-left-up.csv")
text_left_down = pd.read_csv("train-left-down.csv")
text_right_up = pd.read_csv("train-right-up.csv")
text_right_down = pd.read_csv("train-right-down.csv")
text = pd.read_csv('train.csv')
#四个数据就是整体的数据被按照左上、左下、右上、右下分成四块。
1.3将数据合并
# 法一:使用concat方法:将数据train-left-up.csv和train-right-up.csv横向合并为一张表,并 # 保存这张表为result_up使用concat方法:将train-left-down和train-right-down横向合并为一张 # 表,并保存这张表为result_down。然后将上边的result_up和result_down纵向合并为result。
list_up = [text_left_up,text_right_up]
result_up = pd.concat(list_up,axis=1)
list_down=[text_left_down,text_right_down]
result_down = pd.concat(list_down,axis=1)
result = pd.concat([result_up,result_down])
#法二: 使用DataFrame自带的方法join方法和append
resul_up = text_left_up.join(text_right_up)
result_down = text_left_down.join(text_right_down)
result = result_up.append(result_down)
#法三: 使用Panads的merge方法和DataFrame的append方法
result_up = pd.merge(text_left_up,text_right_up,left_index=True,right_index=True)
result_down = pd.merge(text_left_down,text_right_down,left_index=True,right_index=True)
result = resul_up.append(result_down)
【思考】1.对比merge、join以及concat的方法的不同以及相同。 2.思考一下在任务四和任务五的情况下,为什么都要求使用DataFrame的append方法, 3.如何只要求使用merge或者join可不可以完成任务四和任务五呢?
参数 | 说明 |
left | 拼接的左侧DataFrame对象 |
right | 拼接的右侧DataFrame对象 |
on | 要加入的列或索引级别名称。 必须在左侧和右侧DataFrame对象中找到。 如果未传递且left_index和right_index为False,则DataFrame中的列的交集将被推断为连接键。 |
left_on | 左侧DataFrame中的列(索引级别)用作键。 (列名,索引级名称,长度等于DataFrame长度的数组。) |
right_on | 同上 |
left_index | left_index=True,则使用行标签作为其连接键。 对于具有MultiIndex(分层)的DataFrame,级别数必须与右侧DataFrame中的连接键数相匹配。 |
right_index | 同上 |
how | (left, right, outer, inner). 默认inner。 inner是取交集,outer取并集。 |
sort |
:按字典顺序通过连接键对结果DataFrame进行排序。 默认为True,设置为False将在很多情况下显着提高性能 |
copy | 始终从传递的DataFrame对象复制数据(默认为True) |
参数 | 说明 |
how |
用来指定表合并后保留数据的规则(同merge) |
on | 要加入的列或索引级别名称。 |
suffix |
如果和表合并的过程中遇到有一列两个表都同名,但是值不同,合并的时候又都想保留下来,就可以用suffixes给每个表的重复列名增加后缀 |
objs |
series,dataframe或者是panel构成的序列lsit |
axis | 需要合并链接的轴,0是lie,1是hang,默认axis=0 |
join | 连接的方式 inner,或者outer |
merge | 横向拼接,数据库样式的链接合并,可以指定链接的键 |
join | 横向拼接 |
conbat | 横纵都可以 |
2.因为使用append才可以进行纵向的拼接(可追加行)。
3.只有merge,join不行,因为两者都是横向拼接。
2.换种角度看数据
2.1 将数据变为Series类型数据
#这个stack函数是干什么的?
#将数据从表格结构变成花括号结构,即将其行索引变成列索引
unit_result=text.stack().head(20)
3.数据的聚合与运算
3.1 groupby() 用法
#根据DataFrame本身的某一列或多列内容进行分组聚合
survived_sex = text['Survived'].groupby(text['Sex']).sum()
df = text['Fare'].groupby(text['Sex'])
survived_pclass = text['Survived'].groupby(text['Pclass'])
3.2 agg()函数用法。
text.groupby('Sex').agg({'Fare': 'mean', 'Pclass': 'count'}).rename(columns=
{'Fare': 'mean_fare', 'Pclass': 'count_pclass'})