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]

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容