练习:泰坦尼克号逃生率
kaggle上一道经典题目,拿来做一点小练习。有一个csv文件(点击下载)密码:yqto。里面包含船上人员的以下信息:编号、标签值、舱位等级、名字、性别、年龄、个人兄弟姐妹的数量、个人老人孩子的数量、船票编号、船票价格、所在位置(缺失值比较多)、登船地点。
import pandasas pd
import numpyas np
# 读取一个csv文件
titanic_train = pd.read_csv('titanic_train.csv')
# 求平均年龄
ages = titanic_train['Age']
age_is_null = pd.isnull(ages)
# 算出有177个没有年龄信息的人,如果数据中包含缺失值,用这列数据进行换算,也只返回NaN值
age_null_count =len(ages[age_is_null])
print('总共有{}个人没有年龄信息'.format(age_null_count))
# 因此,需要为了让结果更加精确,可以对所有NaN进行处理填充:这边使用平均值进行填充
# 只去有效数据进行平均值计算
correct_ages = ages[age_is_null ==False]
ages_mean = ages.mean()# 等价于:`sum(correct_ages) / len(correct_ages)
print('年龄平均值:{}'.format(ages_mean))
# 求出三个舱位的平均价格
pclass_level = [1, 2, 3]
pclass = titanic_train['Pclass']
for plin pclass_level:
pl_rows = titanic_train[pl == pclass]
fare = pl_rows['Fare']
fare_mean = fare.mean()
print('{}等舱位的平均价格是{}'.format(pl, fare_mean))
# 方法2 数据透视表: 对于每个不同的Pclass而言,fare的平均值 aggfunc不写默认是求平均值
fare_mean2 = titanic_train.pivot_table(index='Pclass', values='Fare', aggfunc=np.mean)
# 对于每个相同的性别而言,平均存活人数
survieds_mean = titanic_train.pivot_table(index='Sex', values='Survived', aggfunc=np.mean)
print('对于每个不同的性别而言,平均存活率:{}'.format(survieds_mean))
# 对于相同的登场地点,船票总价和获救总人数
embarked_s_f_sum = titanic_train.pivot_table(index='Embarked', values=['Survived', 'Fare'], aggfunc=np.sum)
print(embarked_s_f_sum)
# 使用loc访问具体的一格数据
print(titanic_train.loc[3, 'Name'])
print("**************")
# 去除有缺失值的数据
new_titanic_train = titanic_train.dropna(axis=0, subset=['Survived', 'Fare'])
print(new_titanic_train[:10])
print("**************")
# set_index方法,可以设置单索引和复合索引。
# reset_index可以还原索引,从新变为默认的整型索引
new_sort_tt = new_titanic_train.reset_index(drop=True)
print(new_sort_tt[:10])
print("**************")
# 使用apply自定义函数
def get100Data(column):
return column.loc[99]
print(titanic_train.apply(get100Data))
series
Series 是一个类数组的数据结构,同时带有标签(lable)或者说索引(index)。dataframe可以拆解为多个series。使用series.values就能输出一个ndarray,因此说pandas是封装在ndArray之上。
拆解DataFrame的某一行或者某列,就是series格式
print(type(new_titanic_train['Survived']))
输出:<class 'pandas.core.series.Series'>
values = survived.values print(type(values))
输出:'numpy.ndarray'
#创建一个series,导入引用, index=key 指定自定义索引列表
from pandas import Series
seriese= Series(ticket, index=name)
网友评论