saturn·

nyc housing nyc rent burden by tract

saturn notebook · generated 2026-05-01 Report Notebook

Overview

Source: /home/coolhand/html/datavis/data_trove/data/urban/nyc_housing/nyc_rent_burden_by_tract.csv

Saturn profiled 2,327 rows across 16 columns. The stats below are deterministic and machine-readable; the prose is a language-model interpretation of those stats (opt-in, added after the fact, never sees raw rows).

[2]:
!pip install saturn-dissect
import subprocess
subprocess.run([
    "saturn", "analyze", "/home/coolhand/html/datavis/data_trove/data/urban/nyc_housing/nyc_rent_burden_by_tract.csv",
    "--findings", "nyc_housing-nyc_rent_burden_by_tract.json",
    "--llm", "anthropic:claude-opus-4-7",
])

Summary confidence: high

This dataset covers 2,327 NYC census tracts with 16 columns describing renter households and rent burden levels across the five boroughs. All tracts are in New York State (state is constant at 36) and split across five counties, with Brooklyn (Kings) the largest share at about 34.6% of tracts and Staten Island the smallest at 126 tracts. The headline housing-affordability metric, pct_rent_burdened, is roughly symmetric around a median of 50% with an IQR of 40.9 to 58.8, indicating that in a typical tract about half of renters spend 30%+ of income on rent. The raw count columns (rent_burdened, rent_50_pct_or_more, total_renter_households) are right-skewed with notable outliers, so look at the burden percentages first for cross-tract comparison and reserve the count fields for identifying the highest-volume tracts.

citing: row_count · column_count · columns · kinds

Out[4]:

saturn.schema() · 16 columns

column kind n null% unique alerts
total_renter_households numeric 2,327 0.0% 1,418
rent_30_to_34_9_pct numeric 2,327 0.0% 355 high_skew outliers
rent_35_to_39_9_pct numeric 2,327 0.0% 270 high_skew
rent_40_to_49_9_pct numeric 2,327 0.0% 322 high_skew
rent_50_pct_or_more numeric 2,327 0.0% 706
NAME text 2,327 0.0% 2,327 near_unique
state numeric 2,327 0.0% 1 constant
county numeric 2,327 0.0% 5
tract numeric 2,327 0.0% 1,530 high_skew
county_name categorical 2,327 0.0% 5
moderate_burden numeric 2,327 0.0% 639
severe_burden numeric 2,327 0.0% 706
pct_moderate_burden numeric 2,327 4.4% 461
pct_severe_burden numeric 2,327 4.4% 518
rent_burdened numeric 2,327 0.0% 1,013
pct_rent_burdened numeric 2,327 4.4% 596
Fig 1.
county_name · Tract counts by borough show Brooklyn and Queens dominate the sample while Staten Island is thinly represented.
Show data table
Top values for county_name (5 unique shown, of 5 total).
valuecountshare
Brooklyn (Kings)80534.6%
Queens72531.2%
Bronx36115.5%
Manhattan (New York)31013.3%
Staten Island (Richmond)1265.4%
Fig 2.
pct_rent_burdened · Distribution of the share of rent-burdened households per tract; centered near 50% with most tracts between 41% and 59%.
Show data table
Histogram bins for pct_rent_burdened (median: 50.0).
bincount
0 – 2.58
2.5 – 53
5 – 7.51
7.5 – 105
10 – 12.57
12.5 – 158
15 – 17.512
17.5 – 2014
20 – 22.514
22.5 – 2524
25 – 27.535
27.5 – 3042
30 – 32.553
32.5 – 3580
35 – 37.591
37.5 – 40119
40 – 42.5129
42.5 – 45144
45 – 47.5146
47.5 – 50177
50 – 52.5139
52.5 – 55178
55 – 57.5162
57.5 – 60131
60 – 62.5117
62.5 – 6597
65 – 67.560
67.5 – 7057
70 – 72.554
72.5 – 7528
75 – 77.520
77.5 – 8025
80 – 82.58
82.5 – 854
85 – 87.512
87.5 – 905
90 – 92.55
92.5 – 953
95 – 97.50
97.5 – 1008
Fig 3.
pct_severe_burden · Severe burden share per tract (median 26.2%) highlights how widespread extreme rent stress is across NYC.
Show data table
Histogram bins for pct_severe_burden (median: 26.2).
bincount
0 – 2.545
2.5 – 514
5 – 7.541
7.5 – 1053
10 – 12.594
12.5 – 15115
15 – 17.5131
17.5 – 20160
20 – 22.5170
22.5 – 25188
25 – 27.5188
27.5 – 30168
30 – 32.5173
32.5 – 35157
35 – 37.5115
37.5 – 4097
40 – 42.573
42.5 – 4562
45 – 47.544
47.5 – 5035
50 – 52.529
52.5 – 5519
55 – 57.518
57.5 – 6012
60 – 62.56
62.5 – 654
65 – 67.54
67.5 – 702
70 – 72.51
72.5 – 751
75 – 77.51
77.5 – 801
80 – 82.50
82.5 – 851
85 – 87.51
87.5 – 900
90 – 92.51
92.5 – 950
95 – 97.50
97.5 – 1001
Fig 4.
total_renter_households · Right-skewed renter household counts; most tracts sit under ~1,400 but a long tail reaches above 8,000.
Show data table
Histogram bins for total_renter_households (median: 726.0).
bincount
0 – 205.2349
205.2 – 410.4358
410.4 – 615.7292
615.7 – 820.9268
820.9 – 1026207
1026 – 1231175
1231 – 1437168
1437 – 1642110
1642 – 1847100
1847 – 205268
2052 – 225763
2257 – 246342
2463 – 266836
2668 – 287322
2873 – 307819
3078 – 328417
3284 – 34896
3489 – 36945
3694 – 38994
3899 – 41046
4104 – 43105
4310 – 45153
4515 – 47201
4720 – 49250
4925 – 51311
5131 – 53361
5336 – 55410
5541 – 57460
5746 – 59520
5952 – 61570
6157 – 63620
6362 – 65670
6567 – 67720
6772 – 69780
6978 – 71830
7183 – 73880
7388 – 75930
7593 – 77990
7799 – 80040
8004 – 82091
Fig 5.
rent_burdened · Raw count of rent-burdened households per tract; useful for spotting the highest-volume tracts driving citywide totals.
Show data table
Histogram bins for rent_burdened (median: 358.0).
bincount
0 – 78.83310
78.83 – 157.7256
157.7 – 236.5264
236.5 – 315.3231
315.3 – 394.1190
394.1 – 473180
473 – 551.8147
551.8 – 630.6113
630.6 – 709.4108
709.4 – 788.275
788.2 – 867.191
867.1 – 945.973
945.9 – 102557
1025 – 110439
1104 – 118241
1182 – 126123
1261 – 134026
1340 – 141920
1419 – 149819
1498 – 157611
1576 – 165516
1655 – 17346
1734 – 18135
1813 – 18926
1892 – 19714
1971 – 20492
2049 – 21283
2128 – 22075
2207 – 22860
2286 – 23650
2365 – 24441
2444 – 25221
2522 – 26012
2601 – 26801
2680 – 27590
2759 – 28380
2838 – 29170
2917 – 29950
2995 – 30740
3074 – 31531
Fig 6.
Per-column null rate across the corpus. Columns are ordered by input position.
Show data table
Per-column null rate across the corpus.
columnkindnull %
total_renter_householdsnumeric0.0%
rent_30_to_34_9_pctnumeric0.0%
rent_35_to_39_9_pctnumeric0.0%
rent_40_to_49_9_pctnumeric0.0%
rent_50_pct_or_morenumeric0.0%
NAMEtext0.0%
statenumeric0.0%
countynumeric0.0%
tractnumeric0.0%
county_namecategorical0.0%
moderate_burdennumeric0.0%
severe_burdennumeric0.0%
pct_moderate_burdennumeric4.4%
pct_severe_burdennumeric4.4%
rent_burdenednumeric0.0%
pct_rent_burdenednumeric4.4%
Fig 7.
Pearson correlation across numeric columns (sampled, bounded).
Show data table
Pearson correlation across 12 numeric columns (values clipped to 2 decimals).
total_renter_householdsrent_30_to_34_9_pctrent_35_to_39_9_pctrent_40_to_49_9_pctrent_50_pct_or_morestatecountytractmoderate_burdensevere_burdenpct_moderate_burdenpct_severe_burden
total_renter_households+1.00+0.76+0.73+0.76+0.84+nan-0.18-0.23+0.89+0.84-0.03+0.07
rent_30_to_34_9_pct+0.76+1.00+0.55+0.57+0.56+nan-0.14-0.18+0.87+0.56-0.04+0.09
rent_35_to_39_9_pct+0.73+0.55+1.00+0.60+0.61+nan-0.13-0.12+0.81+0.61-0.01+0.04
rent_40_to_49_9_pct+0.76+0.57+0.60+1.00+0.62+nan-0.15-0.15+0.85+0.62-0.02+0.03
rent_50_pct_or_more+0.84+0.56+0.61+0.62+1.00+nan-0.32-0.21+0.70+1.00+0.03+0.11
state+nan+nan+nan+nan+nan+nan+nan+nan+nan+nan+nan+nan
county-0.18-0.14-0.13-0.15-0.32+nan+1.00+0.18-0.16-0.32-0.14-0.07
tract-0.23-0.18-0.12-0.15-0.21+nan+0.18+1.00-0.18-0.21-0.04-0.04
moderate_burden+0.89+0.87+0.81+0.85+0.70+nan-0.16-0.18+1.00+0.70-0.03+0.06
severe_burden+0.84+0.56+0.61+0.62+1.00+nan-0.32-0.21+0.70+1.00+0.03+0.11
pct_moderate_burden-0.03-0.04-0.01-0.02+0.03+nan-0.14-0.04-0.03+0.03+1.00-0.26
pct_severe_burden+0.07+0.09+0.04+0.03+0.11+nan-0.07-0.04+0.06+0.11-0.26+1.00

total_renter_households numeric feature

This column counts renter households per record, ranging from 0 to 8209 with a median of 726 and mean of 946. The distribution is right-skewed (skew 1.59, kurtosis 4.63) with 69 outliers (2.97%) on the high end, and 4.38% of rows are zero. No nulls, and 1418 unique values across 2327 rows suggest some repeated counts.

Treatment: Log-transform (with zero handling) before regression due to right skew.

anthropic:claude-opus-4-7 · confidence high
Out[13]:

saturn.columns["total_renter_households"].stats

statvalue
n2,327
nulls0 (0.0%)
unique1,418
min 0
max 8,209
mean 946.1
median 726
std 815.4
q1 346
q3 1,357
iqr 1,011
skew 1.595
kurtosis 4.627
n_outliers 69
outlier_rate 0.02965
zero_rate 0.04383
Fig 8.
Distribution of total_renter_households. Vertical dash marks the median.
Show data table
Histogram bins for total_renter_households (median: 726.0).
bincount
0 – 205.2349
205.2 – 410.4358
410.4 – 615.7292
615.7 – 820.9268
820.9 – 1026207
1026 – 1231175
1231 – 1437168
1437 – 1642110
1642 – 1847100
1847 – 205268
2052 – 225763
2257 – 246342
2463 – 266836
2668 – 287322
2873 – 307819
3078 – 328417
3284 – 34896
3489 – 36945
3694 – 38994
3899 – 41046
4104 – 43105
4310 – 45153
4515 – 47201
4720 – 49250
4925 – 51311
5131 – 53361
5336 – 55410
5541 – 57460
5746 – 59520
5952 – 61570
6157 – 63620
6362 – 65670
6567 – 67720
6772 – 69780
6978 – 71830
7183 – 73880
7388 – 75930
7593 – 77990
7799 – 80040
8004 – 82091

rent_30_to_34_9_pct numeric feature

This appears to be a count of households paying 30% to 34.9% of income on rent within some geographic unit (likely census tract or ZIP). The distribution is heavily right-skewed (skew 2.76, kurtosis 13.86) with median 51 but mean 83 and max 1205, and 16.2% of rows are zero. About 5.3% of values (124 rows) flag as outliers, suggesting a few large areas dominate the tail.

Treatment: Log1p-transform or convert to a share of total households before modelling.

anthropic:claude-opus-4-7 · confidence high
Out[16]:

saturn.columns["rent_30_to_34_9_pct"].stats

statvalue
n2,327
nulls0 (0.0%)
unique355
min 0
max 1,205
mean 83.05
median 51
std 100.3
q1 15
q3 116
iqr 101
skew 2.755
kurtosis 13.86
n_outliers 124
outlier_rate 0.05329
zero_rate 0.1616
alert: high_skewskew=+2.76
alert: outliers5.3% rows beyond 1.5 IQR
Fig 9.
Distribution of rent_30_to_34_9_pct. Vertical dash marks the median.
Show data table
Histogram bins for rent_30_to_34_9_pct (median: 51.0).
bincount
0 – 30.12836
30.12 – 60.25444
60.25 – 90.38275
90.38 – 120.5217
120.5 – 150.6152
150.6 – 180.8105
180.8 – 210.990
210.9 – 24148
241 – 271.141
271.1 – 301.225
301.2 – 331.417
331.4 – 361.521
361.5 – 391.615
391.6 – 421.89
421.8 – 451.911
451.9 – 4825
482 – 512.12
512.1 – 542.22
542.2 – 572.44
572.4 – 602.51
602.5 – 632.60
632.6 – 662.81
662.8 – 692.91
692.9 – 7230
723 – 753.11
753.1 – 783.22
783.2 – 813.40
813.4 – 843.50
843.5 – 873.61
873.6 – 903.80
903.8 – 933.90
933.9 – 9640
964 – 994.10
994.1 – 10240
1024 – 10540
1054 – 10840
1084 – 11150
1115 – 11450
1145 – 11750
1175 – 12051

rent_35_to_39_9_pct numeric feature

This column appears to be a count of housing units (or households) paying 35% to 39.9% of income on rent, aggregated per geographic unit. The distribution is heavily right-skewed (skew 2.40, kurtosis 9.27) with median 35 but max 633, and nearly 20% of rows are zero (zero_rate 0.196), pointing to many small or sparsely populated areas alongside a long tail of larger ones. 110 outliers (4.7%) sit above the IQR fence of 10–83.

Treatment: Log1p-transform before modelling to tame the skew and zero inflation.

anthropic:claude-opus-4-7 · confidence high
Out[19]:

saturn.columns["rent_35_to_39_9_pct"].stats

statvalue
n2,327
nulls0 (0.0%)
unique270
min 0
max 633
mean 58.35
median 35
std 69.85
q1 10
q3 83
iqr 73
skew 2.395
kurtosis 9.275
n_outliers 110
outlier_rate 0.04727
zero_rate 0.1964
alert: high_skewskew=+2.40
Fig 10.
Distribution of rent_35_to_39_9_pct. Vertical dash marks the median.
Show data table
Histogram bins for rent_35_to_39_9_pct (median: 35.0).
bincount
0 – 15.82719
15.82 – 31.65371
31.65 – 47.47261
47.47 – 63.3212
63.3 – 79.12163
79.12 – 94.95103
94.95 – 110.897
110.8 – 126.677
126.6 – 142.477
142.4 – 158.258
158.2 – 174.132
174.1 – 189.941
189.9 – 205.720
205.7 – 221.518
221.5 – 237.415
237.4 – 253.210
253.2 – 26914
269 – 284.85
284.8 – 300.73
300.7 – 316.58
316.5 – 332.36
332.3 – 348.12
348.1 – 3642
364 – 379.82
379.8 – 395.61
395.6 – 411.41
411.4 – 427.32
427.3 – 443.12
443.1 – 458.90
458.9 – 474.80
474.8 – 490.61
490.6 – 506.40
506.4 – 522.20
522.2 – 5380
538 – 553.90
553.9 – 569.72
569.7 – 585.50
585.5 – 601.41
601.4 – 617.20
617.2 – 6331

rent_40_to_49_9_pct numeric feature

Likely a count of households whose rent falls in the 40-49.9% income bracket per geographic unit. The distribution is heavily right-skewed (skew 2.14, kurtosis 7.14) with a median of 49 but a max of 740, and 15.6% of rows are zero, suggesting many small areas with no such households alongside a long tail of large ones. About 4.8% of values are flagged as outliers.

Treatment: log1p-transform before regression to tame the right skew.

anthropic:claude-opus-4-7 · confidence high
Out[22]:

saturn.columns["rent_40_to_49_9_pct"].stats

statvalue
n2,327
nulls0 (0.0%)
unique322
min 0
max 740
mean 74.68
median 49
std 83.79
q1 14
q3 106
iqr 92
skew 2.137
kurtosis 7.139
n_outliers 111
outlier_rate 0.0477
zero_rate 0.1556
alert: high_skewskew=+2.14
Fig 11.
Distribution of rent_40_to_49_9_pct. Vertical dash marks the median.
Show data table
Histogram bins for rent_40_to_49_9_pct (median: 49.0).
bincount
0 – 18.5671
18.5 – 37306
37 – 55.5270
55.5 – 74201
74 – 92.5196
92.5 – 111134
111 – 129.5102
129.5 – 14886
148 – 166.578
166.5 – 18563
185 – 203.539
203.5 – 22238
222 – 240.526
240.5 – 25927
259 – 277.516
277.5 – 29616
296 – 314.513
314.5 – 33311
333 – 351.55
351.5 – 3703
370 – 388.55
388.5 – 4073
407 – 425.54
425.5 – 4441
444 – 462.54
462.5 – 4810
481 – 499.51
499.5 – 5182
518 – 536.50
536.5 – 5550
555 – 573.52
573.5 – 5920
592 – 610.51
610.5 – 6291
629 – 647.51
647.5 – 6660
666 – 684.50
684.5 – 7030
703 – 721.50
721.5 – 7401

rent_50_pct_or_more numeric feature

This column likely counts households (or housing units) spending 50% or more of income on rent within each geographic record. Values span 0 to 1918 with a median of 184 and mean of 253.2, and the distribution is right-skewed (skew 1.60, kurtosis 3.44) with 87 high-end outliers (3.7%). About 6.3% of rows are zero and there are no nulls across 2327 rows.

Treatment: Log1p-transform before regression to tame the right skew, and consider normalizing by total renter households for cross-area comparability.

anthropic:claude-opus-4-7 · confidence medium
Out[25]:

saturn.columns["rent_50_pct_or_more"].stats

statvalue
n2,327
nulls0 (0.0%)
unique706
min 0
max 1,918
mean 253.2
median 184
std 236.6
q1 82
q3 360
iqr 278
skew 1.603
kurtosis 3.435
n_outliers 87
outlier_rate 0.03739
zero_rate 0.06274
Fig 12.
Distribution of rent_50_pct_or_more. Vertical dash marks the median.
Show data table
Histogram bins for rent_50_pct_or_more (median: 184.0).
bincount
0 – 47.95368
47.95 – 95.9293
95.9 – 143.9290
143.9 – 191.8249
191.8 – 239.8186
239.8 – 287.7175
287.7 – 335.7122
335.7 – 383.6114
383.6 – 431.6101
431.6 – 479.583
479.5 – 527.562
527.5 – 575.445
575.4 – 623.448
623.4 – 671.331
671.3 – 719.241
719.2 – 767.228
767.2 – 815.215
815.2 – 863.112
863.1 – 911.114
911.1 – 9597
959 – 10079
1007 – 10558
1055 – 11039
1103 – 11513
1151 – 11994
1199 – 12475
1247 – 12951
1295 – 13432
1343 – 13910
1391 – 14380
1438 – 14860
1486 – 15340
1534 – 15820
1582 – 16301
1630 – 16780
1678 – 17260
1726 – 17740
1774 – 18220
1822 – 18700
1870 – 19181

NAME text identifier

This column holds fully-qualified Census tract names for New York City, with every one of the 2327 rows unique and non-null. Lengths cluster tightly between 38 and 46 characters and every record contains the boilerplate tokens 'new', 'york', 'census', 'tract', and 'county;', followed by a borough name (Kings 805, Queens 725, Bronx 361, Richmond 126). It functions as a row identifier rather than a feature, though the embedded borough token is the only varying signal worth extracting.

Treatment: Treat as a unique key; if needed, parse out the borough token as a categorical feature and drop the rest.

anthropic:claude-opus-4-7 · confidence high
Out[28]:

saturn.columns["NAME"].stats

statvalue
n2,327
nulls0 (0.0%)
unique2,327
len_min 38
len_max 46
len_mean 41.65
len_median 41
len_p95 46
word_mean 7.133
word_median 7
n_empty 0
n_duplicates 0
duplicate_rate 0
vocab_size 1,539
readability_flesch_mean 91.45
emoji_rate 0
url_rate 0
one_word_rate 0
allcaps_rate 0
boilerplate_rate 0
alert: near_unique100.0% of rows are unique strings
Fig 13.
Character-length distribution for NAME.
Show data table
Character-length distribution for NAME (mean: 41.64890416845724).
charscount
38 – 387
38 – 380
38 – 390
39 – 390
39 – 390
39 – 39104
39 – 390
39 – 400
40 – 400
40 – 400
40 – 40785
40 – 400
40 – 410
41 – 410
41 – 410
41 – 41447
41 – 410
41 – 420
42 – 420
42 – 420
42 – 42200
42 – 420
42 – 430
43 – 430
43 – 430
43 – 43378
43 – 430
43 – 440
44 – 440
44 – 440
44 – 44190
44 – 440
44 – 450
45 – 450
45 – 450
45 – 4582
45 – 450
45 – 460
46 – 460
46 – 46134

state numeric metadata

The column 'state' is a numeric field that holds the single value 36 across all 2327 rows with no nulls. It carries a 'constant' alert and contributes zero variance (std 0.0, n_unique 1), suggesting it is a leftover filter key (perhaps a state/region code) rather than a usable feature.

Treatment: Drop before modelling; constant column adds no signal.

anthropic:claude-opus-4-7 · confidence high
Out[31]:

saturn.columns["state"].stats

statvalue
n2,327
nulls0 (0.0%)
unique1
min 36
max 36
mean 36
median 36
std 0
q1 36
q3 36
iqr 0
skew 0
kurtosis 0
n_outliers 0
outlier_rate 0
zero_rate 0
alert: constantonly one distinct value
Fig 14.
Distribution of state. Vertical dash marks the median.
Show data table
Histogram bins for state (median: 36.0).
bincount
35.5 – 35.520
35.52 – 35.550
35.55 – 35.580
35.58 – 35.60
35.6 – 35.620
35.62 – 35.650
35.65 – 35.670
35.67 – 35.70
35.7 – 35.730
35.73 – 35.750
35.75 – 35.770
35.77 – 35.80
35.8 – 35.830
35.83 – 35.850
35.85 – 35.880
35.88 – 35.90
35.9 – 35.920
35.92 – 35.950
35.95 – 35.980
35.98 – 360
36 – 36.022327
36.02 – 36.050
36.05 – 36.080
36.08 – 36.10
36.1 – 36.120
36.12 – 36.150
36.15 – 36.170
36.17 – 36.20
36.2 – 36.230
36.23 – 36.250
36.25 – 36.270
36.27 – 36.30
36.3 – 36.330
36.33 – 36.350
36.35 – 36.380
36.38 – 36.40
36.4 – 36.420
36.42 – 36.450
36.45 – 36.480
36.48 – 36.50

county numeric identifier

Despite being typed numeric, `county` only takes 5 distinct values across 2327 rows (min 5, max 85), so these integers are almost certainly encoded county identifiers rather than measurements. The distribution is left-skewed (skew -0.72) with median 47 below mean 55, and quartiles land exactly on observed codes (Q1=47, Q3=81), confirming a small categorical support. No nulls or outliers are reported.

Treatment: Cast to categorical and one-hot encode (or treat as a lookup key) rather than using as a continuous feature.

anthropic:claude-opus-4-7 · confidence high
Out[34]:

saturn.columns["county"].stats

statvalue
n2,327
nulls0 (0.0%)
unique5
min 5
max 85
mean 55
median 47
std 25.97
q1 47
q3 81
iqr 34
skew -0.72
kurtosis -0.4531
n_outliers 0
outlier_rate 0
zero_rate 0
Fig 15.
Distribution of county. Vertical dash marks the median.
Show data table
Histogram bins for county (median: 47.0).
bincount
5 – 7361
7 – 90
9 – 110
11 – 130
13 – 150
15 – 170
17 – 190
19 – 210
21 – 230
23 – 250
25 – 270
27 – 290
29 – 310
31 – 330
33 – 350
35 – 370
37 – 390
39 – 410
41 – 430
43 – 450
45 – 470
47 – 49805
49 – 510
51 – 530
53 – 550
55 – 570
57 – 590
59 – 610
61 – 63310
63 – 650
65 – 670
67 – 690
69 – 710
71 – 730
73 – 750
75 – 770
77 – 790
79 – 810
81 – 83725
83 – 85126

tract numeric identifier

Census tract codes stored as integers, with 1530 unique values across 2327 rows and no nulls. The distribution is severely right-skewed (skew 10.14, kurtosis 189.82) with a max of 990100 against a median of 30100, which is characteristic of tract identifiers rather than a measurable quantity. The 63 flagged outliers and the heavy tail are artifacts of the coding scheme, not anomalies to clean.

Treatment: Treat as a categorical geographic key; do not use as a numeric feature.

anthropic:claude-opus-4-7 · confidence high
Out[37]:

saturn.columns["tract"].stats

statvalue
n2,327
nulls0 (0.0%)
unique1,530
min 100
max 990,100
mean 4.225e+04
median 30,100
std 4.827e+04
q1 15,200
q3 5.79e+04
iqr 4.27e+04
skew 10.14
kurtosis 189.8
n_outliers 63
outlier_rate 0.02707
zero_rate 0
alert: high_skewskew=+10.14
Fig 16.
Distribution of tract. Vertical dash marks the median.
Show data table
Histogram bins for tract (median: 30100.0).
bincount
100 – 2.485e+04982
2.485e+04 – 4.96e+04617
4.96e+04 – 7.435e+04329
7.435e+04 – 9.91e+04197
9.91e+04 – 1.238e+05145
1.238e+05 – 1.486e+0537
1.486e+05 – 1.734e+0517
1.734e+05 – 1.981e+050
1.981e+05 – 2.228e+050
2.228e+05 – 2.476e+050
2.476e+05 – 2.724e+050
2.724e+05 – 2.971e+050
2.971e+05 – 3.218e+050
3.218e+05 – 3.466e+050
3.466e+05 – 3.714e+050
3.714e+05 – 3.961e+050
3.961e+05 – 4.208e+050
4.208e+05 – 4.456e+050
4.456e+05 – 4.704e+050
4.704e+05 – 4.951e+050
4.951e+05 – 5.198e+050
5.198e+05 – 5.446e+050
5.446e+05 – 5.694e+050
5.694e+05 – 5.941e+050
5.941e+05 – 6.188e+050
6.188e+05 – 6.436e+050
6.436e+05 – 6.684e+050
6.684e+05 – 6.931e+050
6.931e+05 – 7.178e+050
7.178e+05 – 7.426e+050
7.426e+05 – 7.674e+050
7.674e+05 – 7.921e+050
7.921e+05 – 8.168e+050
8.168e+05 – 8.416e+050
8.416e+05 – 8.664e+050
8.664e+05 – 8.911e+050
8.911e+05 – 9.158e+050
9.158e+05 – 9.406e+050
9.406e+05 – 9.654e+050
9.654e+05 – 9.901e+053

county_name categorical feature

This column is the NYC borough/county name, with exactly 5 unique values matching the city's five boroughs and no nulls across 2327 rows. Brooklyn (Kings) leads at 34.6% (805), followed by Queens (725), Bronx (361), Manhattan (310), and Staten Island (126); entropy ratio of 0.898 indicates a fairly even spread despite Staten Island being noticeably underrepresented.

Treatment: One-hot encode as a low-cardinality categorical feature.

anthropic:claude-opus-4-7 · confidence high
Out[40]:

saturn.columns["county_name"].stats

statvalue
n2,327
nulls0 (0.0%)
unique5
top_value Brooklyn (Kings)
top_rate 0.3459
cardinality 5
entropy 2.086
entropy_ratio 0.8985
Fig 17.
Top values for county_name.
Show data table
Top values for county_name (5 unique shown, of 5 total).
valuecountshare
Brooklyn (Kings)80534.6%
Queens72531.2%
Bronx36115.5%
Manhattan (New York)31013.3%
Staten Island (Richmond)1265.4%

moderate_burden numeric feature

A non-negative integer count column named 'moderate_burden', with 2327 rows, no nulls, and 639 distinct values ranging from 0 to 1732 (median 159, mean 216). The distribution is right-skewed (skew 1.93, kurtosis 6.05) with 86 outliers (3.7%) and 6.4% exact zeros, suggesting a long tail of high-burden cases over a typical mid-hundreds baseline.

Treatment: Apply a log1p transform before regression to tame the right skew.

anthropic:claude-opus-4-7 · confidence high
Out[43]:

saturn.columns["moderate_burden"].stats

statvalue
n2,327
nulls0 (0.0%)
unique639
min 0
max 1,732
mean 216.1
median 159
std 210.4
q1 64
q3 311
iqr 247
skew 1.934
kurtosis 6.052
n_outliers 86
outlier_rate 0.03696
zero_rate 0.06403
Fig 18.
Distribution of moderate_burden. Vertical dash marks the median.
Show data table
Histogram bins for moderate_burden (median: 159.0).
bincount
0 – 43.3431
43.3 – 86.6317
86.6 – 129.9256
129.9 – 173.2245
173.2 – 216.5190
216.5 – 259.8149
259.8 – 303.1137
303.1 – 346.4109
346.4 – 389.7105
389.7 – 43389
433 – 476.361
476.3 – 519.653
519.6 – 562.928
562.9 – 606.233
606.2 – 649.528
649.5 – 692.817
692.8 – 736.111
736.1 – 779.416
779.4 – 822.77
822.7 – 86610
866 – 909.36
909.3 – 952.69
952.6 – 995.92
995.9 – 10390
1039 – 10823
1082 – 11266
1126 – 11691
1169 – 12120
1212 – 12561
1256 – 12991
1299 – 13421
1342 – 13860
1386 – 14290
1429 – 14720
1472 – 15160
1516 – 15593
1559 – 16020
1602 – 16451
1645 – 16890
1689 – 17321

severe_burden numeric feature

Numeric count-like column 'severe_burden' spanning 0 to 1918 across 2327 rows with no nulls and 706 distinct values. The distribution is right-skewed (skew 1.60, kurtosis 3.44) with median 184 well below mean 253.18, an IQR of 278, and 87 outliers (3.7%); 6.3% of rows are exactly zero.

Treatment: Apply a log1p transform before regression to tame the right skew and zero inflation.

anthropic:claude-opus-4-7 · confidence high
Out[46]:

saturn.columns["severe_burden"].stats

statvalue
n2,327
nulls0 (0.0%)
unique706
min 0
max 1,918
mean 253.2
median 184
std 236.6
q1 82
q3 360
iqr 278
skew 1.603
kurtosis 3.435
n_outliers 87
outlier_rate 0.03739
zero_rate 0.06274
Fig 19.
Distribution of severe_burden. Vertical dash marks the median.
Show data table
Histogram bins for severe_burden (median: 184.0).
bincount
0 – 47.95368
47.95 – 95.9293
95.9 – 143.9290
143.9 – 191.8249
191.8 – 239.8186
239.8 – 287.7175
287.7 – 335.7122
335.7 – 383.6114
383.6 – 431.6101
431.6 – 479.583
479.5 – 527.562
527.5 – 575.445
575.4 – 623.448
623.4 – 671.331
671.3 – 719.241
719.2 – 767.228
767.2 – 815.215
815.2 – 863.112
863.1 – 911.114
911.1 – 9597
959 – 10079
1007 – 10558
1055 – 11039
1103 – 11513
1151 – 11994
1199 – 12475
1247 – 12951
1295 – 13432
1343 – 13910
1391 – 14380
1438 – 14860
1486 – 15340
1534 – 15820
1582 – 16301
1630 – 16780
1678 – 17260
1726 – 17740
1774 – 18220
1822 – 18700
1870 – 19181

pct_moderate_burden numeric feature

Percentage of households with a moderate housing-cost burden, expressed on a 0-100 scale (min 0.0, max 100.0, mean 22.74, median 21.8). The distribution is right-skewed (skew 1.51, kurtosis 6.70) with a tight IQR of 12.3 around the median but a long upper tail producing 59 outliers (2.65%). About 4.38% of rows are null and 2.11% are exact zeros, both worth checking before modelling.

Treatment: Impute the 4.38% nulls and consider a mild transform or winsorisation given the right skew before regression.

anthropic:claude-opus-4-7 · confidence high
Out[49]:

saturn.columns["pct_moderate_burden"].stats

statvalue
n2,327
nulls102 (4.4%)
unique461
min 0
max 100
mean 22.74
median 21.8
std 11.36
q1 15.9
q3 28.2
iqr 12.3
skew 1.509
kurtosis 6.704
n_outliers 59
outlier_rate 0.02652
zero_rate 0.02112
Fig 20.
Distribution of pct_moderate_burden. Vertical dash marks the median.
Show data table
Histogram bins for pct_moderate_burden (median: 21.8).
bincount
0 – 2.555
2.5 – 524
5 – 7.549
7.5 – 1078
10 – 12.5108
12.5 – 15160
15 – 17.5213
17.5 – 20251
20 – 22.5238
22.5 – 25240
25 – 27.5193
27.5 – 30172
30 – 32.5129
32.5 – 3579
35 – 37.571
37.5 – 4041
40 – 42.531
42.5 – 4524
45 – 47.514
47.5 – 5012
50 – 52.56
52.5 – 554
55 – 57.54
57.5 – 606
60 – 62.50
62.5 – 653
65 – 67.53
67.5 – 705
70 – 72.50
72.5 – 751
75 – 77.51
77.5 – 801
80 – 82.51
82.5 – 851
85 – 87.50
87.5 – 901
90 – 92.52
92.5 – 951
95 – 97.50
97.5 – 1003

pct_severe_burden numeric feature

A percentage feature (0–100 range) capturing the share of some population under severe burden, averaging 27.1% with a median of 26.2 and IQR of 15.9. The distribution is mildly right-skewed (0.57) with 30 outliers (1.35%) reaching up to 100, and 4.38% of rows are null. With 518 unique values across 2327 rows and a 1.98% zero rate, it behaves as a continuous rate rather than a categorical bucket.

Treatment: Impute the ~4% missing values and use as-is in modelling; mild skew rarely needs transformation.

anthropic:claude-opus-4-7 · confidence high
Out[52]:

saturn.columns["pct_severe_burden"].stats

statvalue
n2,327
nulls102 (4.4%)
unique518
min 0
max 100
mean 27.12
median 26.2
std 12.68
q1 18.7
q3 34.6
iqr 15.9
skew 0.5663
kurtosis 1.222
n_outliers 30
outlier_rate 0.01348
zero_rate 0.01978
Fig 21.
Distribution of pct_severe_burden. Vertical dash marks the median.
Show data table
Histogram bins for pct_severe_burden (median: 26.2).
bincount
0 – 2.545
2.5 – 514
5 – 7.541
7.5 – 1053
10 – 12.594
12.5 – 15115
15 – 17.5131
17.5 – 20160
20 – 22.5170
22.5 – 25188
25 – 27.5188
27.5 – 30168
30 – 32.5173
32.5 – 35157
35 – 37.5115
37.5 – 4097
40 – 42.573
42.5 – 4562
45 – 47.544
47.5 – 5035
50 – 52.529
52.5 – 5519
55 – 57.518
57.5 – 6012
60 – 62.56
62.5 – 654
65 – 67.54
67.5 – 702
70 – 72.51
72.5 – 751
75 – 77.51
77.5 – 801
80 – 82.50
82.5 – 851
85 – 87.51
87.5 – 900
90 – 92.51
92.5 – 950
95 – 97.50
97.5 – 1001

rent_burdened numeric feature

Likely a per-record count or dollar measure of rent-burdened households (or burden amount), ranging 0 to 3153 with a median of 358 and mean of 469.26. The distribution is right-skewed (skew 1.49, kurtosis 3.00) with 82 high outliers (3.5%) and 4.7% zeros. With 1013 unique values across 2327 rows and no nulls, it behaves like a continuous feature rather than a category.

Treatment: Log1p-transform before regression to tame the right skew and outliers.

anthropic:claude-opus-4-7 · confidence medium
Out[55]:

saturn.columns["rent_burdened"].stats

statvalue
n2,327
nulls0 (0.0%)
unique1,013
min 0
max 3,153
mean 469.3
median 358
std 415.3
q1 164.5
q3 670
iqr 505.5
skew 1.494
kurtosis 3.005
n_outliers 82
outlier_rate 0.03524
zero_rate 0.04727
Fig 22.
Distribution of rent_burdened. Vertical dash marks the median.
Show data table
Histogram bins for rent_burdened (median: 358.0).
bincount
0 – 78.83310
78.83 – 157.7256
157.7 – 236.5264
236.5 – 315.3231
315.3 – 394.1190
394.1 – 473180
473 – 551.8147
551.8 – 630.6113
630.6 – 709.4108
709.4 – 788.275
788.2 – 867.191
867.1 – 945.973
945.9 – 102557
1025 – 110439
1104 – 118241
1182 – 126123
1261 – 134026
1340 – 141920
1419 – 149819
1498 – 157611
1576 – 165516
1655 – 17346
1734 – 18135
1813 – 18926
1892 – 19714
1971 – 20492
2049 – 21283
2128 – 22075
2207 – 22860
2286 – 23650
2365 – 24441
2444 – 25221
2522 – 26012
2601 – 26801
2680 – 27590
2759 – 28380
2838 – 29170
2917 – 29950
2995 – 30740
3074 – 31531

pct_rent_burdened numeric feature

Likely the share of households that are rent-burdened, expressed as a percentage from 0 to 100. The distribution is roughly symmetric (skew -0.04) and centered near 50 (mean 49.87, median 50.0) with an IQR of 17.9, suggesting a wide spread across geographies. About 4.4% of rows are null and 62 values (2.8%) fall outside the Tukey fences, including some at the 0 and 100 extremes.

Treatment: Use as-is for modelling; impute the ~4% missing and consider clipping the 0/100 extremes if they represent small denominators.

anthropic:claude-opus-4-7 · confidence high
Out[58]:

saturn.columns["pct_rent_burdened"].stats

statvalue
n2,327
nulls102 (4.4%)
unique596
min 0
max 100
mean 49.87
median 50
std 14.62
q1 40.9
q3 58.8
iqr 17.9
skew -0.03839
kurtosis 0.7849
n_outliers 62
outlier_rate 0.02787
zero_rate 0.003596
Fig 23.
Distribution of pct_rent_burdened. Vertical dash marks the median.
Show data table
Histogram bins for pct_rent_burdened (median: 50.0).
bincount
0 – 2.58
2.5 – 53
5 – 7.51
7.5 – 105
10 – 12.57
12.5 – 158
15 – 17.512
17.5 – 2014
20 – 22.514
22.5 – 2524
25 – 27.535
27.5 – 3042
30 – 32.553
32.5 – 3580
35 – 37.591
37.5 – 40119
40 – 42.5129
42.5 – 45144
45 – 47.5146
47.5 – 50177
50 – 52.5139
52.5 – 55178
55 – 57.5162
57.5 – 60131
60 – 62.5117
62.5 – 6597
65 – 67.560
67.5 – 7057
70 – 72.554
72.5 – 7528
75 – 77.520
77.5 – 8025
80 – 82.58
82.5 – 854
85 – 87.512
87.5 – 905
90 – 92.55
92.5 – 953
95 – 97.50
97.5 – 1008

How to cite

click to copy

BibTeX
@misc{saturn-nyc-housing-nyc-rent-burden-by-tract-2026,
  author       = {Steuber, Luke},
  title        = {Saturn reading: nyc housing nyc rent burden by tract},
  year         ={2026},
  howpublished = {\url{https://dr.eamer.dev/saturn/view/nyc_housing-nyc_rent_burden_by_tract}},
  note         = {Profiled with saturn-dissect v0.2.0, prompt saturn-insight-v2, model anthropic:claude-opus-4-7},
}
APA
Steuber, L. (2026). Saturn reading: nyc housing nyc rent burden by tract. Source: /home/coolhand/html/datavis/data_trove/data/urban/nyc_housing/nyc_rent_burden_by_tract.csv. Profiled with saturn-dissect v0.2.0 (saturn-insight-v2, anthropic:claude-opus-4-7). Retrieved from https://dr.eamer.dev/saturn/view/nyc_housing-nyc_rent_burden_by_tract