"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.1 Pandas
** <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
hier_data_frame1["Kyoto"]
** <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)
** <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")
** <Pratique 1> ** Faisons une jointure interne aux deux tables de données suivantes.
pd.merge(attri_data_frame4, attri_data_frame5, how = "inner")
** <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")
** <Exercice pratique 3> ** Combinons verticalement les données suivantes pour attri_data_frame4.
pd.concat([attri_data_frame4, attri_data_frame6])
** <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()
** <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
** <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()
** <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"])
** <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()
** <Pratique 2> ** Remplissez NaN avec 0 pour les données préparées ci-dessus.
sample_data_frame2.fillna(0)
** <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())
** 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