Cette fois, "Format des données et visualisation" dans "Chapitre 4 Réseau d'information et de communication et utilisation des données / Fin du livre" des matériels de formation des enseignants Information I publiés sur la page du Ministère de l'éducation, de la culture, des sports, des sciences et de la technologie seront mis en œuvre en python. Et je voudrais faire quelques considérations supplémentaires.
[Matériel pédagogique pour la formation des enseignants du Département de l’information du lycée "Information I" (partie principale): Ministère de l’éducation, de la culture, des sports, des sciences et de la technologie](https://www.mext.go.jp/a_menu/shotou/zyouhou/detail/1416756.htm "Département d’information du lycée Matériel pédagogique "Information I" pour la formation des enseignants (partie principale): Ministère de l'éducation, de la culture, des sports, des sciences et de la technologie ") [Chapitre 4 Utilisation du réseau et des données d'information et de communication / Fin de livre (PDF: 10284 Ko)](https://www.mext.go.jp/component/a_menu/education/micro_detail/__icsFiles/afieldfile/2019/09/24/ 1416758_006_1.pdf "Chapitre 4 Utilisation du réseau d'information et de communication et données - Fin de livre (PDF: 10284KB)")
Je voudrais réécrire l'exemple d'implémentation montré par R dans Learning 24 "Format de données et visualisation" (p202-) en python.
Pour le matériel pédagogique
Un diagramme de moustaches en boîte et une parcelle de violon ont été créés à partir des données d'échantillon de la mesure corporelle du Bureau des statistiques du ministère de l'Intérieur et des Communications.
Bien que cela soit dit, le fichier de données lu par R semble être le résultat d'hommes et de femmes courant 50 m, j'ai donc utilisé les données suivantes préparées de manière appropriée ici. high_male_data.csv
De plus, le "diamonds.csv" utilisé dans la version d'implémentation de python dans la seconde moitié était celui du site kaggle. Diamonds - Kaggle
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
gen_50 = pd.read_csv('/content/gen_50.csv')
plt.subplots_adjust(wspace=0.5)
sns.boxplot(x = 'gender', y = 'run50m', data = gen_50)
plt.show()
sns.violinplot(x = "gender", y = "run50m", data = gen_50)
plt.show()
Depuis que j'ai utilisé le module seaborn pour dessiner l'intrigue du violon, j'ai également utilisé le module seaborn pour dessiner les moustaches de la boîte.
library( ggplot2 )
#Lire les données
gen_50 <- read.csv("gen_50.csv")
boxplot(run50m~gender, data=gen_50)
ggplot(data=gen_50, aes(x=gender, y=run50m, color=gender)) + geom_violin()
À propos, le code source écrit dans le matériel didactique proprement dit est le suivant.
Veuillez noter qu'il y a un bug ici. Erreur: boxplot (run50m ~ gender.data = gen_50) Correct: boxplot (run50m ~ gender, data = gen_50)
À quoi sert la visualisation des données? En visualisant, les problèmes peuvent être découverts et une analyse détaillée, une interprétation et des solutions peuvent être envisagées. Ici, expliquons en utilisant les données d'échantillons de diamants incluses dans le package appelé ggplot2 du logiciel d'analyse statistique R. Ces données sont des dizaines de milliers de données volumineuses comprenant le carat, la taille, la transparence, la taille, le prix, etc. des diamants effectivement distribués aux États-Unis.
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.read_csv('/content/diamonds.csv')
df_carat_lt3 = df[df['carat'] < 3]
#carat sur l'axe des x, compter sur l'axe des y
plt.xlabel('carat')
plt.ylabel('count')
#Dessinez un histogramme
df_carat_lt3['carat'].hist(bins=250)
plt.show()
#Dessinez un diagramme de dispersion
df_carat_lt3.plot.scatter(x = 'carat', y = 'price')
plt.show()
sns.boxplot(x = 'cut', y = 'price', data = df_carat_lt3)
plt.show()
On peut voir que plus le nombre de carats est élevé, plus le prix est élevé.
L'ordre de l'axe des x dans la dernière figure n'est pas très bon, mais l'ordre de la qualité de coupe est Idéal> Premium> Très bon> Bon> Passable.
Le matériel pédagogique est rédigé comme suit.
Cela ressemblera à un phénomène mystérieux. Plus la qualité de la coupe est élevée, plus le prix est bas. Le même phénomène d'inversion se produit avec une couleur et une transparence élevées. L'indice est le "facteur d'intrication". Un facteur d'intrication est une variable cachée (facteur) qui est fortement corrélée aux deux variables cibles.
Les résultats obtenus jusqu'à présent montrent que plus le nombre de carats est élevé, plus le prix est élevé. De cela, on peut en déduire que de nombreux diamants avec un grand nombre de carats ont une qualité de coupe médiocre. (Autrement dit, plus la qualité de la coupe est élevée, plus le prix est bas, ce qui peut être dû au nombre de carats, qui est un facteur interdépendant.)
sns.boxplot(x = 'cut', y = 'carat', data = df_carat_lt3)
plt.show()
C'était comme prévu, et surtout en regardant la médiane, on a constaté que le nombre de carats idéal avec la qualité de coupe la plus élevée était le plus bas et le nombre de carats équitable avec la qualité de coupe la plus basse était le plus bas.
Si vous souhaitez voir une analyse plus détaillée de cette analyse des données sur les diamants, vous devriez consulter les sites suivants. https://www.kaggle.com/fuzzywizard/diamonds-in-depth-analysis
—— Plus la qualité de la coupe est élevée, plus le coût par carat est élevé.
library(ggplot2)
diamonds
smaller <- diamonds %>% filter(carat < 3)
ggplot(data = smaller, mapping = aes(x = carat)) + geom_histogram(binwidth = 0.01)
ggplot(data = diamonds) + geom_point(mapping = aes(x = carat, y = price))
ggplot(diamonds, aes(cut, price)) + geom_boxplot()
À propos, le code source écrit dans le matériel didactique proprement dit est le suivant.
Veuillez noter qu'il y a un bug ici. Mauvais: plus petit <-diamonds%>% + filtre (carat <3) Correct: filtre <-diamonds%>% plus petit (carat <3)
A tibble: 53940 × 10
carat cut color clarity depth table price x y z
<dbl> <ord> <ord> <ord> <dbl> <dbl> <int> <dbl> <dbl> <dbl>
0.23 Ideal E SI2 61.5 55 326 3.95 3.98 2.43
0.21 Premium E SI1 59.8 61 326 3.89 3.84 2.31
⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮
(réduction)
⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮
0.86 Premium H SI2 61.0 58 2757 6.15 6.12 3.74
0.75 Ideal D SI2 62.2 55 2757 5.83 5.87 3.64
version python https://gist.github.com/ereyester/68b781bd6668005c157b300c5bf22905
Version R https://gist.github.com/ereyester/737207c4c99556850950c5b5a49dbfcc
Recommended Posts