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)

在这里插入图片描述

原文地址:https://www.cnblogs.com/AlexKing007/p/12339500.html