2017-08-31

2017-08-29 21:014dataframe

1. df[a][boolean] 前一个中括号代表 一列, 后一个代表 一个判断

2. df[['a','b']] 代表两列

2.1 

df[boolean][a]  前一个代表条件,后一个代表一列

survived = train[train["Survived"] == 1]["Age"].dropna()

perished = train[train["Survived"] == 0]["Age"].dropna()

3. groupby ,

df['sex']['survived'].groupby('sex').mean( )

以性别分类, 男性的mean, 女性的mean

但是要运行 mean命令 必须为int 或者float

Try  use  df[Sex] .astype(int)

4.某一列的类别 再加一类(基于另一列)===本列类+外列类

def fun2(passengers):

a,b=passengers

return 'child' if a<14 else b

train['person']=train[['Age','Sex']].apply(fun2, axis=1)

先看第二块代码, 代表创建新一列, 列名叫person, 对 两列(年龄列,性别列)应用函数,AXIS=1 列

再看第一块代码, 函数双参数, if 第一个参数条件满足, 返回 CHILD

否则 返回 第二个参数

5. 空值的补充 某列的某条件下的list赋值随机list====条件列赋值随机列

age_avg = dataset['Age'].mean()

    age_std           = dataset['Age'].std()
    age_null_count = dataset['Age'].isnull().sum()
    
    age_null_random_list = np.random.randint(age_avg - age_std, age_avg + age_std, size=age_null_count)
    dataset['Age'][np.isnan(dataset['Age'])] = age_null_random_list
        或者 dataset['Age'][dataset['Age'].isnull()]=age_null_random_list

看最后一行代码,第一个中括号代表列, 第二个代表判断, 判定成功的列表=随机生成的列表

6. 列分割
train['cut'] = pd.cut(train['Age'], 20)                  ~~~创建新的一列叫cut, 它把某列分割为20组
train[['cut','Survived']].groupby('cut').mean()     ~~~groupby 函数
sns.factorplot('cut','Survived',data=train)         ~~~画图
 
 

7.  df index convert to colume

data3=train[['Neighborhood','SalePrice']].groupby('Neighborhood').mean

data4=data3.reset_index()

sns.barplot('Neighborhood','SalePrice',data=data4)

8.df [ pd.not_null(  )  ]

select all not_null samples base on one colume

train=train[pd.notnull(train['shot_made_flag'])]


8.

for feature in "Age","Fare":

df[feature].fillna  (train[feature].mean(),inplace=True)

9. 特征选择

例如泰坦尼克中 我们不能选Embarked

为什么  因为这个要素是派生的 是重复的

存活率最高的那个 embark 是基于 此港口 女性多  买头等舱的多


10. add the random thing 

average_age_titanic  = titanic_df["Age"].mean()

std_age_titanic      = titanic_df["Age"].std()

count_nan_age_titanic = titanic_df["Age"].isnull().sum()

rand_1 = np.random.randint(average_age_titanic - std_age_titanic, average_age_titanic + std_age_titanic, size = count_nan_age_titanic)

titanic_df["Age"][np.isnan(titanic_df["Age"])] = rand_1

titanic_df['Age'] = titanic_df['Age'].astype(int)

11.test_df["Fare"].fillna(test_df["Fare"].median(), inplace=True)

12.27th sep try

In [13]

in [30]

in[68]

你可能感兴趣的:(2017-08-31)