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)