Le prétraitement des données que j'utilise souvent est résumé dans le format de modèle ci-dessous. La description est un modèle, sans grande explication.
Lecture au format csv
read_data.py
trainval_filename = './train.csv'
test_filename = './test.csv'
df_trainval = pd.read_csv(trainval_filename)
df_test = pd.read_csv(test_filename)
Ceci est pratique lorsque vous souhaitez prétraiter les données d'entraînement et les données de test en même temps. Après cela, utilisez-le lorsque vous souhaitez combiner des données normalement.
df_all = pd.concat([df_trainval,df_test],axis=0)
#axis=0 :Connectez-vous vers le bas
#axis=1 :Connectez-vous à droite
Convertir les informations de date et d'heure en type d'horodatage, convertir en année / mois / date / jour
'''
#Avant la conversion
Date
0 1999-07-17
1 2008-02-14
2 2013-03-09
3 2012-02-02
4 2009-05-09
'''
df_all['Date'] = pd.to_datetime(df_all["Date"])
'''
#Après le traitement
0 1999-07-17
1 2008-02-14
2 2013-03-09
3 2012-02-02
4 2009-05-09
'''
La même chose peut être faite en utilisant map.
df_all['Year'] = df_all['Date'].apply(lambda x:x.year)
df_all['Month'] = df_all['Date'].apply(lambda x:x.month)
df_all['Day'] = df_all['Date'].apply(lambda x:x.day)
df_all['Weekday_name'] = df_all['Date'].apply(lambda x:x.weekday_name)
'''
#Après la conversion
Year Month Day Weekday_name
0 1999 7 17 Saturday
1 2008 2 14 Thursday
2 2013 3 9 Saturday
3 2012 2 2 Thursday
4 2009 5 9 Saturday
'''
Convertissez les étiquettes en informations numériques. Ci-dessous, les informations sur la ville sont converties en informations numériques.
laberlencoder.py
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
df_all['City'] = le.fit_transform(df_all['City'])
Utilisez la fonction de carte pour convertir les étiquettes en valeurs discrètes.
map.py
'''
City Group Type
0 Big Cities IL
1 Big Cities FC
2 Other IL
3 Other IL
4 Other IL #Avant la conversion
'''
df_all['City Group'] = df_all['City Group'].map({'Other':0,'Big Cities':1}) #There are only 'Other' or 'Big city'
df_all["Type"] = df_all["Type"].map({"FC":0, "IL":1, "DT":2, "MB":3}) #There are only 'FC' or 'IL' or 'DT' or 'MB'
'''
City Group Type
0 1 1
1 1 0
2 0 1
3 0 1
4 0 1 Après conversion
'''
Vous pouvez obtenir le nombre de colonnes, la longueur de la colonne, le type de données, etc. Très pratique
df.info()
'''<class 'pandas.core.frame.DataFrame'>
RangeIndex: 891 entries, 0 to 890
Data columns (total 12 columns):
PassengerId 891 non-null int64
Survived 891 non-null int64
Pclass 891 non-null int64
Name 891 non-null object
Sex 891 non-null object
Age 714 non-null float64
SibSp 891 non-null int64
Parch 891 non-null int64
Ticket 891 non-null object
Fare 891 non-null float64
Cabin 204 non-null object
Embarked 889 non-null object
dtypes: float64(2), int64(5), object(5)
memory usage: 83.6+ KB
None
'''
describe() Diverses informations telles que le nombre de données dans chaque colonne, la moyenne, la variance et le quadrant peuvent être obtenues.
df.describe()
df.isnull().sum()
'''
PassengerId 0
Survived 0
Pclass 0
Name 0
Sex 0
Age 177
SibSp 0
Parch 0
Ticket 0
Fare 0
Cabin 687
Embarked 2
Family_size 0
'''
Il existe différentes manières de le remplir. Personnellement, je l'utilise uniquement autour des valeurs moyennes et médianes. S'il existe un autre bon moyen, faites-le moi savoir.
df['Age'].fillna(dataset['Age'].median()) #Version médiane
df['Age'].fillna(dataset['Age'].median()) #Version moyenne
df = df.dropna(how='all',axis=0) #Les colonnes où toutes les valeurs sont manquantes sont supprimées,axis=Réglez sur 1 pour les lignes.
df = df2.dropna(how='any',axis=0) #'any'Si défini sur, les lignes contenant ne serait-ce qu'un NaN seront supprimées. (Défaut)
Le coefficient de corrélation entre toutes les variables peut être calculé simplement en utilisant corr (). Très pratique.
print(df.corr())
'''
PassengerId Pclass Age SibSp Parch Fare
PassengerId 1.000000 -0.026751 -0.034102 0.003818 0.043080 0.008211
Pclass -0.026751 1.000000 -0.492143 0.001087 0.018721 -0.577147
Age -0.034102 -0.492143 1.000000 -0.091587 -0.061249 0.337932
SibSp 0.003818 0.001087 -0.091587 1.000000 0.306895 0.171539
Parch 0.043080 0.018721 -0.061249 0.306895 1.000000 0.230046
Fare 0.008211 -0.577147 0.337932 0.171539 0.230046 1.000000
Utilisez simplement hist () et il dessinera un histogramme. Ceci est également très pratique.
df.hist()
scatter_matrix () dessine un diagramme de dispersion. Il crée un diagramme de dispersion entre toutes les variables. Le diagramme diagonal représente un histogramme de cette variable.
pd.plotting.scatter_matrix(df)
La fonction groupby peut être appliquée aux variables d'étiquette. Le `` sexe '' n'a que les femmes et les hommes, il peut donc être divisé en deux Si vous ajoutez mean () après cela, la moyenne sera calculée pour chaque groupe.
print(df[['Sex', 'Survival']].groupby('Sex', as_index=False).mean())
'''
Sex Survived
0 female 0.742038
1 male 0.188908
'''
J'édite maintenant.
Recommended Posts