diff --git a/README.md b/README.md
index b0cb3f3d5..13b683b25 100644
--- a/README.md
+++ b/README.md
@@ -77,7 +77,7 @@
 | [sortcheck](/src/cmd/sortcheck.rs#L2)<br>📇 | Check if a CSV is sorted. With the --json options, also retrieve record count, sort breaks & duplicate count. |
 | [split](/src/cmd/split.rs#L2)<br>📇🏎️ | Split one CSV file into many CSV files. It can split by number of rows, number of chunks or file size. Uses multithreading to go faster if an index is present when splitting by rows or chunks. |
 | [sqlp](/src/cmd/sqlp.rs#L2)<br>✨🚀🐻‍❄️🗄️ | Run [Polars](https://pola.rs) SQL queries against several CSVs - converting queries to blazing-fast [LazyFrame](https://docs.pola.rs/user-guide/lazy/using/) expressions, processing larger than memory CSV files. |
-| [stats](/src/cmd/stats.rs#L2)<br>📇🤯🏎️ | Compute [summary statistics](https://en.wikipedia.org/wiki/Summary_statistics) (sum, min/max/range, min/max length, mean, stddev, variance, nullcount, max precision, sparsity, quartiles, IQR, lower/upper fences, skewness, median, mode/s, antimode/s & cardinality) & make GUARANTEED data type inferences (Null, String, Float, Integer, Date, DateTime, Boolean) for each column in a CSV.<br>Uses multithreading to go faster if an index is present (with an index, can compile "streaming" stats on NYC's 311 data (15gb, 28m rows) in less than 7.3 seconds!). |
+| [stats](/src/cmd/stats.rs#L2)<br>📇🤯🏎️ | Compute [summary statistics](https://en.wikipedia.org/wiki/Summary_statistics) (sum, min/max/range, min/max length, mean, SEM, stddev, variance, CV, nullcount, max precision, sparsity, quartiles, IQR, lower/upper fences, skewness, median, mode/s, antimode/s & cardinality) & make GUARANTEED data type inferences (Null, String, Float, Integer, Date, DateTime, Boolean) for each column in a CSV.<br>Uses multithreading to go faster if an index is present (with an index, can compile "streaming" stats on NYC's 311 data (15gb, 28m rows) in less than 7.3 seconds!). |
 | [table](/src/cmd/table.rs#L2)<br>🤯 | Show aligned output of a CSV using [elastic tabstops](https://github.com/BurntSushi/tabwriter).  To interactively view CSV files, qsv pairs well with [csvlens](https://github.com/YS-L/csvlens#csvlens). |
 | [to](/src/cmd/to.rs#L2)<br>✨🚀🗄️ | Convert CSV files to [PostgreSQL](https://www.postgresql.org), [SQLite](https://www.sqlite.org/index.html), XLSX, [Parquet](https://parquet.apache.org) and [Data Package](https://datahub.io/docs/data-packages/tabular). |
 | [tojsonl](/src/cmd/tojsonl.rs#L3)<br>📇😣🚀🔣 | Smartly converts CSV to a newline-delimited JSON ([JSONL](https://jsonlines.org/)/[NDJSON](http://ndjson.org/)). By scanning the CSV first, it "smartly" infers the appropriate JSON data type for each column. See `jsonl` command to convert JSONL to CSV. |
diff --git a/resources/test/boston311-10-boolean-1or0-stats.csv b/resources/test/boston311-10-boolean-1or0-stats.csv
index 68e29aace..cf819f827 100644
--- a/resources/test/boston311-10-boolean-1or0-stats.csv
+++ b/resources/test/boston311-10-boolean-1or0-stats.csv
@@ -1,31 +1,31 @@
-field,type,is_ascii,sum,min,max,range,min_length,max_length,mean,stddev,variance,nullcount,max_precision,sparsity,cardinality
-case_enquiry_id,Integer,,1010041354742,101004113298,101004155594,42296,12,12,101004135474.2,14747.2697,217481962.3498,0,,0,10
-open_dt,String,true,,2022-01-01 00:16:00,2022-01-31 11:46:00,,19,19,,,,0,,0,10
-target_dt,String,true,,2022-01-11 08:30:00,2022-05-20 13:03:21,,0,19,,,,4,,0.4,6
-closed_dt,String,true,,2022-01-09 06:43:06,2022-01-20 08:45:12,,0,19,,,,5,,0.5,6
-ontime,String,true,,ONTIME,OVERDUE,,6,7,,,,0,,0,2
-case_status,String,true,,Closed,Open,,4,6,,,,0,,0,2
-case_status_boolean,Boolean,,5,0,1,1,1,1,0.5,0.5,0.25,0,,0,2
-closure_reason,String,true,, ,Case Closed. Closed date : Wed Jan 19 11:42:16 EST 2022 Resolved Removed df  ,,1,82,,,,0,,0,6
-case_title,String,true,,BTDT: Complaint,Sidewalk Cover / Manhole,,13,57,,,,0,,0,8
-subject,String,true,,Boston Police Department,Public Works Department,,21,31,,,,0,,0,5
-reason,String,true,,Administrative & General Requests,Street Cleaning,,7,33,,,,0,,0,7
-type,String,true,,CE Collection,Unsatisfactory Utilities - Electrical  Plumbing,,13,47,,,,0,,0,8
-queue,String,true,,BTDT_Parking Enforcement,PWDx_Snow Cases,,15,46,,,,0,,0,7
-department,String,true,,BTDT,PWDx,,3,4,,,,0,,0,5
-submittedphoto,NULL,,,,,,0,0,,,,10,,1,1
-closedphoto,NULL,,,,,,0,0,,,,10,,1,1
-location,String,true,, ,850 South St  Roslindale  MA  02131,,1,40,,,,0,,0,10
-fire_district,String,true,, ,9,,1,1,,,,0,,0,4
-pwd_district,String,true,, ,1C,,1,2,,,,0,,0,6
-city_council_district,String,true,, ,8,,1,1,,,,0,,0,6
-police_district,String,true,, ,E5,,1,3,,,,0,,0,6
-neighborhood,String,true,, ,South End,,1,13,,,,0,,0,8
-neighborhood_services_district,String,true,, ,6,,1,2,,,,0,,0,7
-ward,String,true,, ,Ward 9,,1,7,,,,0,,0,8
-precinct,String,true,, ,2004,,1,4,,,,0,,0,9
-location_street_name,String,true,,12 Derne St,850 South St,,0,20,,,,1,,0.1,10
-location_zipcode,String,true,,02113,02131,,0,5,,,,1,,0.1,8
-latitude,Float,,423.4656,42.2884,42.3735,0.0851,7,7,42.3466,0.0252,0.0006,0,4,0,9
-longitude,Float,,-710.782,-71.133,-71.0566,0.0764,6,8,-71.0782,0.0246,0.0006,0,4,0,10
-source,String,true,,City Worker App,Constituent Call,,15,16,,,,0,,0,2
+field,type,is_ascii,sum,min,max,range,min_length,max_length,mean,sem,stddev,variance,cv,nullcount,max_precision,sparsity,cardinality
+case_enquiry_id,Integer,,1010041354742,101004113298,101004155594,42296,12,12,101004135474.2,4663.4961,14747.2697,217481962.3498,0,0,,0,10
+open_dt,String,true,,2022-01-01 00:16:00,2022-01-31 11:46:00,,19,19,,,,,,0,,0,10
+target_dt,String,true,,2022-01-11 08:30:00,2022-05-20 13:03:21,,0,19,,,,,,4,,0.4,6
+closed_dt,String,true,,2022-01-09 06:43:06,2022-01-20 08:45:12,,0,19,,,,,,5,,0.5,6
+ontime,String,true,,ONTIME,OVERDUE,,6,7,,,,,,0,,0,2
+case_status,String,true,,Closed,Open,,4,6,,,,,,0,,0,2
+case_status_boolean,Boolean,,5,0,1,1,1,1,0.5,0.1581,0.5,0.25,100,0,,0,2
+closure_reason,String,true,, ,Case Closed. Closed date : Wed Jan 19 11:42:16 EST 2022 Resolved Removed df  ,,1,82,,,,,,0,,0,6
+case_title,String,true,,BTDT: Complaint,Sidewalk Cover / Manhole,,13,57,,,,,,0,,0,8
+subject,String,true,,Boston Police Department,Public Works Department,,21,31,,,,,,0,,0,5
+reason,String,true,,Administrative & General Requests,Street Cleaning,,7,33,,,,,,0,,0,7
+type,String,true,,CE Collection,Unsatisfactory Utilities - Electrical  Plumbing,,13,47,,,,,,0,,0,8
+queue,String,true,,BTDT_Parking Enforcement,PWDx_Snow Cases,,15,46,,,,,,0,,0,7
+department,String,true,,BTDT,PWDx,,3,4,,,,,,0,,0,5
+submittedphoto,NULL,,,,,,0,0,,,,,,10,,1,1
+closedphoto,NULL,,,,,,0,0,,,,,,10,,1,1
+location,String,true,, ,850 South St  Roslindale  MA  02131,,1,40,,,,,,0,,0,10
+fire_district,String,true,, ,9,,1,1,,,,,,0,,0,4
+pwd_district,String,true,, ,1C,,1,2,,,,,,0,,0,6
+city_council_district,String,true,, ,8,,1,1,,,,,,0,,0,6
+police_district,String,true,, ,E5,,1,3,,,,,,0,,0,6
+neighborhood,String,true,, ,South End,,1,13,,,,,,0,,0,8
+neighborhood_services_district,String,true,, ,6,,1,2,,,,,,0,,0,7
+ward,String,true,, ,Ward 9,,1,7,,,,,,0,,0,8
+precinct,String,true,, ,2004,,1,4,,,,,,0,,0,9
+location_street_name,String,true,,12 Derne St,850 South St,,0,20,,,,,,1,,0.1,10
+location_zipcode,String,true,,02113,02131,,0,5,,,,,,1,,0.1,8
+latitude,Float,,423.4656,42.2884,42.3735,0.0851,7,7,42.3466,0.008,0.0252,0.0006,0.0595,0,4,0,9
+longitude,Float,,-710.782,-71.133,-71.0566,0.0764,6,8,-71.0782,0.0078,0.0246,0.0006,-0.0346,0,4,0,10
+source,String,true,,City Worker App,Constituent Call,,15,16,,,,,,0,,0,2
diff --git a/resources/test/boston311-10-boolean-tf-stats.csv b/resources/test/boston311-10-boolean-tf-stats.csv
index 61b11bd90..1ed9bfc5a 100644
--- a/resources/test/boston311-10-boolean-tf-stats.csv
+++ b/resources/test/boston311-10-boolean-tf-stats.csv
@@ -1,31 +1,31 @@
-field,type,is_ascii,sum,min,max,range,min_length,max_length,mean,stddev,variance,nullcount,max_precision,sparsity,cardinality
-case_enquiry_id,Integer,,1010041354742,101004113298,101004155594,42296,12,12,101004135474.2,14747.2697,217481962.3498,0,,0,10
-open_dt,String,true,,2022-01-01 00:16:00,2022-01-31 11:46:00,,19,19,,,,0,,0,10
-target_dt,String,true,,2022-01-11 08:30:00,2022-05-20 13:03:21,,0,19,,,,4,,0.4,6
-closed_dt,String,true,,2022-01-09 06:43:06,2022-01-20 08:45:12,,0,19,,,,5,,0.5,6
-ontime,String,true,,ONTIME,OVERDUE,,6,7,,,,0,,0,2
-case_status,String,true,,Closed,Open,,4,6,,,,0,,0,2
-case_status_boolean,Boolean,true,,False,True,,4,5,,,,0,,0,2
-closure_reason,String,true,, ,Case Closed. Closed date : Wed Jan 19 11:42:16 EST 2022 Resolved Removed df  ,,1,82,,,,0,,0,6
-case_title,String,true,,BTDT: Complaint,Sidewalk Cover / Manhole,,13,57,,,,0,,0,8
-subject,String,true,,Boston Police Department,Public Works Department,,21,31,,,,0,,0,5
-reason,String,true,,Administrative & General Requests,Street Cleaning,,7,33,,,,0,,0,7
-type,String,true,,CE Collection,Unsatisfactory Utilities - Electrical  Plumbing,,13,47,,,,0,,0,8
-queue,String,true,,BTDT_Parking Enforcement,PWDx_Snow Cases,,15,46,,,,0,,0,7
-department,String,true,,BTDT,PWDx,,3,4,,,,0,,0,5
-submittedphoto,NULL,,,,,,0,0,,,,10,,1,1
-closedphoto,NULL,,,,,,0,0,,,,10,,1,1
-location,String,true,, ,850 South St  Roslindale  MA  02131,,1,40,,,,0,,0,10
-fire_district,String,true,, ,9,,1,1,,,,0,,0,4
-pwd_district,String,true,, ,1C,,1,2,,,,0,,0,6
-city_council_district,String,true,, ,8,,1,1,,,,0,,0,6
-police_district,String,true,, ,E5,,1,3,,,,0,,0,6
-neighborhood,String,true,, ,South End,,1,13,,,,0,,0,8
-neighborhood_services_district,String,true,, ,6,,1,2,,,,0,,0,7
-ward,String,true,, ,Ward 9,,1,7,,,,0,,0,8
-precinct,String,true,, ,2004,,1,4,,,,0,,0,9
-location_street_name,String,true,,12 Derne St,850 South St,,0,20,,,,1,,0.1,10
-location_zipcode,String,true,,02113,02131,,0,5,,,,1,,0.1,8
-latitude,Float,,423.4656,42.2884,42.3735,0.0851,7,7,42.3466,0.0252,0.0006,0,4,0,9
-longitude,Float,,-710.782,-71.133,-71.0566,0.0764,6,8,-71.0782,0.0246,0.0006,0,4,0,10
-source,String,true,,City Worker App,Constituent Call,,15,16,,,,0,,0,2
+field,type,is_ascii,sum,min,max,range,min_length,max_length,mean,sem,stddev,variance,cv,nullcount,max_precision,sparsity,cardinality
+case_enquiry_id,Integer,,1010041354742,101004113298,101004155594,42296,12,12,101004135474.2,4663.4961,14747.2697,217481962.3498,0,0,,0,10
+open_dt,String,true,,2022-01-01 00:16:00,2022-01-31 11:46:00,,19,19,,,,,,0,,0,10
+target_dt,String,true,,2022-01-11 08:30:00,2022-05-20 13:03:21,,0,19,,,,,,4,,0.4,6
+closed_dt,String,true,,2022-01-09 06:43:06,2022-01-20 08:45:12,,0,19,,,,,,5,,0.5,6
+ontime,String,true,,ONTIME,OVERDUE,,6,7,,,,,,0,,0,2
+case_status,String,true,,Closed,Open,,4,6,,,,,,0,,0,2
+case_status_boolean,Boolean,true,,False,True,,4,5,,,,,,0,,0,2
+closure_reason,String,true,, ,Case Closed. Closed date : Wed Jan 19 11:42:16 EST 2022 Resolved Removed df  ,,1,82,,,,,,0,,0,6
+case_title,String,true,,BTDT: Complaint,Sidewalk Cover / Manhole,,13,57,,,,,,0,,0,8
+subject,String,true,,Boston Police Department,Public Works Department,,21,31,,,,,,0,,0,5
+reason,String,true,,Administrative & General Requests,Street Cleaning,,7,33,,,,,,0,,0,7
+type,String,true,,CE Collection,Unsatisfactory Utilities - Electrical  Plumbing,,13,47,,,,,,0,,0,8
+queue,String,true,,BTDT_Parking Enforcement,PWDx_Snow Cases,,15,46,,,,,,0,,0,7
+department,String,true,,BTDT,PWDx,,3,4,,,,,,0,,0,5
+submittedphoto,NULL,,,,,,0,0,,,,,,10,,1,1
+closedphoto,NULL,,,,,,0,0,,,,,,10,,1,1
+location,String,true,, ,850 South St  Roslindale  MA  02131,,1,40,,,,,,0,,0,10
+fire_district,String,true,, ,9,,1,1,,,,,,0,,0,4
+pwd_district,String,true,, ,1C,,1,2,,,,,,0,,0,6
+city_council_district,String,true,, ,8,,1,1,,,,,,0,,0,6
+police_district,String,true,, ,E5,,1,3,,,,,,0,,0,6
+neighborhood,String,true,, ,South End,,1,13,,,,,,0,,0,8
+neighborhood_services_district,String,true,, ,6,,1,2,,,,,,0,,0,7
+ward,String,true,, ,Ward 9,,1,7,,,,,,0,,0,8
+precinct,String,true,, ,2004,,1,4,,,,,,0,,0,9
+location_street_name,String,true,,12 Derne St,850 South St,,0,20,,,,,,1,,0.1,10
+location_zipcode,String,true,,02113,02131,,0,5,,,,,,1,,0.1,8
+latitude,Float,,423.4656,42.2884,42.3735,0.0851,7,7,42.3466,0.008,0.0252,0.0006,0.0595,0,4,0,9
+longitude,Float,,-710.782,-71.133,-71.0566,0.0764,6,8,-71.0782,0.0078,0.0246,0.0006,-0.0346,0,4,0,10
+source,String,true,,City Worker App,Constituent Call,,15,16,,,,,,0,,0,2
diff --git a/resources/test/boston311-100-everything-date-stats-variance-stddev.csv b/resources/test/boston311-100-everything-date-stats-variance-stddev.csv
index b44c066ed..f28b36c6a 100644
--- a/resources/test/boston311-100-everything-date-stats-variance-stddev.csv
+++ b/resources/test/boston311-100-everything-date-stats-variance-stddev.csv
@@ -1,30 +1,30 @@
-field,type,is_ascii,sum,min,max,range,min_length,max_length,mean,stddev,variance,nullcount,max_precision,sparsity,mad,lower_outer_fence,lower_inner_fence,q1,q2_median,q3,iqr,upper_inner_fence,upper_outer_fence,skewness,cardinality,mode,mode_count,mode_occurrences,antimode,antimode_count,antimode_occurrences
-case_enquiry_id,Integer,,10100411645180,101004113298,101004155594,42296,12,12,101004116451.8,7905.5202,62497248.9138,0,,0,673,101004109567,101004111646,101004113725,101004114353,101004115111,1386,101004117190,101004119269,0.0938,100,,0,0,*ALL,0,1
-open_dt,DateTime,,,2022-01-01T00:16:00+00:00,2022-01-31T11:46:00+00:00,30.47917,,,2022-01-04T07:07:45.050+00:00,5.568,31.00259,0,,0,0.76261,2021-12-27T14:16:49+00:00,2021-12-30T06:00:07+00:00,2022-01-01T21:43:25+00:00,2022-01-03T07:02:14+00:00,2022-01-03T16:12:17+00:00,1.77005,2022-01-06T07:55:35+00:00,2022-01-08T23:38:53+00:00,-0.5684,100,,0,0,*ALL,0,1
-target_dt,DateTime,,,2022-01-03T10:32:34+00:00,2022-05-20T13:03:21+00:00,137.10471,,,2022-01-17T03:14:16.404+00:00,27.00551,729.29774,11,,0.11,1,2021-11-26T08:30:00+00:00,2021-12-15T20:30:00+00:00,2022-01-04T08:30:00+00:00,2022-01-05T08:30:00+00:00,2022-01-17T08:30:00+00:00,13,2022-02-05T20:30:00+00:00,2022-02-25T08:30:00+00:00,0.8462,42,2022-01-04 08:30:00,1,25,"*PREVIEW: 2022-01-03 10:32:34,2022-01-03 11:58:12,2022-01-04 09:58:36,2022-01-04 10:41:29,2022-01-04...",34,1
-closed_dt,DateTime,,,2022-01-01T12:56:14+00:00,2022-04-25T14:30:31+00:00,114.06547,,,2022-01-08T01:10:44.411+00:00,15.82577,250.4549,15,,0.15,0.77213,2021-12-29T15:13:29+00:00,2021-12-31T19:50:08.750+00:00,2022-01-03T00:26:48.500+00:00,2022-01-03T12:15:23+00:00,2022-01-04T11:31:15+00:00,1.46142,2022-01-06T16:07:54.750+00:00,2022-01-08T20:44:34.500+00:00,0.3266,86,,1,15,"*PREVIEW: 2022-01-01 12:56:14,2022-01-01 14:17:15,2022-01-01 14:59:41,2022-01-01 15:10:16,2022-01-01...",85,1
-ontime,String,true,,ONTIME,OVERDUE,,6,7,,,,0,,0,,,,,,,,,,,2,ONTIME,1,83,OVERDUE,1,17
-case_status,String,true,,Closed,Open,,4,6,,,,0,,0,,,,,,,,,,,2,Closed,1,85,Open,1,15
-closure_reason,String,true,, ,Case Closed. Closed date : Wed Jan 19 11:42:16 EST 2022 Resolved Removed df  ,,1,284,,,,0,,0,,,,,,,,,,,86, ,1,15,"*PREVIEW: Case Closed Case Resolved  NEW CART#21026466 DELV ON 1/11/22  ,Case Closed Case Resolved  ...",85,1
-case_title,String,true,,Abandoned Vehicles,Traffic Signal Inspection,,10,57,,,,0,,0,,,,,,,,,,,42,Parking Enforcement,1,20,"*PREVIEW: Animal Generic Request,BTDT: Complaint,City/State Snow Issues,DISPATCHED Short Term Rental...",24,1
-subject,String,true,,Animal Control,Transportation - Traffic Division,,14,33,,,,0,,0,,,,,,,,,,,9,Public Works Department,1,51,"Animal Control,Boston Police Department,Boston Water & Sewer Commission",3,1
-reason,String,true,,Administrative & General Requests,Street Lights,,7,33,,,,0,,0,,,,,,,,,,,20,Enforcement & Abandoned Vehicles,1,23,"Administrative & General Requests,Animal Issues,Building,Employee & General Comments,Noise Disturban...",7,1
-type,String,true,,Abandoned Vehicles,Unsatisfactory Utilities - Electrical  Plumbing,,10,47,,,,0,,0,,,,,,,,,,,36,Parking Enforcement,1,20,"*PREVIEW: Animal Generic Request,City/State Snow Issues,Electrical,General Comments For a Program or...",15,1
-queue,String,true,,BTDT_AVRS Interface Queue,PWDx_Street Light_General Lighting Request,,13,55,,,,0,,0,,,,,,,,,,,35,BTDT_Parking Enforcement,1,21,"*PREVIEW: BTDT_BostonBikes,BTDT_Engineering_New Sign and Pavement Marking Requests,BTDT_Sign Shop_Si...",15,1
-department,String,true,,BTDT,PWDx,,3,4,,,,0,,0,,,,,,,,,,,7,PWDx,1,49,GEN_,1,2
-submittedphoto,String,true,,https://311.boston.gov/media/boston/report/photos/61d03f0d05bbcf180c2965fd/report.jpg,https://311.boston.gov/media/boston/report/photos/61d75bba05bbcf180c2d41de/report.jpg,,0,100,,,,58,,0.58,,,,,,,,,,,43,,1,58,"*PREVIEW: https://311.boston.gov/media/boston/report/photos/61d03f0d05bbcf180c2965fd/report.jpg,http...",42,1
-closedphoto,NULL,,,,,,0,0,,,,100,,1,,,,,,,,,,,1,,1,100,,0,0
-location,String,true,, ,INTERSECTION of Verdun St & Gallivan Blvd  Dorchester  MA  ,,1,63,,,,0,,0,,,,,,,,,,,98,"563 Columbus Ave  Roxbury  MA  02118,INTERSECTION of Gallivan Blvd & Washington St  Dorchester  MA  ",2,2,"*PREVIEW:  ,103 N Beacon St  Brighton  MA  02135,11 Aberdeen St  Boston  MA  02215,1148 Hyde Park Av...",96,1
-fire_district,String,true,, ,9,,1,2,,,,0,,0,,,,,,,,,,,10,3,1,19, ,1,1
-pwd_district,String,true,, ,1C,,1,3,,,,0,,0,,,,,,,,,,,14,1B,1,16, ,1,1
-city_council_district,String,true,, ,9,,1,1,,,,0,,0,,,,,,,,,,,10,1,1,22, ,1,1
-police_district,String,true,, ,E5,,1,3,,,,0,,0,,,,,,,,,,,13,A1,1,20, ,1,1
-neighborhood,String,true,, ,West Roxbury,,1,38,,,,0,,0,,,,,,,,,,,19,Dorchester,1,15," ,Brighton,Mission Hill",3,1
-neighborhood_services_district,String,true,, ,9,,1,2,,,,0,,0,,,,,,,,,,,16,3,1,15," ,12",2,1
-ward,String,true,, ,Ward 9,,1,7,,,,0,,0,,,,,,,,,,,42,Ward 3,1,10,"*PREVIEW:  ,01,02,04,06,07,1,10,16,18",23,1
-precinct,String,true,, ,2210,,0,4,,,,1,,0.01,,,,,,,,,,,76,0306,1,5,"*PREVIEW: NULL, ,0102,0105,0108,0109,0201,0204,0305,0307",61,1
-location_street_name,String,true,,103 N Beacon St,INTERSECTION Verdun St & Gallivan Blvd,,0,45,,,,1,,0.01,,,,,,,,,,,97,"20 Washington St,563 Columbus Ave,INTERSECTION Gallivan Blvd & Washington St",3,2,"*PREVIEW: NULL,103 N Beacon St,11 Aberdeen St,1148 Hyde Park Ave,119 L St,12 Derne St,126 Elm St,127...",94,1
-location_zipcode,String,true,,02109,02215,,0,5,,,,17,,0.17,,,,,,,,,,,24,,1,17,"02126,02134,02210,02215",4,1
-latitude,Float,,4233.6674,42.2553,42.3806,0.1253,6,7,42.3367,0.0305,0.0009,0,4,0,0.0163,42.2034,42.2619,42.3204,42.3432,42.3594,0.039,42.4179,42.4764,-0.1667,78,42.3594,1,20,"*PREVIEW: 42.2553,42.2601,42.2609,42.2645,42.2674,42.2789,42.2797,42.2804,42.2821,42.2878",74,1
-longitude,Float,,-7107.2688,-71.1626,-71.0298,0.1328,6,8,-71.0727,0.0311,0.001,0,4,0,0.0121,-71.1741,-71.1294,-71.0848,-71.0609,-71.055,0.0298,-71.0104,-70.9658,-0.6101,77,-71.0587,1,19,"*PREVIEW: -71.0298,-71.0301,-71.0309,-71.0323,-71.0325,-71.0329,-71.0336,-71.0338,-71.034,-71.0355",72,1
-source,String,true,,Citizens Connect App,Self Service,,12,20,,,,0,,0,,,,,,,,,,,4,Citizens Connect App,1,56,Self Service,1,3
+field,type,is_ascii,sum,min,max,range,min_length,max_length,mean,sem,stddev,variance,cv,nullcount,max_precision,sparsity,mad,lower_outer_fence,lower_inner_fence,q1,q2_median,q3,iqr,upper_inner_fence,upper_outer_fence,skewness,cardinality,mode,mode_count,mode_occurrences,antimode,antimode_count,antimode_occurrences
+case_enquiry_id,Integer,,10100411645180,101004113298,101004155594,42296,12,12,101004116451.8,790.552,7905.5202,62497248.9138,0,0,,0,673,101004109567,101004111646,101004113725,101004114353,101004115111,1386,101004117190,101004119269,0.0938,100,,0,0,*ALL,0,1
+open_dt,DateTime,,,2022-01-01T00:16:00+00:00,2022-01-31T11:46:00+00:00,30.47917,,,2022-01-04T07:07:45.050+00:00,0.5568,5.568,31.00259,0.0293,0,,0,0.76261,2021-12-27T14:16:49+00:00,2021-12-30T06:00:07+00:00,2022-01-01T21:43:25+00:00,2022-01-03T07:02:14+00:00,2022-01-03T16:12:17+00:00,1.77005,2022-01-06T07:55:35+00:00,2022-01-08T23:38:53+00:00,-0.5684,100,,0,0,*ALL,0,1
+target_dt,DateTime,,,2022-01-03T10:32:34+00:00,2022-05-20T13:03:21+00:00,137.10471,,,2022-01-17T03:14:16.404+00:00,2.86258,27.00551,729.29774,0.1421,11,,0.11,1,2021-11-26T08:30:00+00:00,2021-12-15T20:30:00+00:00,2022-01-04T08:30:00+00:00,2022-01-05T08:30:00+00:00,2022-01-17T08:30:00+00:00,13,2022-02-05T20:30:00+00:00,2022-02-25T08:30:00+00:00,0.8462,42,2022-01-04 08:30:00,1,25,"*PREVIEW: 2022-01-03 10:32:34,2022-01-03 11:58:12,2022-01-04 09:58:36,2022-01-04 10:41:29,2022-01-04...",34,1
+closed_dt,DateTime,,,2022-01-01T12:56:14+00:00,2022-04-25T14:30:31+00:00,114.06547,,,2022-01-08T01:10:44.411+00:00,1.71655,15.82577,250.4549,0.0833,15,,0.15,0.77213,2021-12-29T15:13:29+00:00,2021-12-31T19:50:08.750+00:00,2022-01-03T00:26:48.500+00:00,2022-01-03T12:15:23+00:00,2022-01-04T11:31:15+00:00,1.46142,2022-01-06T16:07:54.750+00:00,2022-01-08T20:44:34.500+00:00,0.3266,86,,1,15,"*PREVIEW: 2022-01-01 12:56:14,2022-01-01 14:17:15,2022-01-01 14:59:41,2022-01-01 15:10:16,2022-01-01...",85,1
+ontime,String,true,,ONTIME,OVERDUE,,6,7,,,,,,0,,0,,,,,,,,,,,2,ONTIME,1,83,OVERDUE,1,17
+case_status,String,true,,Closed,Open,,4,6,,,,,,0,,0,,,,,,,,,,,2,Closed,1,85,Open,1,15
+closure_reason,String,true,, ,Case Closed. Closed date : Wed Jan 19 11:42:16 EST 2022 Resolved Removed df  ,,1,284,,,,,,0,,0,,,,,,,,,,,86, ,1,15,"*PREVIEW: Case Closed Case Resolved  NEW CART#21026466 DELV ON 1/11/22  ,Case Closed Case Resolved  ...",85,1
+case_title,String,true,,Abandoned Vehicles,Traffic Signal Inspection,,10,57,,,,,,0,,0,,,,,,,,,,,42,Parking Enforcement,1,20,"*PREVIEW: Animal Generic Request,BTDT: Complaint,City/State Snow Issues,DISPATCHED Short Term Rental...",24,1
+subject,String,true,,Animal Control,Transportation - Traffic Division,,14,33,,,,,,0,,0,,,,,,,,,,,9,Public Works Department,1,51,"Animal Control,Boston Police Department,Boston Water & Sewer Commission",3,1
+reason,String,true,,Administrative & General Requests,Street Lights,,7,33,,,,,,0,,0,,,,,,,,,,,20,Enforcement & Abandoned Vehicles,1,23,"Administrative & General Requests,Animal Issues,Building,Employee & General Comments,Noise Disturban...",7,1
+type,String,true,,Abandoned Vehicles,Unsatisfactory Utilities - Electrical  Plumbing,,10,47,,,,,,0,,0,,,,,,,,,,,36,Parking Enforcement,1,20,"*PREVIEW: Animal Generic Request,City/State Snow Issues,Electrical,General Comments For a Program or...",15,1
+queue,String,true,,BTDT_AVRS Interface Queue,PWDx_Street Light_General Lighting Request,,13,55,,,,,,0,,0,,,,,,,,,,,35,BTDT_Parking Enforcement,1,21,"*PREVIEW: BTDT_BostonBikes,BTDT_Engineering_New Sign and Pavement Marking Requests,BTDT_Sign Shop_Si...",15,1
+department,String,true,,BTDT,PWDx,,3,4,,,,,,0,,0,,,,,,,,,,,7,PWDx,1,49,GEN_,1,2
+submittedphoto,String,true,,https://311.boston.gov/media/boston/report/photos/61d03f0d05bbcf180c2965fd/report.jpg,https://311.boston.gov/media/boston/report/photos/61d75bba05bbcf180c2d41de/report.jpg,,0,100,,,,,,58,,0.58,,,,,,,,,,,43,,1,58,"*PREVIEW: https://311.boston.gov/media/boston/report/photos/61d03f0d05bbcf180c2965fd/report.jpg,http...",42,1
+closedphoto,NULL,,,,,,0,0,,,,,,100,,1,,,,,,,,,,,1,,1,100,,0,0
+location,String,true,, ,INTERSECTION of Verdun St & Gallivan Blvd  Dorchester  MA  ,,1,63,,,,,,0,,0,,,,,,,,,,,98,"563 Columbus Ave  Roxbury  MA  02118,INTERSECTION of Gallivan Blvd & Washington St  Dorchester  MA  ",2,2,"*PREVIEW:  ,103 N Beacon St  Brighton  MA  02135,11 Aberdeen St  Boston  MA  02215,1148 Hyde Park Av...",96,1
+fire_district,String,true,, ,9,,1,2,,,,,,0,,0,,,,,,,,,,,10,3,1,19, ,1,1
+pwd_district,String,true,, ,1C,,1,3,,,,,,0,,0,,,,,,,,,,,14,1B,1,16, ,1,1
+city_council_district,String,true,, ,9,,1,1,,,,,,0,,0,,,,,,,,,,,10,1,1,22, ,1,1
+police_district,String,true,, ,E5,,1,3,,,,,,0,,0,,,,,,,,,,,13,A1,1,20, ,1,1
+neighborhood,String,true,, ,West Roxbury,,1,38,,,,,,0,,0,,,,,,,,,,,19,Dorchester,1,15," ,Brighton,Mission Hill",3,1
+neighborhood_services_district,String,true,, ,9,,1,2,,,,,,0,,0,,,,,,,,,,,16,3,1,15," ,12",2,1
+ward,String,true,, ,Ward 9,,1,7,,,,,,0,,0,,,,,,,,,,,42,Ward 3,1,10,"*PREVIEW:  ,01,02,04,06,07,1,10,16,18",23,1
+precinct,String,true,, ,2210,,0,4,,,,,,1,,0.01,,,,,,,,,,,76,0306,1,5,"*PREVIEW: NULL, ,0102,0105,0108,0109,0201,0204,0305,0307",61,1
+location_street_name,String,true,,103 N Beacon St,INTERSECTION Verdun St & Gallivan Blvd,,0,45,,,,,,1,,0.01,,,,,,,,,,,97,"20 Washington St,563 Columbus Ave,INTERSECTION Gallivan Blvd & Washington St",3,2,"*PREVIEW: NULL,103 N Beacon St,11 Aberdeen St,1148 Hyde Park Ave,119 L St,12 Derne St,126 Elm St,127...",94,1
+location_zipcode,String,true,,02109,02215,,0,5,,,,,,17,,0.17,,,,,,,,,,,24,,1,17,"02126,02134,02210,02215",4,1
+latitude,Float,,4233.6674,42.2553,42.3806,0.1253,6,7,42.3367,0.0031,0.0305,0.0009,0.072,0,4,0,0.0163,42.2034,42.2619,42.3204,42.3432,42.3594,0.039,42.4179,42.4764,-0.1667,78,42.3594,1,20,"*PREVIEW: 42.2553,42.2601,42.2609,42.2645,42.2674,42.2789,42.2797,42.2804,42.2821,42.2878",74,1
+longitude,Float,,-7107.2688,-71.1626,-71.0298,0.1328,6,8,-71.0727,0.0031,0.0311,0.001,-0.0437,0,4,0,0.0121,-71.1741,-71.1294,-71.0848,-71.0609,-71.055,0.0298,-71.0104,-70.9658,-0.6101,77,-71.0587,1,19,"*PREVIEW: -71.0298,-71.0301,-71.0309,-71.0323,-71.0325,-71.0329,-71.0336,-71.0338,-71.034,-71.0355",72,1
+source,String,true,,Citizens Connect App,Self Service,,12,20,,,,,,0,,0,,,,,,,,,,,4,Citizens Connect App,1,56,Self Service,1,3
diff --git a/scripts/NYC_311_SR_2010-2020-sample-1M.stats.csv b/scripts/NYC_311_SR_2010-2020-sample-1M.stats.csv
index 040cf4384..cefdc8cf1 100644
--- a/scripts/NYC_311_SR_2010-2020-sample-1M.stats.csv
+++ b/scripts/NYC_311_SR_2010-2020-sample-1M.stats.csv
@@ -1,42 +1,42 @@
-field,type,is_ascii,sum,min,max,range,min_length,max_length,mean,stddev,variance,nullcount,max_precision,sparsity,mad,lower_outer_fence,lower_inner_fence,q1,q2_median,q3,iqr,upper_inner_fence,upper_outer_fence,skewness,cardinality,mode,mode_count,mode_occurrences,antimode,antimode_count,antimode_occurrences
-Unique Key,Integer,,32687965858032,11465364,48478173,37012809,8,8,32687965.858,9013895.3358,81250309125279.6094,0,,0,7577800.5,-19639208.5,2803282.25,25245773,32853358.5,40207433.5,14961660.5,62649924.25,85092415,-0.0169,1000000,,0,0,*ALL,0,1
-Created Date,DateTime,,,2010-01-01T00:00:00+00:00,2020-12-23T01:25:51+00:00,4009.05962,,,2015-11-10T18:05:22.615+00:00,1155.01606,1334062.09198,0,,0,965.58623,1997-01-08T17:56:34.500+00:00,2005-02-08T08:58:19.500+00:00,2013-03-11T00:00:04.500+00:00,2016-02-12T13:16:49+00:00,2018-07-31T10:01:14.500+00:00,1968.41748,2026-08-31T01:02:59.500+00:00,2034-09-30T16:04:44.500+00:00,-0.0857,841014,01/24/2013 12:00:00 AM,1,347,"*PREVIEW: 01/01/2010 01:05:51 PM,01/01/2010 01:07:31 AM,01/01/2010 01:15:21 AM,01/01/2010 01:25:40 A...",824248,1
-Closed Date,DateTime,,,1900-01-01T00:00:00+00:00,2100-01-01T00:00:00+00:00,73049,,,2015-11-14T10:16:16.743+00:00,1314.70016,1728436.50813,28619,,0.0286,955.59374,1997-04-12T11:33:24.500+00:00,2005-04-09T10:53:21.500+00:00,2013-04-06T10:13:18.500+00:00,2016-02-26T01:40:00+00:00,2018-08-04T09:46:36.500+00:00,1945.98146,2026-08-01T09:06:33.500+00:00,2034-07-29T08:26:30.500+00:00,-0.0849,688837,,1,28619,"*PREVIEW: 01/01/2010 01:50:45 PM,01/01/2010 02:05:02 PM,01/01/2010 02:10:00 PM,01/01/2010 02:23:20 P...",653948,1
-Agency,String,false,,3-1-1,TLC,,3,42,,,,0,,0,,,,,,,,,,,28,NYPD,1,265116,"DORIS,FDNY,MOC",3,1
-Agency Name,String,false,,3-1-1,Valuation Policy,,3,82,,,,0,,0,,,,,,,,,,,553,New York City Police Department,1,265038,"*PREVIEW: 3-1-1,DOE,DPR,Fire Department of New York,MOC,Municipal Archives,NYPD,School - ACE Academy...",332,1
-Complaint Type,String,true,,../../WEB-INF/web.xml;x=,ZTESTINT,,3,41,,,,0,,0,,,,,,,,,,,287,Noise - Residential,1,89439,"*PREVIEW: ../../WEB-INF/web.xml;x=,Advocate - RPIE,Advocate-Business Tax,Advocate-Property Value,Adv...",20,1
-Descriptor,String,true,,1 Missed Collection,unknown odor/taste in drinking water (QA6),,0,80,,,,3001,,0.003,,,,,,,,,,,1392,Loud Music/Party,1,93646,"*PREVIEW: 12P Dead Deer,15N Needle/Syringe on Street/Sidewalk,4 DSNY Spillage,ABANDONED APARTMENT UN...",137,1
-Location Type,String,true,,"1-, 2- and 3- Family Home",Wooded Area,,0,36,,,,239131,,0.2391,,,,,,,,,,,162,RESIDENTIAL BUILDING,1,255562,"Correctional Facility - State,Ground,Health Club or Gym,Horse Stable,Pvt Residnt Proprty,School - K-...",8,1
-Incident Zip,String,true,,*,XXXXX,,0,10,,,,54978,,0.055,,,,,,,,,,,535,,1,54978,"*PREVIEW: *,0000,00881,01748-9100,01810-1008,02061,02062,02109,02250-5126,02346",230,1
-Incident Address,String,true,,* *,west 155 street and edgecombe avenue,,0,55,,,,174700,,0.1747,,,,,,,,,,,341996,,1,174700,"*PREVIEW: * *,- 3 BREWSTER ROAD,----------- ----------,-999 108 ST,-999 132 ST E,-999 135 AVE,-999 1...",220179,1
-Street Name,String,true,,*,wyckoff avenue,,0,55,,,,174720,,0.1747,,,,,,,,,,,14837,,1,174720,"*PREVIEW: *,----------,-25 VASWANI AVE,.,.HYLAN BOULEVARD,0,000,1 BREWSTER ROAD,1 ST,1 ST W",4365,1
-Cross Street 1,String,true,,1 AVE,mermaid,,0,32,,,,320401,,0.3204,,,,,,,,,,,16238,,1,320401,"*PREVIEW: 1 AVENUE LOOP,100 ST E,103 ST W,104 ST W,106 ST W,107 ST E,107 ST W,108TH ST,111 ST XTN E,...",3510,1
-Cross Street 2,String,true,,1 AVE,surf,,0,35,,,,323644,,0.3236,,,,,,,,,,,16486,,1,323644,"*PREVIEW: 10 ST N,100 DR,100 RD,101 ST W,104 RD,107 ST W,109 ST W,10TH AVE,11 MEMORIAL WAY / BAY RID...",3471,1
-Intersection Street 1,String,true,,1 AVE,flatlands AVE,,0,35,,,,767422,,0.7674,,,,,,,,,,,11237,,1,767422,"*PREVIEW: 1 ST N,1 ST S,10 RD W,10 ROAD,10 ST,10 ST S,100 AVE,100 ROAD,101-104,101ST",2979,1
-Intersection Street 2,String,true,,1 AVE,glenwood RD,,0,33,,,,767709,,0.7677,,,,,,,,,,,11674,,1,767709,"*PREVIEW: 1 AVENUE LOOP,1 COURT,1 RD,10 AVE BET 201 AND 202 STREET,10 ST,10 ST S,100 DR,100 DRIVE,10...",3059,1
-Address Type,String,true,,ADDRESS,PLACENAME,,0,12,,,,125802,,0.1258,,,,,,,,,,,6,ADDRESS,1,710380,PLACENAME,1,416
-City,String,true,,*,YORKTOWN HEIGHTS,,0,22,,,,61963,,0.062,,,,,,,,,,,382,BROOKLYN,1,296254,"*PREVIEW: *,.,ADINA,ALPHARETTA,ANDOVER,ANONYMOUS,ARDSLEY,ARIZONA,ARMONK,AUGUSTA",222,1
-Landmark,String,true,,1 AVENUE,ZULETTE AVENUE,,0,32,,,,912779,,0.9128,,,,,,,,,,,5915,,1,912779,"*PREVIEW: 100 DRIVE,101 ROAD,104 ROAD,109 DRIVE,124 AVENUE,126 PLACE,128 AVENUE,128 ROAD,130 DRIVE,1...",1471,1
-Facility Type,String,true,,DSNY Garage,School District,,0,15,,,,145478,,0.1455,,,,,,,,,,,6,N/A,1,628279,School District,1,57
-Status,String,true,,Assigned,Unspecified,,4,16,,,,0,,0,,,,,,,,,,,10,Closed,1,952522,Unspecified,1,2
-Due Date,DateTime,,,1900-01-02T00:00:00+00:00,2021-06-17T16:34:13+00:00,44361.69043,,,2015-05-30T02:54:49.998+00:00,1035.204,1071647.31812,647794,,0.6478,805.53579,1999-09-09T02:53:37+00:00,2006-06-14T19:09:32.500+00:00,2013-03-20T11:25:28+00:00,2015-10-03T01:27:48+00:00,2017-09-22T14:16:05+00:00,1647.11848,2024-06-28T06:32:00.500+00:00,2031-04-03T22:47:56+00:00,-0.1251,345077,,1,647794,"*PREVIEW: 01/01/2010 01:26:03 PM,01/01/2010 01:29:48 PM,01/01/2010 04:06:50 PM,01/01/2010 07:41:07 P...",342744,1
-Resolution Description,String,false,,A DOB violation was issued for failing to comply with an existing Stop Work Order.,"Your request was submitted to the Department of Homeless Services. The City?s outreach team will assess the homeless individual and offer appropriate assistance within 2 hours. If you asked to know the outcome of your request, you will get a call within 2 hours. No further status will be available through the NYC 311 App, 311, or 311 Online.",,0,934,,,,20480,,0.0205,,,,,,,,,,,1216,The Police Department responded to the complaint and with the information available observed no evidence of the violation at that time.,1,91408,*PREVIEW: A hearing was conducted because the settlement was not received by the deadline and the of...,155,1
-Resolution Action Updated Date,DateTime,,,2009-12-31T01:35:00+00:00,2020-12-23T06:56:14+00:00,4010.22308,,,2015-11-19T19:44:34.889+00:00,1153.24922,1329983.75668,15072,,0.0151,967.53886,1997-01-12T11:30:24+00:00,2005-02-14T12:31:15.750+00:00,2013-03-19T13:32:07.500+00:00,2016-02-22T22:38:30+00:00,2018-08-10T14:12:42+00:00,1970.02818,2026-09-12T15:13:33.750+00:00,2034-10-15T16:14:25.500+00:00,-0.0867,690314,,1,15072,"*PREVIEW: 01/01/2010 01:50:45 PM,01/01/2010 02:05:02 PM,01/01/2010 02:23:20 PM,01/01/2010 02:30:28 P...",653642,1
-Community Board,String,true,,0 Unspecified,Unspecified STATEN ISLAND,,8,25,,,,0,,0,,,,,,,,,,,77,0 Unspecified,1,49878,84 QUEENS,1,26
-BBL,String,true,,0000000000,5270000501,,0,10,,,,243046,,0.243,,,,,,,,,,,268383,,1,243046,"*PREVIEW: 0140694020,1000030003,1000070038,1000077502,1000110009,1000110010,1000110012,1000110017,10...",158803,1
-Borough,String,true,,BRONX,Unspecified,,5,13,,,,0,,0,,,,,,,,,,,6,BROOKLYN,1,296081,STATEN ISLAND,1,49593
-X Coordinate (State Plane),Integer,,919555108413,913281,1067220,153939,0,7,1005337.5451,22512.4528,506810531.5324,85327,,0.0853,12292,919661,956616.5,993572,1004546,1018209,24637,1055164.5,1092120,0.1091,102556,,1,85327,"*PREVIEW: 1001201,1001661,1001825,1001994,1002015,1002144,1002198,1002225,1002239,1002243",21039,1
-Y Coordinate (State Plane),Integer,,188099299101,121152,271876,150724,0,6,205646.4978,31723.1985,1006361322.6747,85327,,0.0853,24221,24257,103334,182411,202514,235129,52718,314206,393283,0.2373,116092,,1,85327,"*PREVIEW: 121152,121179,121194,121219,121245,121250,121261,121271,121281,121291",18352,1
-Open Data Channel Type,String,true,,MOBILE,UNKNOWN,,5,7,,,,0,,0,,,,,,,,,,,5,PHONE,1,497606,OTHER,1,14766
-Park Facility Name,String,true,,"""Uncle"" Vito F. Maranzano Glendale Playground",Zimmerman Playground,,3,82,,,,0,,0,,,,,,,,,,,1889,Unspecified,1,993141,"*PREVIEW: 100 Gold St.,101 Street Soccer Field,117th St Community Garden,174th St Playground,176th S...",895,1
-Park Borough,String,true,,BRONX,Unspecified,,5,13,,,,0,,0,,,,,,,,,,,6,BROOKLYN,1,296081,STATEN ISLAND,1,49593
-Vehicle Type,String,true,,Ambulette / Paratransit,Green Taxi,,0,23,,,,999652,,0.9997,,,,,,,,,,,5,,1,999652,Green Taxi,1,1
-Taxi Company Borough,String,true,,BRONX,Staten Island,,0,13,,,,999156,,0.9992,,,,,,,,,,,11,,1,999156,Staten Island,1,1
-Taxi Pick Up Location,String,true,,1 5 AVENUE MANHATTAN,YORK AVENUE AND EAST 70 STREET,,0,60,,,,992129,,0.9921,,,,,,,,,,,1903,,1,992129,"*PREVIEW: 1 7 AVENUE, MANHATTAN (NEW YORK), NY, 10011,1 AVENUE AND EAST   14 STREET, MANHATTAN, NY, ...",1808,1
-Bridge Highway Name,String,true,,145th St. Br - Lenox Ave,Willis Ave Br - 125th St/1st Ave,,0,42,,,,997711,,0.9977,,,,,,,,,,,68,,1,997711,"*PREVIEW: Alexander Hamilton/I-95 Cross Bronx Br,Battery Park Underpass,Broadway Br - 220th St,Carro...",19,1
-Bridge Highway Direction,String,true,,Bronx Bound,Westbound/To Goethals Br,,0,33,,,,997691,,0.9977,,,,,,,,,,,50,,1,997691,"Bronx/North Bound,New Jersey Bound,To FDR/East Side,To the Rockaways",4,1
-Road Ramp,String,true,,N/A,Roadway,,0,7,,,,997693,,0.9977,,,,,,,,,,,4,,1,997693,N/A,1,21
-Bridge Highway Segment,String,true,,1-1-1265963747,Wythe Ave/Kent Ave (Exit 31),,0,100,,,,997556,,0.9976,,,,,,,,,,,937,,1,997556,"*PREVIEW: 1-1-1265963747,1-1-1291177094,1-1-1291489575,1-1-1318214144,1-1-1321839362,1-1-1323407496,...",465,1
-Latitude,Float,,30355391.7604,40.1123853,40.9128688,0.8005,0,18,40.7288,0.0893,0.008,254695,15,0.2547,0.0632,40.2615,40.4646,40.6677,40.7222,40.8031,0.1354,41.0062,41.2094,0.1957,353694,,1,254695,"*PREVIEW: 40.4989488,40.4990309,40.49907,40.4991346,40.4992119,40.4992256,40.4992558,40.4992852,40.4...",228113,1
-Longitude,Float,,-55100392.9499,-77.5195844,-73.7005968,3.819,0,18,-73.93,0.1635,0.0267,254695,14,0.2547,0.0469,-74.2533,-74.1119,-73.9705,-73.9279,-73.8763,0.0943,-73.7349,-73.5935,0.0964,353996,,1,254695,"*PREVIEW: -73.7005968,-73.7007716,-73.7007883,-73.7008374,-73.7009167,-73.7009592,-73.700966,-73.700...",229462,1
-Location,String,true,,"(40.1123853, -77.5195844)","(40.9128688, -73.9024731)",,0,40,,,,254695,,0.2547,,,,,,,,,,,375772,,1,254695,"*PREVIEW: (40.4989488, -74.2443651),(40.4990309, -74.2405936),(40.49907, -74.2415825),(40.4991346, -...",255860,1
+field,type,is_ascii,sum,min,max,range,min_length,max_length,mean,se_mean,stddev,variance,cv,nullcount,max_precision,sparsity
+Unique Key,Integer,,32687965858032,11465364,48478173,37012809,8,8,32687965.858,9013.8953,9013895.3358,81250309125279.6094,27.5756,0,,0
+Created Date,DateTime,,,2010-01-01T00:00:00+00:00,2020-12-23T01:25:51+00:00,4009.05962,,,2015-11-10T18:05:22.615+00:00,1.15502,1155.01606,1334062.09198,6.8957,0,,0
+Closed Date,DateTime,,,1900-01-01T00:00:00+00:00,2100-01-01T00:00:00+00:00,73049,,,2015-11-14T10:16:16.743+00:00,1.33393,1314.70016,1728436.50813,7.8474,28619,,0.0286
+Agency,String,false,,3-1-1,TLC,,3,42,,,,,,0,,0
+Agency Name,String,false,,3-1-1,Valuation Policy,,3,82,,,,,,0,,0
+Complaint Type,String,true,,../../WEB-INF/web.xml;x=,ZTESTINT,,3,41,,,,,,0,,0
+Descriptor,String,true,,1 Missed Collection,unknown odor/taste in drinking water (QA6),,0,80,,,,,,3001,,0.003
+Location Type,String,true,,"1-, 2- and 3- Family Home",Wooded Area,,0,36,,,,,,239131,,0.2391
+Incident Zip,String,true,,*,XXXXX,,0,10,,,,,,54978,,0.055
+Incident Address,String,true,,* *,west 155 street and edgecombe avenue,,0,55,,,,,,174700,,0.1747
+Street Name,String,true,,*,wyckoff avenue,,0,55,,,,,,174720,,0.1747
+Cross Street 1,String,true,,1 AVE,mermaid,,0,32,,,,,,320401,,0.3204
+Cross Street 2,String,true,,1 AVE,surf,,0,35,,,,,,323644,,0.3236
+Intersection Street 1,String,true,,1 AVE,flatlands AVE,,0,35,,,,,,767422,,0.7674
+Intersection Street 2,String,true,,1 AVE,glenwood RD,,0,33,,,,,,767709,,0.7677
+Address Type,String,true,,ADDRESS,PLACENAME,,0,12,,,,,,125802,,0.1258
+City,String,true,,*,YORKTOWN HEIGHTS,,0,22,,,,,,61963,,0.062
+Landmark,String,true,,1 AVENUE,ZULETTE AVENUE,,0,32,,,,,,912779,,0.9128
+Facility Type,String,true,,DSNY Garage,School District,,0,15,,,,,,145478,,0.1455
+Status,String,true,,Assigned,Unspecified,,4,16,,,,,,0,,0
+Due Date,DateTime,,,1900-01-02T00:00:00+00:00,2021-06-17T16:34:13+00:00,44361.69043,,,2015-05-30T02:54:49.998+00:00,1.74433,1035.204,1071647.31812,6.2418,647794,,0.6478
+Resolution Description,String,false,,A DOB violation was issued for failing to comply with an existing Stop Work Order.,"Your request was submitted to the Department of Homeless Services. The City?s outreach team will assess the homeless individual and offer appropriate assistance within 2 hours. If you asked to know the outcome of your request, you will get a call within 2 hours. No further status will be available through the NYC 311 App, 311, or 311 Online.",,0,934,,,,,,20480,,0.0205
+Resolution Action Updated Date,DateTime,,,2009-12-31T01:35:00+00:00,2020-12-23T06:56:14+00:00,4010.22308,,,2015-11-19T19:44:34.889+00:00,1.16204,1153.24922,1329983.75668,6.8814,15072,,0.0151
+Community Board,String,true,,0 Unspecified,Unspecified STATEN ISLAND,,8,25,,,,,,0,,0
+BBL,String,true,,0000000000,5270000501,,0,10,,,,,,243046,,0.243
+Borough,String,true,,BRONX,Unspecified,,5,13,,,,,,0,,0
+X Coordinate (State Plane),Integer,,919555108413,913281,1067220,153939,0,7,1005337.5451,23.5391,22512.4528,506810531.5324,2.2393,85327,,0.0853
+Y Coordinate (State Plane),Integer,,188099299101,121152,271876,150724,0,6,205646.4978,33.1699,31723.1985,1006361322.6747,15.4261,85327,,0.0853
+Open Data Channel Type,String,true,,MOBILE,UNKNOWN,,5,7,,,,,,0,,0
+Park Facility Name,String,true,,"""Uncle"" Vito F. Maranzano Glendale Playground",Zimmerman Playground,,3,82,,,,,,0,,0
+Park Borough,String,true,,BRONX,Unspecified,,5,13,,,,,,0,,0
+Vehicle Type,String,true,,Ambulette / Paratransit,Green Taxi,,0,23,,,,,,999652,,0.9997
+Taxi Company Borough,String,true,,BRONX,Staten Island,,0,13,,,,,,999156,,0.9992
+Taxi Pick Up Location,String,true,,1 5 AVENUE MANHATTAN,YORK AVENUE AND EAST 70 STREET,,0,60,,,,,,992129,,0.9921
+Bridge Highway Name,String,true,,145th St. Br - Lenox Ave,Willis Ave Br - 125th St/1st Ave,,0,42,,,,,,997711,,0.9977
+Bridge Highway Direction,String,true,,Bronx Bound,Westbound/To Goethals Br,,0,33,,,,,,997691,,0.9977
+Road Ramp,String,true,,N/A,Roadway,,0,7,,,,,,997693,,0.9977
+Bridge Highway Segment,String,true,,1-1-1265963747,Wythe Ave/Kent Ave (Exit 31),,0,100,,,,,,997556,,0.9976
+Latitude,Float,,30355391.7604,40.1123853,40.9128688,0.8005,0,18,40.7288,0.0001,0.0893,0.008,0.2193,254695,15,0.2547
+Longitude,Float,,-55100392.9499,-77.5195844,-73.7005968,3.819,0,18,-73.93,0.0002,0.1635,0.0267,-0.2212,254695,14,0.2547
+Location,String,true,,"(40.1123853, -77.5195844)","(40.9128688, -73.9024731)",,0,40,,,,,,254695,,0.2547
diff --git a/src/cmd/stats.rs b/src/cmd/stats.rs
index 549fe2d39..3a7b15e44 100644
--- a/src/cmd/stats.rs
+++ b/src/cmd/stats.rs
@@ -1,15 +1,15 @@
 static USAGE: &str = r#"
 Compute summary statistics & infers data types for each column in a CSV. 
 
-Summary statistics includes sum, min/max/range, min/max length, mean, stddev, variance,
-nullcount, max_precision, sparsity, quartiles, interquartile range (IQR), lower/upper fences,
-skewness, median, cardinality, mode/s & "antimode/s", and median absolute deviation (MAD).
-Note that some statistics require loading the entire file into memory, so they must be
-enabled explicitly. 
+Summary statistics includes sum, min/max/range, min/max length, mean, standard error of the mean (SEM),
+stddev, variance, coefficient of variation (CV), nullcount, max_precision, sparsity, quartiles,
+interquartile range (IQR), lower/upper fences, skewness, median, cardinality, mode/s & "antimode/s", 
+and median absolute deviation (MAD). Note that some statistics require loading the entire file into
+memory, so they must be enabled explicitly. 
 
 By default, the following "streaming" statistics are reported for *every* column:
-sum, min/max/range values, min/max length, mean, stddev, variance, nullcount, max_precision and
-sparsity. The default set of statistics corresponds to ones that can be computed efficiently
+sum, min/max/range values, min/max length, mean, sem, stddev, variance, cv, nullcount, max_precision
+and sparsity. The default set of statistics corresponds to ones that can be computed efficiently
 on a stream of data (i.e., constant memory) and works with arbitrarily large CSV files.
 
 The following additional "non-streaming" statistics require loading the entire file into memory:
@@ -282,7 +282,7 @@ const MS_IN_DAY_INT: i64 = 86_400_000;
 const DAY_DECIMAL_PLACES: u32 = 5;
 
 // maximum number of output columns
-const MAX_STAT_COLUMNS: usize = 32;
+const MAX_STAT_COLUMNS: usize = 34;
 
 // maximum number of antimodes to display
 const MAX_ANTIMODES: usize = 10;
@@ -843,7 +843,7 @@ impl Args {
             return csv::StringRecord::from(vec!["field", "type"]);
         }
 
-        // with --everything, we have 32 columns at most
+        // with --everything, we have 34 columns at most
         let mut fields = Vec::with_capacity(MAX_STAT_COLUMNS);
         fields.extend_from_slice(&[
             "field",
@@ -856,8 +856,10 @@ impl Args {
             "min_length",
             "max_length",
             "mean",
+            "sem",
             "stddev",
             "variance",
+            "cv",
             "nullcount",
             "max_precision",
             "sparsity",
@@ -1175,7 +1177,7 @@ impl Stats {
 
         let typ = self.typ;
         // prealloc memory for performance
-        // we have 32 columns at most with --everything
+        // we have 34 columns at most with --everything
         let mut pieces = Vec::with_capacity(MAX_STAT_COLUMNS);
 
         let empty = String::new;
@@ -1334,32 +1336,44 @@ impl Stats {
             pieces.extend_from_slice(&[empty(), empty()]);
         }
 
-        // mean, stddev & variance
+        // mean, sem, stddev, variance & cv
         if typ == TString || typ == TNull {
-            pieces.extend_from_slice(&[empty(), empty(), empty()]);
+            pieces.extend_from_slice(&[empty(), empty(), empty(), empty(), empty()]);
         } else if let Some(ref v) = self.online {
+            let std_dev = v.stddev();
+            let sem = std_dev / (v.len() as f64).sqrt();
+            let mean = v.mean();
+            let cv = (std_dev / mean) * 100_f64;
             if self.typ == TFloat || self.typ == TInteger {
                 pieces.extend_from_slice(&[
-                    util::round_num(v.mean(), round_places),
-                    util::round_num(v.stddev(), round_places),
+                    util::round_num(mean, round_places),
+                    util::round_num(sem, round_places),
+                    util::round_num(std_dev, round_places),
                     util::round_num(v.variance(), round_places),
+                    util::round_num(cv, round_places),
                 ]);
             } else {
-                pieces.push(timestamp_ms_to_rfc3339(v.mean() as i64, typ));
-                // instead of returning stdev in seconds, let's return it in
+                // by the time we get here, the type is a TDateTime or TDate
+                pieces.push(timestamp_ms_to_rfc3339(mean as i64, typ));
+                // instead of returning sem, stdev & variance as timestamps, return it in
                 // days as it easier to handle
                 // Round to at least 5 decimal places, so we have millisecond precision
                 pieces.push(util::round_num(
-                    v.stddev() / MS_IN_DAY,
+                    sem / MS_IN_DAY,
+                    u32::max(round_places, DAY_DECIMAL_PLACES),
+                ));
+                pieces.push(util::round_num(
+                    std_dev / MS_IN_DAY,
                     u32::max(round_places, DAY_DECIMAL_PLACES),
                 ));
                 pieces.push(util::round_num(
                     v.variance() / (MS_IN_DAY * MS_IN_DAY),
                     u32::max(round_places, DAY_DECIMAL_PLACES),
                 ));
+                pieces.push(util::round_num(cv, round_places));
             }
         } else {
-            pieces.extend_from_slice(&[empty(), empty(), empty()]);
+            pieces.extend_from_slice(&[empty(), empty(), empty(), empty(), empty()]);
         }
 
         // nullcount
diff --git a/tests/test_index.rs b/tests/test_index.rs
index 9d436c7dd..3bdbea7d8 100644
--- a/tests/test_index.rs
+++ b/tests/test_index.rs
@@ -73,16 +73,21 @@ fn index_outdated_stats() {
             "min_length",
             "max_length",
             "mean",
+            "sem",
             "stddev",
             "variance",
+            "cv",
             "nullcount",
             "max_precision",
             "sparsity"
         ],
-        svec!["letter", "String", "true", "", "a", "c", "", "1", "1", "", "", "", "0", "", "0"],
         svec![
-            "number", "Integer", "", "6", "1", "3", "2", "1", "1", "2", "0.8165", "0.6667", "0",
-            "", "0"
+            "letter", "String", "true", "", "a", "c", "", "1", "1", "", "", "", "", "", "0", "",
+            "0"
+        ],
+        svec![
+            "number", "Integer", "", "6", "1", "3", "2", "1", "1", "2", "0.4714", "0.8165",
+            "0.6667", "40.8248", "0", "", "0"
         ],
     ];
 
diff --git a/tests/test_stats.rs b/tests/test_stats.rs
index 528129a91..33975354b 100644
--- a/tests/test_stats.rs
+++ b/tests/test_stats.rs
@@ -622,7 +622,7 @@ fn stats_prefer_dmy() {
 
     // removed variance & stddev columns as its causing flaky CI test for float values
     let mut cmd = wrk.command("select");
-    cmd.arg("1-10,13-").arg("in2.csv");
+    cmd.arg("1-10,15-").arg("in2.csv");
 
     let got2: String = wrk.stdout(&mut cmd);
     let expected2 = wrk.load_test_resource("boston311-100-stats.csv");
@@ -647,7 +647,7 @@ fn stats_prefer_mdy() {
 
     // removed variance & stddev columns as its causing flaky CI test for float values
     let mut cmd = wrk.command("select");
-    cmd.arg("1-10,13-").arg("in2.csv");
+    cmd.arg("1-10,15-").arg("in2.csv");
 
     let got2: String = wrk.stdout(&mut cmd);
 
@@ -672,7 +672,7 @@ fn stats_rounding() {
 
     // removed variance & stddev columns as its causing flaky CI test for float values
     let mut cmd = wrk.command("select");
-    cmd.arg("1-10,13-").arg("in2.csv");
+    cmd.arg("1-10,15-").arg("in2.csv");
 
     let got2: String = wrk.stdout(&mut cmd);
     let expected2 = wrk.load_test_resource("boston311-100-everything-8places-stats.csv");
@@ -715,7 +715,7 @@ fn stats_no_date_inference() {
 
     // removed variance & stddev columns as its causing flaky CI test for float values
     let mut cmd = wrk.command("select");
-    cmd.arg("1-10,13-").arg("in2.csv");
+    cmd.arg("1-10,15-").arg("in2.csv");
 
     let got2: String = wrk.stdout(&mut cmd);
     let expected2 = wrk.load_test_resource("boston311-100-everything-nodate-stats.csv");
@@ -741,7 +741,7 @@ fn stats_with_date_inference() {
 
     // removed variance & stddev columns as its causing flaky CI test for float values
     let mut cmd = wrk.command("select");
-    cmd.arg("1-10,13-").arg("in2.csv");
+    cmd.arg("1-10,15-").arg("in2.csv");
 
     let got2: String = wrk.stdout(&mut cmd);
     let expected2 = wrk.load_test_resource("boston311-100-everything-date-stats.csv");
@@ -763,7 +763,7 @@ fn stats_with_date_inference_default_whitelist() {
 
     // removed variance & stddev columns as its causing flaky CI test for float values
     let mut cmd = wrk.command("select");
-    cmd.arg("!/variance|stddev/").arg("in2.csv");
+    cmd.arg("!/variance|stddev|sem|cv/").arg("in2.csv");
 
     let got2: String = wrk.stdout(&mut cmd);
     let expected2 =
@@ -813,7 +813,7 @@ fn stats_with_date_type() {
 
     // removed variance & stddev columns as its causing flaky CI test for float values
     let mut cmd = wrk.command("select");
-    cmd.arg("1-10,13-").arg("in2.csv");
+    cmd.arg("1-10,15-").arg("in2.csv");
 
     let got2: String = wrk.stdout(&mut cmd);
     let expected2 = wrk.load_test_resource("boston311-100-everything-datenotime-stats.csv");
@@ -927,7 +927,7 @@ fn stats_cache() {
 
     // removed variance & stddev columns as its causing flaky CI test for float values
     let mut cmd = wrk.command("select");
-    cmd.arg("1-10,13-").arg("in2.csv");
+    cmd.arg("1-10,15-").arg("in2.csv");
 
     let got2: String = wrk.stdout(&mut cmd);
     let expected2 = wrk.load_test_resource("boston311-100-stats.csv");
@@ -964,7 +964,7 @@ fn stats_cache_negative_threshold() {
 
     // removed variance & stddev columns as its causing flaky CI test for float values
     let mut cmd = wrk.command("select");
-    cmd.arg("1-10,13-").arg("in2.csv");
+    cmd.arg("1-10,15-").arg("in2.csv");
 
     let got2: String = wrk.stdout(&mut cmd);
     let expected2 = wrk.load_test_resource("boston311-100-stats.csv");
@@ -1001,7 +1001,7 @@ fn stats_cache_negative_threshold_unmet() {
 
     // removed variance & stddev columns as its causing flaky CI test for float values
     let mut cmd = wrk.command("select");
-    cmd.arg("1-10,13-").arg("in2.csv");
+    cmd.arg("1-10,15-").arg("in2.csv");
 
     let got2: String = wrk.stdout(&mut cmd);
     let expected2 = wrk.load_test_resource("boston311-100-stats.csv");
@@ -1040,7 +1040,7 @@ fn stats_cache_negative_threshold_five() {
 
     // removed variance & stddev columns as its causing flaky CI test for float values
     let mut cmd = wrk.command("select");
-    cmd.arg("1-10,13-").arg("in2.csv");
+    cmd.arg("1-10,15-").arg("in2.csv");
 
     let got2: String = wrk.stdout(&mut cmd);
     let expected2 = wrk.load_test_resource("boston311-100-stats.csv");
@@ -1111,7 +1111,7 @@ fn stats_is_ascii() {
 
     // removed variance & stddev columns as its causing flaky CI test for float values
     let mut cmd = wrk.command("select");
-    cmd.arg("1-10,13-").arg("in2.csv");
+    cmd.arg("1-10,15-").arg("in2.csv");
 
     let got2: String = wrk.stdout(&mut cmd);
     let expected2 = wrk.load_test_resource("boston311-100-with-nonascii-stats.csv");