Playing Julia-Games

Playing Julia-Games


Ein kleines Riddle zum Outsound of the Abend


Code


using DataFrames

using Plots

using Clustering

using Statistics

houses = readtable("houses.csv")
houses[:ziprange] = 0

mini_houses = minimum(houses[:zip])
maxi_houses = maximum(houses[:zip])
ziprange = 1
j = 1

houses[houses[:,:zip] .== 95838,:ziprange] .= ziprange

function ziprangeset(j,ziprange)
       for i in mini_houses:maxi_houses
           println("i ist ", i)
           if j < 24
           println("Zip-Bereich ist ", ziprange)
           houses[houses[:,:zip] .== i,:ziprange] .= ziprange
           j = j + 1
           else
           println("Zip-Bereich ist ", ziprange)
           houses[houses[:,:zip] .== i,:ziprange] .= ziprange
           ziprange = ziprange + 1
           j = 1
           end
           println("j ist ", j)
       end
end

ziprangeset(j,ziprange)

houses[:,[:zip,:ziprange]]

houses[:meanperziprange] = 0
meanperziprange = by(houses, [:ziprange], df -> mean(df[:, :price]))

function mergedataframes()
    for i in minimum(houses[:ziprange]):maximum(houses[:ziprange])
    meanpzr = meanperziprange[meanperziprange[:,:ziprange] .== i,:x1][1]
    println("Mittelwert für Bereich ",i," wurde auf ", meanpzr, " gesetzt!")
    #houses[houses[:,:meanperziprange] .== i,:ziprange] .= meanpzr
    end
end

mergedataframes()

houses[:,[:zip,:ziprange,:meanperziprange]]


Out


julia> mergedataframes()
┌ Warning: `getindex(df::DataFrame, col_ind::ColumnIndex)` is deprecated, use `df[!, col_ind]` instead.
│   caller = mergedataframes() at REPL[401]:2
└ @ Main ./REPL[401]:2
┌ Warning: `getindex(df::DataFrame, col_ind::ColumnIndex)` is deprecated, use `df[!, col_ind]` instead.
│   caller = mergedataframes() at REPL[401]:2
└ @ Main ./REPL[401]:2
Mittelwert für Bereich 1 wurde auf 240774.04901960783 gesetzt!
Mittelwert für Bereich 2 wurde auf 192953.9193548387 gesetzt!
Mittelwert für Bereich 3 wurde auf 237124.11627906977 gesetzt!
Mittelwert für Bereich 4 wurde auf 317186.8163265306 gesetzt!
Mittelwert für Bereich 5 wurde auf 230000.0 gesetzt!
Mittelwert für Bereich 6 wurde auf 388659.29411764705 gesetzt!
Mittelwert für Bereich 7 wurde auf 335047.35074626864 gesetzt!
ERROR: BoundsError: attempt to access 0-element Array{Float64,1} at index [1]
Stacktrace:
 [1] getindex(::Array{Float64,1}, ::Int64) at ./array.jl:728
 [2] mergedataframes() at ./REPL[401]:3
 [3] top-level scope at REPL[402]:1


Fragestellung


Yap, soweit habe ich mich heute abend schon mal vortasten können. Alles soweit klargemacht, die Mittelwerte pro PLZ-Bereich werden berechnet - und könnten theoretisch zugeordnet werden ... Halt, stop, retour! Wieso nur theoretisch?

Eine kleine Anpassung:

function mergedataframes()
    for i in minimum(houses[:ziprange]):maximum(houses[:ziprange])
        if i < 8
            meanpzr = meanperziprange[meanperziprange[:,:ziprange] .== i,:x1][1]
            println("Mittelwert für Bereich ",i," wurde auf ", meanpzr, " gesetzt!")
            houses[houses[:,:meanperziprange] .== i,:ziprange] .= meanpzr
        else
            println("Hier stimmt noch was nicht!")
        end
    end
end

mergedataframes()

houses[:,[:zip,:ziprange,:meanperziprange]]



bringt mir hier:

julia> mergedataframes()
┌ Warning: `getindex(df::DataFrame, col_ind::ColumnIndex)` is deprecated, use `df[!, col_ind]` instead.
│   caller = mergedataframes() at REPL[406]:2
└ @ Main ./REPL[406]:2
┌ Warning: `getindex(df::DataFrame, col_ind::ColumnIndex)` is deprecated, use `df[!, col_ind]` instead.
│   caller = mergedataframes() at REPL[406]:2
└ @ Main ./REPL[406]:2
Mittelwert für Bereich 1 wurde auf 240774.04901960783 gesetzt!
ERROR: InexactError: Int64(240774.04901960783)
Stacktrace:
 [1] Type at ./float.jl:703 [inlined]
 [2] convert at ./number.jl:7 [inlined]
 [3] fill!(::SubArray{Int64,1,Array{Int64,1},Tuple{Array{Int64,1}},false}, ::Float64) at ./multidimensional.jl:865
 [4] copyto! at ./broadcast.jl:850 [inlined]
 [5] materialize!(::SubArray{Int64,1,Array{Int64,1},Tuple{Array{Int64,1}},false}, ::Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{0},Nothing,typeof(identity),Tuple{Float64}}) at ./broadcast.jl:801
 [6] mergedataframes() at ./REPL[406]:6
 [7] top-level scope at REPL[407]:1

julia> houses[:,[:zip,:ziprange,:meanperziprange]]
985×3 DataFrame
│ Row │ zip    │ ziprange │ meanperziprange │
│     │ Int64⍰ │ Int64    │ Int64           │
├─────┼────────┼──────────┼─────────────────┤
│ 1   │ 95838  │ 10       │ 0               │
│ 2   │ 95823  │ 10       │ 0               │
│ 3   │ 95815  │ 9        │ 0               │
│ 4   │ 95815  │ 9        │ 0               │
│ 5   │ 95824  │ 10       │ 0               │
│ 6   │ 95841  │ 10       │ 0               │
│ 7   │ 95842  │ 10       │ 0               │

│ 978 │ 95823  │ 10       │ 0               │
│ 979 │ 95823  │ 10       │ 0               │
│ 980 │ 95758  │ 7        │ 0               │
│ 981 │ 95829  │ 10       │ 0               │
│ 982 │ 95823  │ 10       │ 0               │
│ 983 │ 95610  │ 1        │ 0               │
│ 984 │ 95758  │ 7        │ 0               │
│ 985 │ 95762  │ 7        │ 0               │



Und so angepasst:


function mergedataframes()
    for i in minimum(houses[:ziprange]):maximum(houses[:ziprange])
        if i < 8
            meanpzr = meanperziprange[meanperziprange[:,:ziprange] .== i,:x1][1]
            println("Mittelwert für Bereich ",i," wurde auf ", meanpzr, " gesetzt!")
            # houses[houses[:,:meanperziprange] .== i,:ziprange] .= meanpzr
        else
            println("Hier stimmt noch was nicht!")
        end
    end
end

mergedataframes()

houses[:,[:zip,:ziprange,:meanperziprange]]



kommt das bei raus:


julia> mergedataframes()
┌ Warning: `getindex(df::DataFrame, col_ind::ColumnIndex)` is deprecated, use `df[!, col_ind]` instead.
│   caller = mergedataframes() at REPL[409]:2
└ @ Main ./REPL[409]:2
┌ Warning: `getindex(df::DataFrame, col_ind::ColumnIndex)` is deprecated, use `df[!, col_ind]` instead.
│   caller = mergedataframes() at REPL[409]:2
└ @ Main ./REPL[409]:2
Mittelwert für Bereich 1 wurde auf 240774.04901960783 gesetzt!
Mittelwert für Bereich 2 wurde auf 192953.9193548387 gesetzt!
Mittelwert für Bereich 3 wurde auf 237124.11627906977 gesetzt!
Mittelwert für Bereich 4 wurde auf 317186.8163265306 gesetzt!
Mittelwert für Bereich 5 wurde auf 230000.0 gesetzt!
Mittelwert für Bereich 6 wurde auf 388659.29411764705 gesetzt!
Mittelwert für Bereich 7 wurde auf 335047.35074626864 gesetzt!
Hier stimmt noch was nicht!
Hier stimmt noch was nicht!
Hier stimmt noch was nicht!
Hier stimmt noch was nicht!

...


Gut, dann halt so. Nun zur Frage:

Was ist hier faul?


Alles soweit verständlich?
Auf alle Fälle dürfte deutlich werden: Auch mit dieser Programmiersprache kann fim Spass haben.
Antwort auf die Frage kommt - wenn ich sie finde - demnächst als Update hier unten hinnedrangehängt. Word!





~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Update


Und schon ist der Fehler gefunden!

houses[:meanperziprange] = 1.0

meanperziprange = by(houses, [:ziprange], df -> mean(df[:, :price]))

function mergedataframes()
    for i in minimum(houses[:ziprange]):maximum(houses[:ziprange])
        if i != 8
            meanpzr = meanperziprange[meanperziprange[:,:ziprange] .== i,:x1][1]
            println("Mittelwert für Bereich ",i," wird auf ", meanpzr, " gesetzt!")
            houses[houses[:,:ziprange] .== i,:meanperziprange] .= meanpzr
        else
            println("Hier stimmt noch was nicht!")
        end
    end
end



Dadurch bekomme ich dann das:


julia> houses[:,[:zip,:ziprange,:meanperziprange]]
985×3 DataFrame
│ Row │ zip    │ ziprange │ meanperziprange │
│     │ Int64⍰ │ Int64    │ Float64         │
├─────┼────────┼──────────┼─────────────────┤
│ 1   │ 95838  │ 10       │ 1.94825e5       │
│ 2   │ 95823  │ 10       │ 1.94825e5       │
│ 3   │ 95815  │ 9        │ 2.05315e5       │
│ 4   │ 95815  │ 9        │ 2.05315e5       │
│ 5   │ 95824  │ 10       │ 1.94825e5       │
│ 6   │ 95841  │ 10       │ 1.94825e5       │
│ 7   │ 95842  │ 10       │ 1.94825e5       │

│ 978 │ 95823  │ 10       │ 1.94825e5       │
│ 979 │ 95823  │ 10       │ 1.94825e5       │
│ 980 │ 95758  │ 7        │ 3.35047e5       │
│ 981 │ 95829  │ 10       │ 1.94825e5       │
│ 982 │ 95823  │ 10       │ 1.94825e5       │
│ 983 │ 95610  │ 1        │ 240774.0        │
│ 984 │ 95758  │ 7        │ 3.35047e5       │
│ 985 │ 95762  │ 7        │ 3.35047e5       │


So, jetzt ist eigentlich fast schon genug gespielt. Ich sollte eine Nacht darüber schlafen, dann kann der Groschen vollständig fallen (noch hängt er halb in der Luft, wie immer bei mir).


Ach, nicht vergessen!
Ich wollte noch kurz eine Grafik drucken:


x = houses[:ziprange]
y = houses[:meanperziprange]
scatter(x,y)



bringt:




War zu erwarten bei diesen willkürlich aufgeteilten ZIP-Bereichen. Nix für ungut, jedoch. War eine nette Übung.

Gute Nacht, good night!


..................................................................................................

Ach, ja ... ich habe mir doch noch ein kleines Spiel erlaubt/gegönnt:


Code


using DataFrames

using Plots

using Clustering

using Statistics

houses = readtable("houses.csv")
houses[:ziprange] = 0

mini_houses = minimum(houses[:zip])
maxi_houses = maximum(houses[:zip])
ziprange = 1
j = 1

houses[houses[:,:zip] .== 95838,:ziprange] .= ziprange

function ziprangeset(j,ziprange)
       for i in mini_houses:maxi_houses
           println("i ist ", i)
           if j < 12
           println("Zip-Bereich ist ", ziprange)
           houses[houses[:,:zip] .== i,:ziprange] .= ziprange
           j = j + 1
           else
           println("Zip-Bereich ist ", ziprange)
           houses[houses[:,:zip] .== i,:ziprange] .= ziprange
           ziprange = ziprange + 1
           j = 1
           end
           println("j ist ", j)
       end
end

ziprangeset(j,ziprange)

houses[:,[:zip,:ziprange]]

houses[:meanperziprange] = 1.0

meanperziprange = by(houses, [:ziprange], df -> mean(df[:, :price]))

function mergedataframes()
    for i in minimum(houses[:ziprange]):maximum(houses[:ziprange])
        meanpzr = meanperziprange[meanperziprange[:,:ziprange] .== i,:x1]
        if size(meanpzr) == (0,)
            mpzrval = 0
        else
            mpzrval = meanpzr[1]
        end
        println("Mittelwert für Bereich ",i," wird auf ", mpzrval, " gesetzt!")
        houses[houses[:,:ziprange] .== i,:meanperziprange] .= mpzrval
    end
end

mergedataframes()

houses[:,[:zip,:ziprange,:meanperziprange]]


x = houses[:ziprange]
y = houses[:meanperziprange]
scatter(x,y)


Out


julia> mergedataframes()
┌ Warning: `getindex(df::DataFrame, col_ind::ColumnIndex)` is deprecated, use `df[!, col_ind]` instead.
│   caller = mergedataframes() at REPL[999]:2
└ @ Main ./REPL[999]:2
┌ Warning: `getindex(df::DataFrame, col_ind::ColumnIndex)` is deprecated, use `df[!, col_ind]` instead.
│   caller = mergedataframes() at REPL[999]:2
└ @ Main ./REPL[999]:2
Mittelwert für Bereich 1 wird auf 297824.3333333333 gesetzt!
Mittelwert für Bereich 2 wird auf 213489.13043478262 gesetzt!
Mittelwert für Bereich 3 wird auf 316829.18 gesetzt!
Mittelwert für Bereich 4 wird auf 109254.41891891892 gesetzt!
Mittelwert für Bereich 5 wird auf 220600.65853658537 gesetzt!
Mittelwert für Bereich 6 wird auf 252178.82222222222 gesetzt!
Mittelwert für Bereich 7 wird auf 289062.8 gesetzt!
Mittelwert für Bereich 8 wird auf 442182.44444444444 gesetzt!
Mittelwert für Bereich 9 wird auf 0 gesetzt!
Mittelwert für Bereich 10 wird auf 230000.0 gesetzt!
Mittelwert für Bereich 11 wird auf 240302.66666666666 gesetzt!
Mittelwert für Bereich 12 wird auf 420450.0 gesetzt!
Mittelwert für Bereich 13 wird auf 296799.05 gesetzt!
Mittelwert für Bereich 14 wird auf 447542.35294117645 gesetzt!
Mittelwert für Bereich 15 wird auf 0 gesetzt!
Mittelwert für Bereich 16 wird auf 0 gesetzt!
Mittelwert für Bereich 17 wird auf 0 gesetzt!
Mittelwert für Bereich 18 wird auf 205314.9024390244 gesetzt!
Mittelwert für Bereich 19 wird auf 183580.96902654867 gesetzt!
Mittelwert für Bereich 20 wird auf 210041.251497006 gesetzt!
Mittelwert für Bereich 21 wird auf 232496.39393939395 gesetzt!
Mittelwert für Bereich 22 wird auf 364400.0 gesetzt!

julia> houses[:,[:zip,:ziprange,:meanperziprange]]
985×3 DataFrame
│ Row │ zip    │ ziprange │ meanperziprange │
│     │ Int64⍰ │ Int64    │ Float64         │
├─────┼────────┼──────────┼─────────────────┤
│ 1   │ 95838  │ 20       │ 2.10041e5       │
│ 2   │ 95823  │ 19       │ 183581.0        │
│ 3   │ 95815  │ 18       │ 2.05315e5       │
│ 4   │ 95815  │ 18       │ 2.05315e5       │
│ 5   │ 95824  │ 19       │ 183581.0        │
│ 6   │ 95841  │ 20       │ 2.10041e5       │
│ 7   │ 95842  │ 20       │ 2.10041e5       │

│ 978 │ 95823  │ 19       │ 183581.0        │
│ 979 │ 95823  │ 19       │ 183581.0        │
│ 980 │ 95758  │ 13       │ 296799.0        │
│ 981 │ 95829  │ 19       │ 183581.0        │
│ 982 │ 95823  │ 19       │ 183581.0        │
│ 983 │ 95610  │ 1        │ 2.97824e5       │
│ 984 │ 95758  │ 13       │ 296799.0        │
│ 985 │ 95762  │ 14       │ 4.47542e5       │

julia> x = houses[:ziprange]
┌ Warning: `getindex(df::DataFrame, col_ind::ColumnIndex)` is deprecated, use `df[!, col_ind]` instead.
│   caller = top-level scope at REPL[939]:1
└ @ Core REPL[939]:1
985-element Array{Int64,1}:
 20
 19
 18
 18
 19
 20
 20
 19
  6
  6
  ⋮
  4
 19
 19
 13
 19
 19
  1
 13
 14

julia> y = houses[:meanperziprange]
┌ Warning: `getindex(df::DataFrame, col_ind::ColumnIndex)` is deprecated, use `df[!, col_ind]` instead.
│   caller = top-level scope at REPL[940]:1
└ @ Core REPL[940]:1
985-element Array{Float64,1}:
 210041.251497006 
 183580.96902654867
 205314.9024390244
 205314.9024390244
 183580.96902654867
 210041.251497006 
 210041.251497006 
 183580.96902654867
 252178.82222222222
 252178.82222222222
      ⋮           
 109254.41891891892
 183580.96902654867
 183580.96902654867
 296799.05        
 183580.96902654867
 183580.96902654867
 297824.3333333333
 296799.05        
 447542.35294117645

julia> scatter(x,y)






Fim merkt vielleicht, jetzt fängt's an mir wirklich Spaß zu machen.

Aber jetzt für heute endlich: Gute Nacht!



++++++++++++++++++++++++++++++++++++++++++++++

Schauspieler: Willem Dafoe | ZEITmagazin Diese Illustrationen zeigen, dass Faultiere zu langsam für alles sind › ze.tt Regierungsbildung: Die Regierung Conte kann ihre Arbeit aufnehmen | ZEIT ONLINE Vatikan: Fremdenfeindlichkeit erinnert den Papst an Adolf Hitler | ZEIT ONLINE AfD-Kunst: Der "Vogelschiss" wird ausgeklammert | ZEIT ONLINE Lateinunterricht: Metamorphosen der sexuellen Gewalt | ZEIT ONLINE Israelischer Premierminister: Benjamin Netanjahu will Jordantal annektieren | ZEIT ONLINE Iran: USA warnen vor geheimen "nuklearen Aktivitäten" | ZEIT ONLINE John Bolton: Das war überfällig | ZEIT ONLINE Amazonas: Forscher entdecken Rekord-Zitteraal - SPIEGEL ONLINE Papst Franziskus: Fremdenfeindlichkeit erinnert manchmal an Hitler - SPIEGEL ONLINE Italien: Regierung Guiseppe Contes nimmt letzte Hürde im Senat - SPIEGEL ONLINE Sicherheitsberater Bolton entlassen: Ein Korrektiv weniger Integers and Floating-Point Numbers · The Julia Language Conversion and Promotion · The Julia Language Introducing Julia/DataFrames - Wikibooks, open books for an open world Introducing Julia/DataFrames - Wikibooks, open books for an open world Julia dataframes with specific column types - Stack Overflow How do I convert the type of a Dataframe column in Julia? - Stack Overflow Introducing Julia/DataFrames - Wikibooks, open books for an open world merge - Julia merging dataframes - Stack Overflow Joining two DataFrames with same columns - Domains / Data - JuliaLang Introducing Julia/DataFrames - Wikibooks, open books for an open world CDU in Sachsen: Matthias Rößler als Landtagspräsident vorgeschlagen - WELT SPD-Chef verliert gegen Landtagspräsidenten und AfD - WELT Tafel-Chef Jörg Sartor: „Wir schaffen das. Ja, aber nicht so“ - WELT Ruhrgebiet: Dreckigster Fluss Europas - dann passiert Unglaubliches - Dortmund - derwesten.de Reaktorkatastrophe: Kühlwasser von Fukushima soll ins Meer geleitet werden | ZEIT ONLINE Japan: Atomruine Fukushima soll radioaktives Wasser ins Meer leiten - SPIEGEL ONLINE Regierung baut Pontonbrücke: Warschaus Kloake wird zum Politikum | tagesschau.de Klimawandel: Der Teufel trägt Öko | ZEIT ONLINE Warum Italiener so schnell reden - science.ORF.at Schuh-Plattler: Neue Cobain-Kollektion "Kurt Was Here" – laut.de – Seite 7/20 "Free" von Iggy Pop – laut.de – Album BLICK: Nachrichten und Schlagzeilen aus der Schweiz und aller Welt EIL - Schwesig legt SPD-Vorsitz nach Krebsdiagnose nieder - Politik - Süddeutsche.de Neuwahl-Pläne vom Parlament abgelehnt: Bittere Niederlage für Brexit-Boris - Politik Inland - Bild.de Teddy Quinlivan: "Ich habe einen hohen Preis dafür gezahlt, dass ich den Mund aufgemacht habe" | ZEITmagazin Bildung in China: Die Kinder müssen bis zum Mond fliegen, mindestens | ZEIT ONLINE Brexit: Verlierer Boris Johnson auf Konfrontationskurs, Tumulte im Unterhaus - WELT TU Darmstadt entwickelt Androiden Roboter in der Zukunft: Die Serie „Better Than Us“ bei Netflix Donald Trump will seine Finanzen offenlegen - SPIEGEL ONLINE Osteuropäer: Deutschland sollte zwei Lehren ziehen - WELT Brexit: Boris Johnson scheitert im Parlament mit Antrag auf Neuwahlen - SPIEGEL ONLINE Brexit: Unterhaus stimmt für Herausgabe von Dokumenten "Micro Era. Medienkunst aus China" im Kulturforum Berlin - SPIEGEL ONLINE "Fridays for Future" in der Krise? Forscherin über die Zukunft der Bewegung - Gerechtigkeit - bento Johnson bringt alte Lösung wieder ins Spiel Bildergalerie: Greser & Lenz: Witze für Deutschland - Bild 50 von 214 - FAZ Greser & Lenz: Gesammelte Werke 2018 8K-Fernseher kommen – doch wer braucht sie eigentlich? | heise online Plauen: Busfahrer verprügelt, weil er Frauen helfen wollte - Chemnitz - Bild.de Brexit-Verhandlung im Newsblog: Wie stimmt das Parlament über Neuwahlen ab? - SPIEGEL ONLINE Die spanische Netflix-Serie „45 Umdrehungen“ Brexit-News - John Bercow kündigt Rücktritt an - Politik - Süddeutsche.de Nach zehn Jahren - Johannes B. Kerner vor Talkshow-Comeback *** BILDplus Inhalt *** - Leute - Bild.de Speaker John Bercow: Rücktritt eines Umstrittenen - Politik - Süddeutsche.de Hongkong-Sorge: Kaeser fordert Marktöffnung von Chinesen Fantastische Vier: Für Smudo gehören Faschismus und AfD zusammen - WELT IAA: Aktivisten fordern Verbot von SUVs - WELT Jeremy Corbyn: In die Enge getrieben | ZEIT ONLINE NPD-Ortsvorsteher Jagsch soll abgewählt werden – Eilantrag von CDU, SPD und FDP - Politik - Bild.de Britischer Parlamentspräsident John Bercow kündigt Rücktritt an Lange Nacht im Parlament: Zwangspause durch Boris Johnson Deutsche Bahn: Die Bauzeit verzögert sich um wenige Jahre ... - Golem.de Frankfurter Strassenjungs: Abschiedskonzert in der Batschkapp Schöner zählen: Fälschungstraining für russische Wahlhelfer Psychiatrien: Patienten werden regelmäßig wegen Personalnot zwangsfixiert - Mitarbeiterumfrage - SPIEGEL ONLINE Russland: Wie eine Moskauer Mittelschichtsfamilie nach Protestsommer wählt - SPIEGEL ONLINE Pegida, Pro Chemnitz und Co: Wie geht man mit denen um? - SPIEGEL ONLINE 
Iran: Fußballfan stirbt, nachdem sie sich in Brand gesteckt hatte - News Ausland - Bild.de Das ABC-Modell nach Albert Ellis
Sawsan Chebli (SPD): „Kopftücher werden vom Kopf gerissen“ - WELT  
Die Neonazis und die verpasste Chance der Ermittler - Berlin - Aktuelle Nachrichten - Berliner Morgenpost 
 


Und wenn wir weiter so schlafen, was die Meteoritenabwehr angeht,
wird's uns vielleicht auch
iwan
mal
so
:


gehen
.

Kommentare

Beliebte Posts aus diesem Blog

·

Es brennt.

Bye, bye Nord Stream 2!