pandas简易学习教程/练习(2)

来源:互联网 发布:js获取时间毫秒数 编辑:程序博客网 时间:2024/04/29 12:34

pandas是Python处理数据的一个数据分析处理库,这里的代码我都是在anaconda的Jupyter Notebook上运行的,这是个交互式平台可以立马看到结果(很方便),当然也可以在pycharm上运行,如果没有安装运行的环境的可以参考以下博文
http://blog.csdn.net/a_hui_tai_lang/article/details/78689559
废话少说,一切尽在代码之中
代码已经上传到我的GitHub,https://github.com/LoyalWilliams/machinelearning

# coding: utf-8# In[1]:import numpy as npimport pandas as pdtitanic_survival=pd.read_csv("titanic_train.csv")titanic_survival.head()

这里写图片描述

# In[2]:#查看一些基本的信息,比如Age这一列age=titanic_survival["Age"]# print(age.loc[0:10])age_is_null=pd.isnull(age)# print(age_is_null)age_null_true=age[age_is_null]# print(age_null_true)age_null_count=len(age_null_true)print(age_null_count)

这里写图片描述

# In[3]:#如果数据中含有空值,则无法求出平均值等统计指标,结果为nanmean_age=sum(titanic_survival["Age"])/len(titanic_survival["Age"])print(mean_age)

这里写图片描述

# In[4]:#要求出正确的统计指标,必须先把缺少值筛选掉good_ages=titanic_survival["Age"][age_is_null==False]correct_mean_age=sum(good_ages)/len(good_ages)print(correct_mean_age)

这里写图片描述

# In[5]:#padas提供了筛掉空值求均值的方法correct_mean_age=titanic_survival["Age"].mean()print(correct_mean_age)

这里写图片描述

# In[6]:#求每个船舱等级的价格平均值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_classprint(fares_by_class)

这里写图片描述

# In[7]:#利用pivot_table分组聚合fares_by_class=titanic_survival.pivot_table(index="Pclass",values="Fare",aggfunc=np.mean)print(fares_by_class)

这里写图片描述

# In[8]:#aggfunc默认求均值passenger_age=titanic_survival.pivot_table(index="Pclass",values="Age")print(passenger_age)

这里写图片描述

# In[9]:port_stats=titanic_survival.pivot_table(index="Embarked",values=["Fare","Survived"],aggfunc=np.sum)print(port_stats)

这里写图片描述

# In[10]:# axis=1表示对行操作,默认axis=0对列操作;以下是把空值行去掉#specifying axis=1 or(否则) axis='columns' will drop any columns that have null valuesdrop_na_columns=titanic_survival.dropna(axis=1)new_titanic_survival=titanic_survival.dropna(axis=0,subset=["Age","Sex"])print(new_titanic_survival)

这里写图片描述

# In[11]:#通过索引找值,以下数字83是索引值,"Age"是列,也就是通过行列坐标进行取值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)

这里写图片描述

# In[12]:#排序,重新设置索引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("---------------")print(titanic_reindexed.loc[0:10])

这里写图片描述

# In[13]:#自定义函数def hundredth_row(column):    #取出第100行的数据    hundredth_item=column.loc[99]    return hundredth_itemhundredth_row_data=titanic_survival.apply(hundredth_row)print(hundredth_row_data)

这里写图片描述

# In[14]:#求每个列的缺失指标格式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)

这里写图片描述

# In[16]:#通过axis=1这个参数,我们可以使用DataFrame.apply()方法来迭代每行的数据,进行转换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)

这里写图片描述

# In[18]:def is_minor(row):    if row["Age"]<18:        return True    else:        return Falseminors=titanic_survival.apply(is_minor,axis=1)# print(minors)dsffddef 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)

这里写图片描述

# In[19]:#获救的平均值titanic_survival['age_labels']=age_labelsage_group_survival=titanic_survival.pivot_table(index="age_labels",values="Survived")print(age_group_survival)

这里写图片描述

原创粉丝点击