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")

文件截图:

01、python数据分析与机器学习实战——python数据分析处理库-Pandas_缺失值

打印它的类型:

print(type(food_info))

01、python数据分析与机器学习实战——python数据分析处理库-Pandas_缺失值_02

打印每一列的类型:

print(food_info.dtypes)

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

打印头三行和尾四行:

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

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

打印所有的列标题和文件规模:

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

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

(8618表示样本,即行,36表示指标,即列)

打印第一行:

print(food_info.loc[0])

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

切片操作:

print(food_info.loc[3:6])

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

取出某一列值要根据列名:

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

01、python数据分析与机器学习实战——python数据分析处理库-Pandas_缺失值_08

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

取出某几列的值,同样也是根据列名:

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

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

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

取出指定列的内容(以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为单位的列名,然后打印前三行数据

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

找到相应的列并对列中所有的数据进行四则运算:

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

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

将某两列中的数据进行乘法运算以及创建一个新的列:

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)

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

将数据进行升序和降序排列:

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)"])

01、python数据分析与机器学习实战——python数据分析处理库-Pandas_缺失值_15

01、python数据分析与机器学习实战——python数据分析处理库-Pandas_缺失值_16

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

01、python数据分析与机器学习实战——python数据分析处理库-Pandas_缺失值_18

某一列中的 NaN (not a number)值:

打印前十行:

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

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

判断是否为NaN值:

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

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

打印所有值为NaN的行号:

age_null_true=age[age_is_null]
print(age_null_true)

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

统计为NaN的行数:

age_null_count=len(age_null_true)
print(age_null_count)

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

如果直接计算平均年龄:

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

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

去除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)

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

其实在pandas中有内置的去除NaN值后计算的方法:

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

两次结果一致

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

计算不同等级船舱的票价:

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)

01、python数据分析与机器学习实战——python数据分析处理库-Pandas_缺失值_26

计算相关关系(数据透视表):

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)

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

去掉缺失值:

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

01、python数据分析与机器学习实战——python数据分析处理库-Pandas_缺失值_28

根据索引找到相应的值:

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)

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

排序:

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])

01、python数据分析与机器学习实战——python数据分析处理库-Pandas_缺失值_30

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

定义一个函数,找到第100个值:

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

hundredth_row=titanic_survival.apply(hundredth_row)
print(hundredth_row)

01、python数据分析与机器学习实战——python数据分析处理库-Pandas_缺失值_32

定义一个函数,统计缺失值:

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)

01、python数据分析与机器学习实战——python数据分析处理库-Pandas_缺失值_33

定义一个函数,对数据进行整体换:

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)

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

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

定义一个函数,判断是否成年:

def is_minor(row):
if row["Age"]<18:
return True
else:
return False

minors=titanic_survival.apply(is_minor,axis=1)
print(minors)

01、python数据分析与机器学习实战——python数据分析处理库-Pandas_缺失值_36

定义一个函数,根据年龄返回相应值:

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)

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