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)
    

    在这里插入图片描述

  • 相关阅读:
    关于IDEA2019.3在书写pom依赖坐标无法自动提示补全的问题
    vue props的接收格式
    axios请求添加请求头 标准写法
    VUE后台管理系统建立
    arguments
    表单验证规则
    <<>> html内显示
    vue_UI组件库vant之加载转圈
    vue_axios请求拦截器
    vue_js数字有效长度16位_超出的解决办法
  • 原文地址:https://www.cnblogs.com/AlexKing007/p/12339501.html
Copyright © 2011-2022 走看看