Created
December 4, 2019 01:29
-
-
Save wcharczuk/be197cbfb174d2bcf59df25756444c5b to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"encoding/csv" | |
"fmt" | |
"io" | |
"log" | |
"os" | |
"strconv" | |
) | |
var fields = map[string]int{ | |
"borough": 0, | |
"block": 1, | |
"lot": 2, | |
"cd": 3, | |
"ct2010": 4, | |
"cb2010": 5, | |
"schooldist": 6, | |
"council": 7, | |
"zipcode": 8, | |
"firecomp": 9, | |
"policeprct": 10, | |
"healtharea": 11, | |
"sanitboro": 12, | |
"sanitsub": 13, | |
"address": 14, | |
"zonedist1": 15, | |
"zonedist2": 16, | |
"zonedist3": 17, | |
"zonedist4": 18, | |
"overlay1": 19, | |
"overlay2": 20, | |
"spdist1": 21, | |
"spdist2": 22, | |
"spdist3": 23, | |
"ltdheight": 24, | |
"splitzone": 25, | |
"bldgclass": 26, | |
"landuse": 27, | |
"easements": 28, | |
"ownertype": 29, | |
"ownername": 30, | |
"lotarea": 31, | |
"bldgarea": 32, | |
"comarea": 33, | |
"resarea": 34, | |
"officearea": 35, | |
"retailarea": 36, | |
"garagearea": 37, | |
"strgearea": 38, | |
"factryarea": 39, | |
"otherarea": 40, | |
"areasource": 41, | |
"numbldgs": 42, | |
"numfloors": 43, | |
"unitsres": 44, | |
"unitstotal": 45, | |
"lotfront": 46, | |
"lotdepth": 47, | |
"bldgfront": 48, | |
"bldgdepth": 49, | |
"ext": 50, | |
"proxcode": 51, | |
"irrlotcode": 52, | |
"lottype": 53, | |
"bsmtcode": 54, | |
"assessland": 55, | |
"assesstot": 56, | |
"exempttot": 57, | |
"yearbuilt": 58, | |
"yearalter1": 59, | |
"yearalter2": 60, | |
"histdist": 61, | |
"landmark": 62, | |
"builtfar": 63, | |
"residfar": 64, | |
"commfar": 65, | |
"facilfar": 66, | |
"borocode": 67, | |
"bbl": 68, | |
"condono": 69, | |
"tract2010": 70, | |
"xcoord": 71, | |
"ycoord": 72, | |
"zonemap": 73, | |
"zmcode": 74, | |
"sanborn": 75, | |
"taxmap": 76, | |
"edesignum": 77, | |
"appbbl": 78, | |
"appdate": 79, | |
"mappluto_f": 80, | |
"plutomapid": 81, | |
"version": 82, | |
"sanitdistrict": 83, | |
"healthcenterdistrict": 84, | |
"firm07_flag": 85, | |
"pfirm15_flag": 86, | |
"rpaddate": 87, | |
"dcasdate": 88, | |
"zoningdate": 89, | |
"landmkdate": 90, | |
"basempdate": 91, | |
"masdate": 92, | |
"polidate": 93, | |
"edesigdate": 94, | |
"geom": 95, | |
"dcpedited": 96, | |
} | |
func main() { | |
f, err := os.Open("pluto_19v2.csv") | |
if err != nil { | |
log.Fatal(err) | |
} | |
defer f.Close() | |
reader := csv.NewReader(f) | |
var totalFloors float64 | |
var totalRecords float64 | |
var floors float64 | |
var record []string | |
var zoneMap string | |
for { | |
record, err = reader.Read() | |
if err != nil { | |
if err == io.EOF { | |
break | |
} | |
log.Fatal(err) | |
} | |
if record[fields["borough"]] != "MN" { | |
continue | |
} | |
zoneMap = record[fields["zonemap"]] | |
switch zoneMap { | |
case "8c", "8b", "8d", "12a", "12b", "12c", "12d": | |
default: | |
continue | |
} | |
rawFloors := record[fields["numfloors"]] | |
if rawFloors == "" { | |
continue | |
} | |
floors, err = strconv.ParseFloat(rawFloors, 64) | |
if err != nil { | |
fmt.Printf("%#v\n", record) | |
log.Fatal(err) | |
} | |
totalFloors += floors | |
totalRecords++ | |
} | |
fmt.Printf("average number of floors: %.2f\n", totalFloors/totalRecords) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment