Commit ce600e0

mo khan <mo@mokhan.ca>
2024-05-24 16:57:58
Add demographic counts to README
1 parent 344a51f
Changed files (2)
bin/community
@@ -18,19 +18,160 @@ class Community
   # https://data.calgary.ca/Demographics/Census-by-Community-2019/rkfr-buzb/about_data
   # CLASS,CLASS_CODE,COMM_CODE,NAME,SECTOR,SRG,COMM_STRUCTURE,CNSS_YR,FOIP_IND,RES_CNT,DWELL_CNT,PRSCH_CHLD,ELECT_CNT,EMPLYD_CNT,OWNSHP_CNT,DOG_CNT,CAT_CNT,PUB_SCH,SEP_SCH,PUBSEP_SCH,OTHER_SCH,UNKNWN_SCH,SING_FAMLY,DUPLEX,MULTI_PLEX,APARTMENT,TOWN_HOUSE,MANUF_HOME,CONV_STRUC,COMUNL_HSE,RES_COMM,OTHER_RES,NURSING_HM,OTHER_INST,HOTEL_CNT,OTHER_MISC,APT_NO_RES,APT_OCCPD,APT_OWNED,APT_PERSON,APT_VACANT,APT_UC,APT_NA,CNV_NO_RES,CNV_OCCPD,CNV_OWNED,CNV_PERSON,CNV_VACANT,CNV_UC,CNV_NA,DUP_NO_RES,DUP_OCCPD,DUP_OWNED,DUP_PERSON,DUP_VACANT,DUP_UC,DUP_NA,MFH_NO_RES,MFH_OCCPD,MFH_OWNED,MFH_PERSON,MFH_VACANT,MFH_UC,MFH_NA,MUL_NO_RES,MUL_OCCPD,MUL_OWNED,MUL_PERSON,MUL_VACANT,MUL_UC,MUL_NA,OTH_NO_RES,OTH_OCCPD,OTH_OWNED,OTH_PERSON,OTH_VACANT,OTH_UC,OTH_NA,TWN_NO_RES,TWN_OCCPD,TWN_OWNED,TWN_PERSON,TWN_VACANT,TWN_UC,TWN_NA,SF_NO_RES,SF_OCCPD,SF_OWNED,SF_PERSON,SF_VACANT,SF_UC,SF_NA,OTH_STRTY,DWELSZ_1,DWELSZ_2,DWELSZ_3,DWELSZ_4_5,DWELSZ_6,MALE_CNT,FEMALE_CNT,MALE_0_4,MALE_5_14,MALE_15_19,MALE_20_24,MALE_25_34,MALE_35_44,MALE_45_54,MALE_55_64,MALE_65_74,MALE_75,FEM_0_4,FEM_5_14,FEM_15_19,FEM_20_24,FEM_25_34,FEM_35_44,FEM_45_54,FEM_55_64,FEM_65_74,FEM_75,MF_0_4,MF_5_14,MF_15_19,MF_20_24,MF_25_34,MF_35_44,MF_45_54,MF_55_64,MF_65_74,MF_75,OTHER_CNT,OTHER_0_4,OTHER_5_14,OTHER_15_19,OTHER_20_24,OTHER_25_34,OTHER_35_44,OTHER_45_54,OTHER_55_64,OTHER_65_74,OTHER_75,multipolygon
   COLUMNS = {
-    classification: 0,
-    classification_code: 1,
-    community_code: 2,
-    community: 3,
-    sector: 4,
-    srg: 5,
+    classification: "CLASS",
+    classification_code: "CLASS_CODE",
+    community_code: "COMM_CODE",
+    name: "NAME",
+    sector: "SECTOR",
+    srg: "SRG",
+    # x: "COMM_STRUCTURE",
+    # x: "CNSS_YR",
+    # x: "FOIP_IND",
+    residents_count: "RES_CNT",
+    dwellings_count: "DWELL_CNT",
+    preschool_children_count: "PRSCH_CHLD",
+    voter_count: "ELECT_CNT",
+    employees_count: "EMPLYD_CNT",
+    homeowners_count: "OWNSHP_CNT",
+    dogs_count: "DOG_CNT",
+    cats_count: "CAT_CNT",
+    public_schools_count: "PUB_SCH",
+    other_schools_count: "SEP_SCH",
+    # x: "PUBSEP_SCH",
+    # x: "OTHER_SCH",
+    # x: "UNKNWN_SCH",
+    single_family_homes_count: "SING_FAMLY",
+    duplexes_count: "DUPLEX",
+    multiplex_count: "MULTI_PLEX",
+    apartment_count: "APARTMENT",
+    townhouse_count: "TOWN_HOUSE",
+    mobile_home_count: "MANUF_HOME",
+    # x: "CONV_STRUC",
+    # x: "COMUNL_HSE",
+    # x: "RES_COMM",
+    # x: "OTHER_RES",
+    # x: "NURSING_HM",
+    # x: "OTHER_INST",
+    # x: "HOTEL_CNT",
+    # x: "OTHER_MISC",
+    # x: "APT_NO_RES",
+    # x: "APT_OCCPD",
+    # x: "APT_OWNED",
+    # x: "APT_PERSON",
+    # x: "APT_VACANT",
+    # x: "APT_UC",
+    # x: "APT_NA",
+    # x: "CNV_NO_RES",
+    # x: "CNV_OCCPD",
+    # x: "CNV_OWNED",
+    # x: "CNV_PERSON",
+    # x: "CNV_VACANT",
+    # x: "CNV_UC",
+    # x: "CNV_NA",
+    # x: "DUP_NO_RES",
+    # x: "DUP_OCCPD",
+    # x: "DUP_OWNED",
+    # x: "DUP_PERSON",
+    # x: "DUP_VACANT",
+    # x: "DUP_UC",
+    # x: "DUP_NA",
+    # x: "MFH_NO_RES",
+    # x: "MFH_OCCPD",
+    # x: "MFH_OWNED",
+    # x: "MFH_PERSON",
+    # x: "MFH_VACANT",
+    # x: "MFH_UC",
+    # x: "MFH_NA",
+    # x: "MUL_NO_RES",
+    # x: "MUL_OCCPD",
+    # x: "MUL_OWNED",
+    # x: "MUL_PERSON",
+    # x: "MUL_VACANT",
+    # x: "MUL_UC",
+    # x: "MUL_NA",
+    # x: "OTH_NO_RES",
+    # x: "OTH_OCCPD",
+    # x: "OTH_OWNED",
+    # x: "OTH_PERSON",
+    # x: "OTH_VACANT",
+    # x: "OTH_UC",
+    # x: "OTH_NA",
+    # x: "TWN_NO_RES",
+    # x: "TWN_OCCPD",
+    # x: "TWN_OWNED",
+    # x: "TWN_PERSON",
+    # x: "TWN_VACANT",
+    # x: "TWN_UC",
+    # x: "TWN_NA",
+    # x: "SF_NO_RES",
+    # x: "SF_OCCPD",
+    # x: "SF_OWNED",
+    # x: "SF_PERSON",
+    # x: "SF_VACANT",
+    # x: "SF_UC",
+    # x: "SF_NA",
+    # x: "OTH_STRTY",
+    # x: "DWELSZ_1",
+    # x: "DWELSZ_2",
+    # x: "DWELSZ_3",
+    # x: "DWELSZ_4_5",
+    # x: "DWELSZ_6",
+    # male_count: "MALE_CNT",
+    # female_count: "FEMALE_CNT",
+    # male_0_4: "MALE_0_4",
+    # male_5_14: "MALE_5_14",
+    # male_5_19: "MALE_15_19",
+    # x: "MALE_20_24",
+    # x: "MALE_25_34",
+    # x: "MALE_35_44",
+    # x: "MALE_45_54",
+    # x: "MALE_55_64",
+    # x: "MALE_65_74",
+    # x: "MALE_75",
+    # x: "FEM_0_4",
+    # x: "FEM_5_14",
+    # x: "FEM_15_19",
+    # x: "FEM_20_24",
+    # x: "FEM_25_34",
+    # x: "FEM_35_44",
+    # x: "FEM_45_54",
+    # x: "FEM_55_64",
+    # x: "FEM_65_74",
+    # x: "FEM_75",
+    # x: "MF_0_4",
+    # x: "MF_5_14",
+    # x: "MF_15_19",
+    # x: "MF_20_24",
+    # x: "MF_25_34",
+    # x: "MF_35_44",
+    # x: "MF_45_54",
+    # x: "MF_55_64",
+    # x: "MF_65_74",
+    # x: "MF_75",
+    # x: "OTHER_CNT",
+    # x: "OTHER_0_4",
+    # x: "OTHER_5_14",
+    # x: "OTHER_15_19",
+    # x: "OTHER_20_24",
+    # x: "OTHER_25_34",
+    # x: "OTHER_35_44",
+    # x: "OTHER_45_54",
+    # x: "OTHER_55_64",
+    # x: "OTHER_65_74",
+    # x: "OTHER_75",
+    # x: "multipolygon",
   }.freeze
+
   def initialize(row)
     @row = row
   end
 
   def name
-    @row[COLUMNS[:community]]
+    self[:name]
+  end
+
+  def [](name)
+    @row[COLUMNS[name]] || @row.fetch(name.to_s.upcase)
   end
 
   def create_directory_in(root_dir)
@@ -49,7 +190,7 @@ class Census
   end
 
   def each
-    CSV.foreach("data/Census_by_Community_2019_20240524.csv") do |row|
+    CSV.foreach("data/Census_by_Community_2019_20240524.csv", headers: true) do |row|
       yield Community.new(row)
     end
   end
templates/community.md.erb
@@ -1,1 +1,11 @@
-# <%= name %>
+# <%= name %> (<%= self[:community_code] %>)
+
+* # of Residents: <%= self[:residents_count] %>
+
+| Age   | Male                     | Female                   | Non-binary                |
+| ---   | ----                     | ------                   | ----------                |
+| 20-24 | <%= self[:male_20_24] %> | <%= self[:fem_20_24] %>  | <%= self[:other_20_24] %> |
+| 25-34 | <%= self[:male_25_34] %> | <%= self[:fem_25_34] %>  | <%= self[:other_25_34] %> |
+| 35-44 | <%= self[:male_35_44] %> | <%= self[:fem_35_44] %>  | <%= self[:other_35_44] %> |
+| 45-54 | <%= self[:male_45_54] %> | <%= self[:fem_45_54] %>  | <%= self[:other_45_54] %> |
+|       | <%= self[:male_cnt] %>   | <%= self[:female_cnt] %> | <%= self[:other_cnt] %>   |