基於pandas進行資料預處理

2021-07-31 06:19:55 字數 3593 閱讀 7966

參加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 ...