在数据清洗之后,我们可以将不同表中的数据进行合并,再进行分析。
那么,数据表如何进行合并?
首先,我们可以利用concat语句:
import numpy as np
import pandas as pd
df=pd.read_csv('train-left-up.csv')
df.head()
df_left_up=pd.read_csv('train-left-up.csv')
df_left_down=pd.read_csv('train-left-down.csv')
df_right_up=pd.read_csv('train-right-up.csv')
df_right_down=pd.read_csv('train-right-down.csv')
#现在已经将所需要合并的所有表导入,接下来可以 查看&合并
df_left_up.head() #查看
list_up=[df_left_up,df_right_up]
result_up=pd.concat(list_up,axis=1) #使用concat合并
result_up.head() #查看合并
#下面合并down的部分
list_down=[df_left_down,df_right_down]
result_down=pd.concat(list_down,axis=1)
#最后把上下合并,连成一张表
result=pd.concat([result_up,result_down])
result.to_csv('result.csv')
result_up.to_csv('result.csv') #保存
这里,合并表还有另一种方法,即用join&append合并
result_up=df_left_up.join(df_right_up) #合并上
result_down=df_left_down.join(df_right_down) #合并下
result=result_up.append(result_down) #合并上下 append:增补
result.head() #查看
有了完整的表后,我们可以对数据进行运算:
df=pd.read_csv('result.csv') #读取表
df.head()
means=df['Fare'].groupby(df['Sex']).mean() #按性别分组求平均票价
means.head()
survived_sex=df['Survived'].groupby(df['Sex']).sum() #按性别分组求存活人数
survived_sex.head()
survived_pclass=df['Survived'].groupby(df['Pclass']).sum() #按等级分组求存活人数
survived_pclass.head()
#返回查看表中survived是用0,1表示的,故可以用sum求和
fare_mean=df['Fare'].groupby(df['Pclass']).mean() #按不同等级分组求花费的平均值
fare_mean.head()
下面看多条件分组
fare_mean=df['Fare'].groupby([df['Pclass'],df['Age']]).mean()
#按不同等级、不同年龄分组求花费的平均值
fare_mean.head()
result=pd.merge(means,survived_sex,on='Sex') #合并数据
result.head()
result.to_csv('sex_fare-survived.csv') #保存结果
之后,可以进行稍微复杂的运算,即求最大值,并由最大值所在样本求占总样本的百分比:
survived_age=df['Survived'].groupby(df['Age']).sum() #按年龄分组求存活人数
survived_age.head()
survived_age[survived_age.values==survived_age.max()] #找到年龄最大的组
survived_age.head()
_sum=df['Survived'].sum() #求比例,先求总样本量
print('总的存活人数:'+str(_sum)) #利用print('描述性文字:'+str( ))使数据可视化
precetn=survived_age.max()/_sum #比例为年龄最大的分组样本数和总样本之比
print('最大存货率:'+str(precetn))