參加kaggle資料探勘比賽,就第乙個賽題titanic的資料,學習相關資料預處理以及模型建立,本部落格關注基於pandas進行資料預處理過程。包括資料統計、資料離散化、資料關聯性分析
import pandas as pd
import numpy as np
train_df =pd.read_csv('../datas/train.csv') # train set
test_df = pd.read_csv('../datas/test.csv') # test set
combine = [train_df, test_df]
#檢視前五條資料
print train_df.head(5)
#檢視每列資料型別以及nan情況
print train_df.info()
# 獲得所有object屬性
print train_data.describe(include=['o']).columns
#檢視連續數值屬性基本統計情況
print train_df.describe()
#檢視object屬性資料統計情況
print train_df.describe(include=['o'])
# 統計title單列各個元素對應的個數
print train_df['title'].value_counts()
# 屬性列刪除
train_df = train_df.drop(['name', 'passengerid'], axis=1)
# 直接丟棄缺失資料列的行
print df4.dropna(axis=0,subset=['col1']) # 丟棄nan的行,subset指定檢視哪幾列
print df4.dropna(axis=1) # 丟棄nan的列
# 採用其他值填充
dataset['cabin'] = dataset['cabin'].fillna('u')
dataset['title'] = dataset['title'].fillna(0)
# 採用出現最頻繁的值填充
freq_port = train_df.embarked.dropna().mode()[0]
dataset['embarked'] = dataset['embarked'].fillna(freq_port)
# 採用中位數或者平均數填充
test_df['fare'].fillna(test_df['fare'].dropna().median(), inplace=true)
test_df['fare'].fillna(test_df['fare'].dropna().mean(), inplace=true)
# 創造乙個新列,fareband,將連續屬性fare切分成四份
train_df['fareband'] = pd.qcut(train_df['fare'], 4)
# 檢視切分後的屬性與target屬性survive的關係
train_df[['fareband', 'survived']].groupby(['fareband'], as_index=false).mean().sort_values(by='fareband', ascending=true)
# 建立object屬性對映字典
print train_df[['ageband', 'survived']].groupby(['ageband'], as_index=false).mean().sort_values(by='ageband', ascending=true)
」』
建立df物件
」」』
s1 = pd.series([1,2,3,np.nan,4,5])
s2 = pd.series([np.nan,1,2,3,4,5])
print s1
dates = pd.date_range(「20130101」,periods=6)
print dates
df = pd.dataframe(np.random.rand(6,4),index=dates,columns=list(「abcd」))
# print df
df2 = pd.dataframe()
# print df2.dtypes
df3 = pd.dataframe()
print df3
'''2.檢視df資料
'''print df3.head(2) #檢視頭幾條
print df3.tail(3) #檢視尾幾條
print df.index #檢視索引
print df.info() #檢視非non資料條數
print type(df.values) #返回二元陣列
# print df3.values
print df.describe() #對每列資料進行初步的統計
print df3
print df3.sort_values(by=['col1'],axis=0,ascending=true) #按照哪幾列排序
'''3.選擇資料
'''ser_1 = df3['col1']
print type(ser_1) #pandas.core.series.series
print df3[0:2] #前三行
print df3.loc[df3.index[0]] #通過index來訪問
print df3.loc[df3.index[0],['col2']] #通過行index,和列名來唯一確定乙個位置
print df3.iloc[1] #通過位置來訪問
print df3.iloc[[1,2],1:2] #通過位置來訪問
print "==="
print df3.loc[:,['col1','col2']].as_matrix() # 返回nunpy二元陣列
print type(df3.loc[:,['col1','col2']].as_matrix())
'''4.布林索引,過濾資料
'''print df3[df3.col1 >2]
df4 = df3.copy()
df4['col3']=pd.series(['one','two','two','three','one','two'])
print df4
print df4[df4['col3'].isin(['one','two'])]
df4.loc[:,'col3']="five"
print df4
'''5.缺失值處理,pandas將缺失值用nan代替
'''print pd.isnull(df4)
print df4.dropna(axis=0,subset=['col1']) # 丟棄nan的行,subset指定檢視哪幾列
print df4.dropna(axis=1) # 丟棄nan的列
第5章 使用pandas進行資料預處理 實訓
拉格朗日插值 from scipy.interpolate import lagrange import pandas as pd import numpy as np data pd.read csv data missing data.csv 檢視一下資料 data.info rangeinde...
pandas進行資料輸入資料載入處理
將 型資料讀取為dataframe物件是pandas的重要特性 read csv 從檔案 url或檔案型物件讀取分隔好的資料,逗號是預設分隔符 read table 從檔案 url或檔案型物件讀取分隔好的資料,製表符 t 是預設分隔符 指定分隔符 pd.read table hello ex1.cs...
pandas進行資料分析
最近參加了一次apmcm,題目給出了很多 我們需要對資料進行分析。顯然,作為一名會python的大學生,肯定不會直接在 上進行各種變動,本文就如何使用pandas對excel 進行資料分析做一些介紹。3.1 讀取所有表中的職業 讀取所有表中的職業 pros.xlsx中有所有職業 pros path ...