[PYTHON] Résolution d'exercices dans le cours de formation GCI Data Scientist Chapitre 6

Cours de formation GCI Data Scientist

"GCI Data Scientist Training Course" est proposé par l'Université de Tokyo (laboratoire Matsuo) "* Données pratiques Le contenu de la partie exercice est publié au format Jupyter NoteBook (CC-BY-NC-ND) dans le cours de formation scientifique et le cours d'apprentissage en profondeur </ u> * ". Le chapitre 6 est "** Traitement des données à l'aide de Pandas **", où vous apprendrez à utiliser une bibliothèque de manipulation de données puissante et à haute vitesse pour l'analyse des données. Au lieu du bouton "J'aime" pour le matériel pédagogique précieux et merveilleux que vous pouvez apprendre en japonais, je publierai les réponses que vous avez résolues. Veuillez signaler toute erreur.

6 Traitement des données à l'aide de Pandas

6.1 Pandas

6.1.1 Index hiérarchique

** <Pratique 1> ** Pour les données suivantes, extrayons uniquement la colonne Kyoto.

hier_data_frame1 = DataFrame(np.arange(12).reshape((3,4))
                           ,index = [['c','d','d'],[1,2,1]]
                           ,columns = [['Kyoto','Nagoya','Hokkaido','Kyoto']
                                      ,['Yellow','Yellow','Red','Blue']]
                           )

hier_data_frame1.index.names =['key1','key2']
hier_data_frame1.columns.names =['city','color']
hier_data_frame1

611-1-1.png

hier_data_frame1["Kyoto"]

611-1-2.png

** <Pratique 2> ** Pour les données de l'exercice 1, rassemblez la ville et calculez la valeur moyenne entre les colonnes.

hier_data_frame1.mean(level = "city", axis = 1)

611-2.png

** <Exercice pratique 3> ** Calculons la valeur totale des lignes pour chaque clé2 pour les données de l'exercice 1.

hier_data_frame1.sum(level = "key2")

611-3.png

6.1.2 Fusion de données

** <Pratique 1> ** Faisons une jointure interne aux deux tables de données suivantes.

pd.merge(attri_data_frame4, attri_data_frame5, how = "inner")

612-1.png

** <Pratique 2> ** Rejoignons extérieurement la table d'attri_data_frame5 basée sur attri_data_frame4.

pd.merge(attri_data_frame4, attri_data_frame5, how = "outer")

612-2.png

** <Exercice pratique 3> ** Combinons verticalement les données suivantes pour attri_data_frame4.

pd.concat([attri_data_frame4, attri_data_frame6])

612-3.png

6.1.3 Manipulation et conversion des données

** <Pratique 1> ** Utilisez les données de "student-mat.csv" utilisées dans le chapitre précédent. Ajoutons une colonne qui double l'âge.

student_data_math["2age"] = 2 * student_data_math["age"]
student_data_math[["age", "2age"]].head()

613-1.png

** <Pratique 2> ** Avec les mêmes données que ci-dessus, divisons la colonne «absences» dans les trois bacs suivants et comptons le nombre de chacun. De plus, dans le réglage de l'option de coupe, le côté droit est la section fermée par défaut, mais cette fois, ajoutez right = False pour 0 à saisir.

# pd.cut(student_data_math.absences, absences_bins, right=False)
pd.value_counts(pd.cut(student_data_math.absences, absences_bins, right=False))
> [5, 100)    151
> [1, 5)      129
> [0, 1)      115
> Name: absences, dtype: int64

** <Exercice pratique 3> ** Avec les mêmes données que ci-dessus, divisons la colonne "absences" en trois bacs à l'aide de qcut.

# pd.qcut(student_data_math.absences, 3)
pd.value_counts(pd.qcut(student_data_math.absences, 3))
> (-0.001, 2.0]    183
> (6.0, 75.0]      115
> (2.0, 6.0]        97
> Name: absences, dtype: int64

6.1.4 Agrégation de données et opérations de groupe

** <Pratique 1> ** Utilisons "student-mat.csv" que nous avons utilisé précédemment et utilisons "student-mat.csv" pour agréger les pandas. Tout d'abord, trouvons le score moyen de G1 avec l'école comme axe.

student_data_math = pd.read_csv("student-mat.csv",sep=";")
student_data_math.groupby("school")["G1"].mean()
> school
> GP    10.939828
> MS    10.673913
> Name: G1, dtype: float64

** <Pratique 2> ** Ensuite, trouvons le score moyen de G1, G2 et G3 en nous concentrant sur l'école et le sexe.

student_data_math.groupby(["school", "sex"])[["G1", "G2", "G3"]].mean()

614-2.png

** <Exercice pratique 3> ** Ensuite, calculons ensemble les valeurs maximale et minimale de G1, G2 et G3, en nous concentrant sur l'école et le sexe.

student_data_math.groupby(["school", "sex"])[["G1", "G2", "G3"]].agg(["max", "min"])

614-3.png

6.2 Principes de base du traitement des données manquantes et des valeurs aberrantes

6.2.1 Comment gérer les données manquantes

** <Pratique 1> ** Pour les données suivantes, s'il y a ne serait-ce qu'une colonne de NaN, supprimez-la et affichez le résultat.

sample_data_frame2.dropna()

621-1.png

** <Pratique 2> ** Remplissez NaN avec 0 pour les données préparées ci-dessus.

sample_data_frame2.fillna(0)

621-2.png

** <Exercice pratique 3> ** Pour les données préparées ci-dessus, remplissez NaN avec la valeur moyenne de chaque colonne.

sample_data_frame2.fillna(sample_data_frame2.mean())

621-3.png

6.2.2 Comment gérer les données anormales

6.3 Problème global

** 6.3.1 Problème global 1 ** Utilisez le "student-mat.csv" précédemment utilisé pour répondre aux questions suivantes.

(1) Pour les données ci-dessus, calculez le score moyen de G1 par âge x sexe, et créez un tableau avec l'âge sur l'axe vertical et le sexe sur l'axe horizontal.

(2) Pour la table de résultats affichée dans (1), affichons le résultat de la suppression de toutes les lignes (enregistrements) qui sont NA.

student_data_math = pd.read_csv("student-mat.csv",sep=";")

# (1)
print("(1)")
print(student_data_math.groupby(["age", "sex"])["G1"].mean().unstack())

# (2)
print("\n(2)")
print(student_data_math.groupby(["age", "sex"])["G1"].mean().unstack().dropna())
> (1)
> sex          F          M
> age                      
> 15   10.052632  12.250000
> 16   10.203704  11.740000
> 17   11.103448  10.600000
> 18   10.883721  10.538462
> 19   10.642857   9.700000
> 20   15.000000  13.000000
> 21         NaN  10.000000
> 22         NaN   6.000000
> 
> (2)
> sex          F          M
> age                      
> 15   10.052632  12.250000
> 16   10.203704  11.740000
> 17   11.103448  10.600000
> 18   10.883721  10.538462
> 19   10.642857   9.700000
> 20   15.000000  13.000000

Recommended Posts

Résolution d'exercices dans le cours de formation GCI Data Scientist Chapitre 6
Résolution d'exercices dans le cours de formation GCI Data Scientist Chapitre 7
Résolution d'exercices dans le cours de formation GCI Data Scientist Chapitre 8
Cours de formation Data Scientist Chapitre 2 Jour 2
Cours de formation Data Scientist Chapitre 3 Jour 3
Cours de formation Data Scientist Chapitre 4 Jour 1
Cours de formation Data Scientist Chapitre 3 Jour 1 + 2