美文网首页我爱编程
pandas学习笔记(2)

pandas学习笔记(2)

作者: am_skyf | 来源:发表于2018-05-29 00:05 被阅读0次

    练习:泰坦尼克号逃生率

    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)

    相关文章

      网友评论

        本文标题:pandas学习笔记(2)

        本文链接:https://www.haomeiwen.com/subject/eieijftx.html