[Informationen der High School Information Department I] Unterrichtsmaterialien für die Lehrerausbildung: Datenformat und Visualisierung (Python)

Einführung

Dieses Mal wird "Datenformat und Visualisierung" in "Kapitel 4 Informations- und Kommunikationsnetzwerk und Datennutzung / Ende des Buches" der auf der Seite des Ministeriums für Bildung, Kultur, Sport, Wissenschaft und Technologie veröffentlichten Informationsmaterialien für Lehrer I in Python implementiert. Und ich möchte einige zusätzliche Überlegungen anstellen.

Lehrmaterial

[Lehrmaterial für die Lehrerinformation der High School "Information I" (Hauptteil): Ministerium für Bildung, Kultur, Sport, Wissenschaft und Technologie](https://www.mext.go.jp/a_menu/shotou/zyouhou/detail/1416756.htm "Informationsabteilung der High School Unterrichtsmaterialien "Information I" für die Lehrerausbildung (Hauptteil): Ministerium für Bildung, Kultur, Sport, Wissenschaft und Technologie ") [Kapitel 4 Nutzung des Informations- und Kommunikationsnetzes und der Daten / Buchende (PDF: 10284 KB)](https://www.mext.go.jp/component/a_menu/education/micro_detail/__icsFiles/afieldfile/2019/09/24/ 1416758_006_1.pdf "Kapitel 4 Nutzung des Informations- und Kommunikationsnetzwerks und des Datenendes des Buches (PDF: 10284KB)")

Umgebung

Was ist diesmal zu tun?

Ich möchte das Implementierungsbeispiel, das R in Learning 24 "Datenformat und Visualisierung" (p202-) gezeigt hat, in Python umschreiben.

Annahme

Für Unterrichtsmaterialien

Aus den Probendaten der Körpermessung des Statistikamtes des Ministeriums für innere Angelegenheiten und Kommunikation wurden ein Box-Whisker-Diagramm und ein Geigenplot erstellt.

Obwohl es heißt, dass die von R gelesene Datendatei das Ergebnis von Männern und Frauen ist, die 50 m laufen, habe ich die folgenden Daten verwendet, die hier entsprechend vorbereitet wurden. high_male_data.csv

Außerdem war die in der Python-Implementierungsversion in der zweiten Hälfte verwendete "Diamonds.csv" diejenige auf der Kaggle-Site. Diamonds - Kaggle

Qualitative Daten und ihre Typen

Box Whisker und Geigenplots

Quellcode für die Python-Implementierung

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()

Da ich das Seaborn-Modul zum Zeichnen des Geigenplots verwendet habe, habe ich auch das Seaborn-Modul zum Zeichnen der Box-Whisker verwendet.

Ausgabeergebnis der Python-Implementierungsversion

ダウンロード (3).png

ダウンロード (4).png

[Referenz] Quellcode der R-Implementierungsversion (aus Lehrmaterialien)

library( ggplot2 )
#Daten lesen
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()

Übrigens ist der Quellcode, der in den eigentlichen Unterrichtsmaterialien geschrieben ist, wie folgt.

SnapCrab_NoName_2020-7-27_20-45-53_No-00.png

Bitte beachten Sie, dass hier ein Fehler vorliegt. Falsch: Boxplot (run50m ~ gender.data = gen_50) Richtig: Boxplot (run50m ~ gender, data = gen_50)

[Referenz] Ausgabeergebnis der R-Implementierungsversion

ダウンロード (1).png ダウンロード (1).png

Histogramm, Streudiagramm und Box-Whisker-Diagramm

Was ist der Zweck der Visualisierung von Daten? Durch die Visualisierung können Probleme entdeckt und detaillierte Analysen, Interpretationen und Lösungen berücksichtigt werden. Lassen Sie uns hier anhand der Diamanten-Probendaten erklären, die im Paket ggplot2 der statistischen Analysesoftware R enthalten sind. Bei diesen Daten handelt es sich um Zehntausende großer Datenmengen, einschließlich Karat, Schliff, Transparenz, Größe, Preis usw. von Diamanten, die tatsächlich in den USA vertrieben werden.

Quellcode für die Python-Implementierung

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]

#Karat auf der x-Achse, auf der y-Achse zählen
plt.xlabel('carat')
plt.ylabel('count')

#Zeichnen Sie ein Histogramm
df_carat_lt3['carat'].hist(bins=250)
plt.show()

#Zeichnen Sie ein Streudiagramm
df_carat_lt3.plot.scatter(x = 'carat', y = 'price')
plt.show()

sns.boxplot(x = 'cut', y = 'price', data = df_carat_lt3)
plt.show()

Ausgabeergebnis der Python-Implementierungsversion

ダウンロード (8).png ダウンロード (9).png

Es ist ersichtlich, dass der Preis umso höher ist, je größer die Karatzahl ist.

ダウンロード (10).png

Die Reihenfolge der x-Achse in der letzten Abbildung ist nicht sehr gut, aber die Reihenfolge der Schnittqualität ist Ideal> Premium> Sehr gut> Gut> Fair.

Kommentar

Die Unterrichtsmaterialien sind wie folgt geschrieben.

Dies wird wie ein mysteriöses Phänomen aussehen. Je höher die Qualität des Schnitts ist, desto niedriger ist der Preis. Das gleiche Umkehrphänomen tritt bei hoher Farbe und Transparenz auf. Der Hinweis ist der "Verschränkungsfaktor". Ein Verschränkungsfaktor ist eine versteckte Variable (Faktor), die stark mit den beiden Zielvariablen korreliert.

Die bisherigen Ergebnisse zeigen, dass der Preis umso höher ist, je höher die Karatzahl ist. Daraus kann geschlossen werden, dass viele Diamanten mit einer großen Karatzahl eine schlechte Schnittqualität aufweisen. (Das heißt, je höher die Qualität des Schnitts ist, desto niedriger ist der Preis, was möglicherweise auf die Anzahl der Karat zurückzuführen ist, was ein zusammenhängender Faktor ist.)

Quellcode für die Python-Implementierung (Schnitt gegen Karat)


sns.boxplot(x = 'cut', y = 'carat', data = df_carat_lt3)
plt.show()

Ausgabeergebnis der Python-Implementierungsversion (Schnitt gegen Karat)

ダウンロード (11).png

Es war wie erwartet, und insbesondere beim Blick auf den Median wurde festgestellt, dass die ideale Karatzahl mit der höchsten Schnittqualität am niedrigsten und die faire Karatzahl mit der niedrigsten Schnittqualität am niedrigsten war.

Wenn Sie eine detailliertere Analyse dieser Diamantdatenanalyse wünschen, sollten Sie die folgenden Websites überprüfen. https://www.kaggle.com/fuzzywizard/diamonds-in-depth-analysis

Über die Qualität des Diamantschliffes (Ergänzung)

[Referenz] Quellcode der R-Implementierungsversion (aus Lehrmaterialien)

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()

Übrigens ist der Quellcode, der in den eigentlichen Unterrichtsmaterialien geschrieben ist, wie folgt.

SnapCrab_NoName_2020-7-27_21-16-22_No-00.png

Bitte beachten Sie, dass hier ein Fehler vorliegt. Falsch: kleinerer <-Diamant%>% + Filter (Karat <3) Richtig: kleinerer <-Diamanten%>% Filter (Karat <3)

[Referenz] Ausgabeergebnis der R-Implementierungsversion

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
⋮	⋮	⋮	⋮	⋮	⋮	⋮	⋮	⋮	⋮
(Kürzung)
⋮	⋮	⋮	⋮	⋮	⋮	⋮	⋮	⋮	⋮
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
ダウンロード (5).png ダウンロード (6).png ダウンロード (7).png

Quellcode

Python-Version https://gist.github.com/ereyester/68b781bd6668005c157b300c5bf22905

R-Version https://gist.github.com/ereyester/737207c4c99556850950c5b5a49dbfcc

Recommended Posts

[Informationen der High School Information Department I] Unterrichtsmaterialien für die Lehrerausbildung: Datenformat und Visualisierung (Python)
[Informationen I / Information II der Informationsabteilung der High School] Zusammenfassung der Unterrichtsmaterialien für die Lehrerausbildung durch Python
Datenanalyse durch Clustering mit der k-means-Methode (Python) ([Informationen zur Informationsabteilung der High School II] Unterrichtsmaterialien für die Lehrerausbildung)
Text Mining von word2vec usw. von Python ([Informationen zur Informationsabteilung der High School II] Unterrichtsmaterialien für die Lehrerausbildung)
Binäre Klassifizierung nach Entscheidungsbaum nach Python ([Informationen zur Informationsabteilung der High School II] Unterrichtsmaterialien für die Lehrerausbildung)
[Informationen zu Richtlinien für das Lernen an Gymnasien I] Unterrichtsmaterialien für die Lehrerausbildung: Implementierung der Huffman-Methode durch Python
Hauptkomponentenanalyse mit Python (Scikit-Lernversion, Pandas & Numpy-Version) ([Informationen zur Informationsabteilung der High School II] Unterrichtsmaterialien für die Lehrerausbildung)
Objekterkennung mit YOLO (Python) ([Informationen zur Informationsabteilung der High School II] Unterrichtsmaterialien für die Lehrerausbildung)
Web-Lehrmaterialien zum Erlernen von Python
Erfassung und Visualisierung von Sensordaten für das Pflanzenwachstum mit Intel Edison und Python
Python-Visualisierungstool für die Datenanalyse
Ich habe ein Python-Datenanalysetraining aus der Ferne durchgeführt
Binäre Klassifizierung nach Entscheidungsbaum nach Python ([Informationen zur Informationsabteilung der High School II] Unterrichtsmaterialien für die Lehrerausbildung)
[Informationen I / Information II der Informationsabteilung der High School] Zusammenfassung der Unterrichtsmaterialien für die Lehrerausbildung durch Python
Datenanalyse durch Clustering mit der k-means-Methode (Python) ([Informationen zur Informationsabteilung der High School II] Unterrichtsmaterialien für die Lehrerausbildung)
Text Mining von word2vec usw. von Python ([Informationen zur Informationsabteilung der High School II] Unterrichtsmaterialien für die Lehrerausbildung)
[Informationen der High School Information Department I] Unterrichtsmaterialien für die Lehrerausbildung: Datenformat und Visualisierung (Python)
Hauptkomponentenanalyse mit Python (Scikit-Lernversion, Pandas & Numpy-Version) ([Informationen zur Informationsabteilung der High School II] Unterrichtsmaterialien für die Lehrerausbildung)
Objekterkennung mit YOLO (Python) ([Informationen zur Informationsabteilung der High School II] Unterrichtsmaterialien für die Lehrerausbildung)
[Informationen zu Richtlinien für das Lernen an Gymnasien I] Unterrichtsmaterialien für die Lehrerausbildung: Implementierung der Huffman-Methode durch Python
Eine einfache Python-Implementierung der k-Neighborhood-Methode (k-NN)
K Nachbarschaftsmethode (Mehrklassenklassifikation)
Web-Lehrmaterialien zum Erlernen von Python