您当前的位置: 首页 >  Python

01、python数据分析与机器学习实战——python数据分析处理库-Pandas

发布时间:2019-02-09 19:14:39 ,浏览量:0

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) 

在这里插入图片描述

关注
打赏
1688896170
查看更多评论

暂无认证

  • 0浏览

    0关注

    109966博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0566s