Data Sci Abenteuer - teil 2, etwas fischig

Published on 2021-02-23 21:29

Verfügbare Sprachen:

Die Arbeit an den Online-Kursen ist good aber besser ist ein einzelnes Abenteuer. In diesem Artikel werde ich meine Anmerkungen über Python und R schreiben. Und auch werde ich prüfen was ich auf den Fischdaten gelernt habe.

Erstmals ist mein Ziel die Untersuchung der Daten. Ich will Minimum, Maximum, Durchschnitt, Zentralwert und Differenz erkennen. Die tiefere Analyse kommt später, wenn ich meine Fähigkeiten verbessern werde.

Python muss als erst pandas importieren. Andererseits R ist fast bereit. In beiden Sprachen ist der Datenimport ähnlich:

Python:

import pandas as pd

fish = pd.read_csv('Fish.csv')

R:

data <- read.csv("Fish.csv", sep=',', fileEncoding="UTF-8-BOM")

# file encoding ist notwendig sonst die erste Spalte wird mit 'i..' beginnen

Python

Danach beide Sprachen sind ein bisschen anders. Python geht vor. Hier als der erste Schritt brauchen wir die einzigartige Namen der Fisch:

fish["Species"].unique()

In dem zweiten Schritt gruppieren wir die Fische und gehen die Liste durch.

for specie in fish["Species"].unique():
    group = fish[fish["Species"] == specie]

Auf diesen Datenset können wir die Funktionen des Datenrahmens anwenden. Python und R sind auf Englisch basiert, so die Namen der Funktionen sind auch auf Englisch basiert.

# Durchschnitt

group.mean(axis=0)

# Zentralwert

group.median(axis=0)

# Minimum

group.min(axis=0)

# Maximum

group.max(axis=0)

Die Differenzfunktion existiert in Python nicht. So ich musste das selbst machen. Ein Problem erscheint mit der ersten Spalte, die hat keine Nummern. Da müssen wir einen Parameter numeric_only benutzen.

# Differenz

group.max(axis=0, numeric_only=True) - group.min(axis=0, numeric_only=True)

R

Die R-Sprache ist ein bisschen schwierig weil ich seit sechs Jahre nichts auf R geschrieben habe. Vor sechs Jahre nahmte ich eine Statistiksklasse und wir sollen es nutzen.

Beide Sprachen, Python und R, sind ein bisschen anders und man kann nicht Python ins R 1:1 übersetzen.

Die aggregate Funktion des Rs hat ganz viel gemacht. Wieder mal war hier der Problem mit den Namen, so, sollte ich die hilfreiche Funktionen geschrieben. In der Zukunft will ich eine bessere Lösung finden aber zur Zeit es reicht.

# Vorlage der hilfreichen Funktion

myFunction <- function (i) {

if (!is.numeric(i)) { return(NA) } return(realFunction(i)) }

Die aggregate Funktion hat drei wichtige Argumente

In nächstem Artikel

In nächstem Artikel werde ich dieser Dataset wieder explorieren aber diesmal mit D3.js.

Komplett Code

import pandas as pd

fish = pd.read_csv('Fish.csv')

for specie in fish["Species"].unique():

group = fish[fish["Species"] == specie] print("Mean") print(group.mean(axis=0)) print("Median") print(group.median(axis=0)) print("Min") print(group.min(axis=0)) print("Max") print(group.max(axis=0)) print("diff") print(group.max(axis=0, numeric_only=True) - group.min(axis=0, numeric_only=True))
data <- read.csv("Fish.csv", sep=',', fileEncoding="UTF-8-BOM")

file encoding is necessary otherwise first column will start with 'i..'

print("min") myMin <- function (i) {

if (!is.numeric(i)) { return(NA) } return(min(i)) }

aggregate(data, by = list(data$Species), FUN = myMin) print("max") myMax <- function (i) {

if (!is.numeric(i)) { return(NA) } return(max(i)) }

aggregate(data, by = list(data$Species), FUN = myMax) print("mean") myMean <- function (i) {

if (!is.numeric(i)) { return(NA) } return(mean(i)) }

aggregate(data, by = list(data$Species), FUN = myMean) print("median") myMedian <- function (i) {

if (!is.numeric(i)) { return(NA) } return(median(i)) }

aggregate(data, by = list(data$Species), FUN = myMedian) print("difference") myDifference <- function(i) {

if (!is.numeric(i)) { return(NA) } return(max(i) - min(i)) }

aggregate(data, by = list(data$Species), FUN = myDifference)