2017-08-29 21:014dataframe
1. df[a][boolean] 前一個(gè)中括號代表 一列色迂, 后一個(gè)代表 一個(gè)判斷
2. df[['a','b']] 代表兩列
2.1?
df[boolean][a]? 前一個(gè)代表?xiàng)l件手销,后一個(gè)代表一列
survived = train[train["Survived"] == 1]["Age"].dropna()
perished = train[train["Survived"] == 0]["Age"].dropna()
3. groupby ,
df['sex']['survived'].groupby('sex').mean( )
以性別分類, 男性的mean, 女性的mean
但是要運(yùn)行 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)
先看第二塊代碼诈悍, 代表創(chuàng)建新一列, 列名叫person侥钳, 對 兩列(年齡列,性別列)應(yīng)用函數(shù)苦酱,AXIS=1 列
再看第一塊代碼给猾, 函數(shù)雙參數(shù), if 第一個(gè)參數(shù)條件滿足, 返回 CHILD
否則 返回 第二個(gè)參數(shù)
5. 空值的補(bǔ)充 某列的某條件下的list賦值隨機(jī)list====條件列賦值隨機(jī)列
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
看最后一行代碼毫捣,第一個(gè)中括號代表列, 第二個(gè)代表判斷饶辙, 判定成功的列表=隨機(jī)生成的列表
6. 列分割
train['cut'] = pd.cut(train['Age'], 20)? ? ? ? ? ? ? ? ? ~~~創(chuàng)建新的一列叫cut, 它把某列分割為20組
train[['cut','Survived']].groupby('cut').mean()? ? ~~~groupby 函數(shù)
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
為什么? 因?yàn)檫@個(gè)要素是派生的 是重復(fù)的
存活率最高的那個(gè) 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]