数据重构
1、数据的合并
(1)concat方法:将数据横向合并在一起
text_left_up = pd.read_csv("data/train-left-up.csv")
text_right_up = pd.read_csv("data/train-right-up.csv")
text_left_up.head()
text_right_up.head()
list_up = [text_left_up,text_right_up]
result_up = pd.concat(list_up,axis=1)
result_up.head()
注:横向合并和纵向合并均可以使用concat(),axis=1,横向合并,axis=0(默认)纵向合并
(2)join方法和append方法
join()将dataframe进行列拼接,默认左拼接
append()将dataframe进行行拼接,默认
resul_up = text_left_up.join(text_right_up) #将left和right拼接在一起,列拼接
result_down = text_left_down.join(text_right_down)
result = result_up.append(result_down)
result.head()
(3)merge方法
DF.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None)
left/right:要拼接在一起的dataframe
how:以怎样的方式进行拼接在一起,有inner、left、right、outer,默认为inner
right_on/left_on:用于左侧或右侧拼接的列名
left_index/right_index:用于左侧或右侧拼接的行的索引号
sort:是否进行排序
merge只能用于两张表的拼接
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)
result.head()
2、数据聚合与运算
(1)GroupBy()
可以进行数据分组以及分组后的数据运算
df[结果属性].groupby([df[分类属性1],df[属性2]…).mean()(函数名称)
#计算泰坦尼克号男性与女性的平均票价
df = text['Fare'].groupby(text['Sex'])
means = df.mean()
means
#计算男女的存活人数
survived_sex = text['Survived'].groupby(text['Sex']).sum()
survived_sex.head()
#统计在不同等级的票中的不同年龄的船票花费的平均 值
text.groupby(['Pclass','Age'])['Fare'].mean().head()
#得出不同年龄的总的存活人数,然后找出存活人数的 最高的年龄,最后计算存活人数最高的存活率(存活人数/总人数)
#不同年龄的存活人数
survived_age = text['Survived'].groupby(text['Age']).sum()
survived_age.head()
#找出最大值的年龄段
survived_age[survived_age.values==survived_age.max()]
_sum = text['Survived'].sum()
print("sum of person:"+str(_sum))
precetn =survived_age.max()/_sum
print("最大存活率:"+str(precetn))