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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a_hui_tai_lang/article/details/78746594

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 np
import pandas as pd
titanic_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]:
#如果数据中含有空值,则无法求出平均值等统计指标,结果为nan
mean_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_class
print(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 values
drop_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_item
hundredth_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 False
minors=titanic_survival.apply(is_minor,axis=1)
# print(minors)dsffd
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)

这里写图片描述

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

这里写图片描述

猜你喜欢

转载自blog.csdn.net/a_hui_tai_lang/article/details/78746594
今日推荐