zoukankan      html  css  js  c++  java
  • 01、python数据分析与机器学习实战——python数据分析处理库Pandas

    pandas介绍

    pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
    Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。
    pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
    它是使Python成为强大而高效的数据分析环境的重要因素之一。

    pandas基础

    import pandas
    
    food_info=pandas.read_csv("food_info.csv")
    print(type(food_info))
    print(food_info.dtypes)
    
    print(food_info.head(3))
    print(food_info.tail(4))
    print(food_info.columns)
    print(food_info.shape)
    

    打开一个文件:

    food_info=pandas.read_csv("food_info.csv")
    

    文件截图:
    在这里插入图片描述
    打印它的类型:

    print(type(food_info))
    

    在这里插入图片描述
    打印每一列的类型:

    print(food_info.dtypes)
    

    在这里插入图片描述
    打印头三行和尾四行:

    print(food_info.head(3))
    print(food_info.tail(4))
    

    在这里插入图片描述
    打印所有的列标题和文件规模:

    print(food_info.columns)
    print(food_info.shape)
    

    在这里插入图片描述
    (8618表示样本,即行,36表示指标,即列)

    打印第一行:

    print(food_info.loc[0])
    

    在这里插入图片描述
    切片操作:

    print(food_info.loc[3:6])
    

    在这里插入图片描述
    取出某一列值要根据列名:

    ndb_col=food_info["NDB_No"]
    print(ndb_col)
    

    在这里插入图片描述
    在这里插入图片描述
    取出某几列的值,同样也是根据列名:

    columns=["Shrt_Desc","Water_(g)"]
    zinc_copper=food_info[columns]
    print(zinc_copper)
    

    在这里插入图片描述
    在这里插入图片描述
    取出指定列的内容(以g为单位的列):

    col_names=food_info.columns.tolist()
    print(col_names)
    gram_columns=[]
    for c in col_names:
        if c.endswith("(g)"):
            gram_columns.append(c)
    gram_df=food_info[gram_columns]
    print(gram_df.head(3))
    

    先用一个列表存储以g为单位的列名,然后打印前三行数据
    在这里插入图片描述
    找到相应的列并对列中所有的数据进行四则运算:

    print(food_info["Iron_(mg)"])
    div_1000=food_info["Iron_(mg)"]/1000
    print(div_1000)
    

    在这里插入图片描述
    将某两列中的数据进行乘法运算以及创建一个新的列:

    water_energy=food_info["Water_(g)"]*food_info["Energ_Kcal"]
    iron_grams=food_info["Iron_(mg)"]/1000
    print(food_info.shape)
    food_info["Iron_(g)"]=iron_grams
    print(food_info.shape)
    

    在这里插入图片描述
    将数据进行升序和降序排列:

    food_info.sort_values("Sodium_(mg)",inplace=True)
    print(food_info["Sodium_(mg)"])
    food_info.sort_values("Sodium_(mg)",inplace=True,ascending=False)
    print(food_info["Sodium_(mg)"])
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    某一列中的 NaN (not a number)值:
    打印前十行:

    age=titanic_survival["Age"]
    print(age.loc[0:10])
    

    在这里插入图片描述
    判断是否为NaN值:

    age_is_null=pd.isnull(age)
    print(age_is_null)
    

    在这里插入图片描述
    打印所有值为NaN的行号:

    age_null_true=age[age_is_null]
    print(age_null_true)
    

    在这里插入图片描述
    统计为NaN的行数:

    age_null_count=len(age_null_true)
    print(age_null_count)
    

    在这里插入图片描述
    如果直接计算平均年龄:

    mean_age=sum(titanic_survival["Age"])/len(titanic_survival["Age"])
    print(mean_age)
    

    在这里插入图片描述
    去除NaN值之后计算平均年龄:

    good_ages=titanic_survival["Age"][age_is_null==False]
    print(good_ages)
    correct_mean_age=sum(good_ages)/len(good_ages)
    print(correct_mean_age)
    

    在这里插入图片描述
    其实在pandas中有内置的去除NaN值后计算的方法:

    correct_mean_age=titanic_survival["Age"].mean()
    print(correct_mean_age)
    

    两次结果一致
    在这里插入图片描述
    计算不同等级船舱的票价:

    passenger_classes=[1,2,3]
    fares_by_class={}
    for this_class in passenger_classes:
        pclass_rows=titanic_survival[titanic_survival["Pclass"]==this_class]
        pclass_fares=pclass_rows["Fare"]
        fare_for_class=pclass_fares.mean()
        fares_by_class[this_class]=fare_for_class
    print(fares_by_class)
    

    在这里插入图片描述
    计算相关关系(数据透视表):

    passenger_survial=titanic_survival.pivot_table(index="Pclass",values="Survived",aggfunc=np.mean)
    print(passenger_survial)
    
    passenger_age=titanic_survival.pivot_table(index="Pclass",values="Age")
    print(passenger_age)
    
    port_stats=titanic_survival.pivot_table(index="Embarked",values=["Fare","Survived"],aggfunc=np.sum)
    print(port_stats)
    

    在这里插入图片描述
    去掉缺失值:

    drop_na_columns=titanic_survival.dropna(axis=1)
    new_titanic_survival=titanic_survival.dropna(axis=0,subset=["Age","Sex"])
    print(new_titanic_survival)
    

    在这里插入图片描述
    根据索引找到相应的值:

    row_index_83_age=titanic_survival.loc[83,"Age"]
    row_index_1000_pclass=titanic_survival.loc[766,"Pclass"]
    print(row_index_83_age)
    print(row_index_1000_pclass)
    

    在这里插入图片描述
    排序:

    new_titanic_survival=titanic_survival.sort_values("Age",ascending=False)
    print(new_titanic_survival[0:10])
    titanic_reindexed=new_titanic_survival.reset_index(drop=True)
    print(titanic_survival.loc[0:10])
    

    在这里插入图片描述
    在这里插入图片描述
    定义一个函数,找到第100个值:

    def hundredth_row(columns):
        hundredth_item=columns.loc[99]
        return hundredth_item
    
    hundredth_row=titanic_survival.apply(hundredth_row)
    print(hundredth_row)
    

    在这里插入图片描述
    定义一个函数,统计缺失值:

    def not_null_count(column):
        column_null=pd.isnull(column)
        null=column[column_null]
        return len(null)
    
    column_null_count=titanic_survival.apply(not_null_count)
    print(column_null_count)
    

    在这里插入图片描述
    定义一个函数,对数据进行整体转换:

    def which_class(row):
        pclass=row['Pclass']
        if pd.isnull(pclass):
            return "Unknown"
        elif pclass==1:
            return "First Class"
        elif pclass==2:
            return "Second Class"
        elif pclass==3:
            return "Third Class"
    
    classes=titanic_survival.apply(which_class,axis=1)
    print(classes)
    

    在这里插入图片描述
    在这里插入图片描述
    定义一个函数,判断是否成年:

    def is_minor(row):
        if row["Age"]<18:
            return True
        else:
            return False
    
    minors=titanic_survival.apply(is_minor,axis=1)
    print(minors)
    
    

    在这里插入图片描述
    定义一个函数,根据年龄返回相应值:

    def generate_age_label(row):
        age=row["Age"]
        if pd.isnull(age):
            return "unknown"
        elif age<18:
            return "minor"
        else:
            return "adult"
    
    age_labels=titanic_survival.apply(generate_age_label,axis=1)
    print(age_labels)
    

    在这里插入图片描述

  • 相关阅读:
    URAL 1998 The old Padawan 二分
    URAL 1997 Those are not the droids you're looking for 二分图最大匹配
    URAL 1995 Illegal spices 贪心构造
    URAL 1993 This cheeseburger you don't need 模拟题
    URAL 1992 CVS
    URAL 1991 The battle near the swamp 水题
    Codeforces Beta Round #92 (Div. 1 Only) A. Prime Permutation 暴力
    Codeforces Beta Round #7 D. Palindrome Degree hash
    Codeforces Beta Round #7 C. Line Exgcd
    Codeforces Beta Round #7 B. Memory Manager 模拟题
  • 原文地址:https://www.cnblogs.com/AlexKing007/p/12339502.html
Copyright © 2011-2022 走看看