In this post I parse out specific crime category coordinates from the 2014 SFPD data found here, and plot them on some google maps.
Author Archives: MantasCode
NBA Player Charts by Season 1953 – 2015
Data is from here scarped from Basketball-Reference.com . Found on reddit.com/r/datasets
Player Average Points By Season
Top Ten Stealers, Blockers, and 3 Point Field Goalers by Season.
Affordable Healthcare Act Compliance System Example
Random Empoloyees were created.
Random work hours for each month of 2014 were generated.
Random designations employment type attributed.
Random Measurement (start dates) associated.
6 Month look-back period.
ASP.net winforms was used to pull data from SQL Server.
C# was used to glue together an HTML table.
CSS was used to emphasize transitional employee types.
Anatomy of an Hourly Employee
West Side Chicago Narcotics Enforcement Migrations
In this post I look into Chicago Police Department’s enforcement of two particular narcotics report types: Heroin and Crack Cocaine. I was curious to see yearly migrations of CPD’s activity from 2003 to 2014 in the west side region of Chicago.
The Data is from City of Chicago Data Portal
Links to youtube video animated heatmaps (some mobile devices don’t support embedded videos on my site):
http://www.youtube.com/watch?v=2qGPhlBGWxQ
http://www.youtube.com/watch?v=uh22pGBLgYo
http://www.youtube.com/watch?v=czoofaWOAps
Monthly
Yearly
Ruby was used to parse the data and convert into JSON.
Google Heatmaps API was used to generate the maps.
Camtasia Studio 8 was used to annotate and export the videos.
Ruby written to create monthly maps
Chicago, Cook County – Defense Department’s 1033 program charts.
The data was found on github here:
Military Surplus Gear
The charts below cover Chicago, IL, Cook County
This chart displays Rifles and Pistols received by year.
This graph shows most popular equipment items received from 2006 through May 2014.
Ruby code used to parse and format the data. Google charts was used to display it.
UT2004 trial map from 2008 : CelkTrailv4a
Unreal Ed map I made in September 2008. Still played by hardcore UT engine environment trick jumpers (Think Indiana Jones temple of trials style gametype).
Current World Record 12 minutes 47 seconds, by player PIF
Chicago Gov-Job Average Salary Bubble Charts.
According to this data : Current Employee Names, Salaries, and Position Titles on City Of Chicago Data Portal https://data.cityofchicago.org/;
The Chicago government employees 32,160 employees, and pays approximately $2,429,980,941.36 in annual salaries.
Google Charts API was used.
CLICK ON Pictures FOR Focus. (temporary courtesy of imgur)
All Employees.
Let’s remove distinct Position-Titles with Less Then 10 Employees, and the position title of Police Officer from the data.
(20 or more), and, (200 or less); employee counts within a position title.
(10 or more), and,( 50 or less); employee counts within a position title.
C#
int counter = 0; string line; Dictionary<string, int> dCount = new Dictionary<string, int>(); Dictionary<string, decimal> dSalTotal = new Dictionary<string, decimal>(); Dictionary<string, LinkedList> dDeps = new Dictionary<string, LinkedList>(); System.IO.StreamReader file = new System.IO.StreamReader("C:\\AAAChicagoEmployees\\Current_Employee_Names__Salaries__and_Position_Titles (1).csv"); while ((line = file.ReadLine()) != null) { string[] parts = line.Split(','); try { string name = parts[2]; name = Regex.Replace(name, "'", ""); string dep = parts[3]; decimal sal = decimal.Parse(parts[4].TrimStart('$') ); if ( dCount.ContainsKey(name ) ) { int a = dCount[name]; a += 1; dCount[name] = a; decimal b = dSalTotal[name]; b += sal; dSalTotal[name] = b; LinkedList c = dDeps[name]; c.AddLast(dep); dDeps[name] = c; } else { dCount.Add(name, 1); dSalTotal.Add(name, sal); LinkedList newDepList = new LinkedList(); newDepList.AddLast(dep); dDeps.Add(name, newDepList); } } catch (Exception x) { //header line } counter++; } file.Close(); Dictionary<string, decimal> dAveOrder = new Dictionary<string, decimal>(); foreach (KeyValuePair<string, int> item in dCount.OrderBy(key => key.Value)) { if (item.Value >= 10 && item.Value <= 50) { decimal aveSal = dSalTotal[item.Key] / item.Value; dAveOrder.Add(item.Key, aveSal); } } string json = ""; foreach (KeyValuePair<string, decimal> item in dAveOrder.OrderBy(key => key.Value)) { Hashtable frequencyHash = new Hashtable(); LinkedList uniqueList = new LinkedList(); foreach (var element in dDeps[item.Key]) { if (uniqueList.Contains(element)) { int elementCount = int.Parse(frequencyHash[element].ToString()); elementCount++; frequencyHash[element] = elementCount; } else { uniqueList.AddLast(element); frequencyHash.Add(element, 1); } } int max = 0; string sMaxDep = ""; foreach (string element in frequencyHash.Keys) { int iDep = int.Parse(frequencyHash[element].ToString()); if (iDep > max) { max = iDep; sMaxDep = element; } } if (item.Key == "POLICE OFFICER") { } else { json += "[ '" + item.Key + "', " + dCount[item.Key] + " , " + item.Value + " ,'" + Regex.Replace(sMaxDep, "'", "") + "' , " + item.Value + " ],\r\n"; } } System.IO.StreamWriter fileWrite = new System.IO.StreamWriter("c:\\AAAChicagoEmployees\\data.txt"); fileWrite.WriteLine(json); fileWrite.Close(); |
Chicago West Side Narcotics Arrest Heat Maps 1/1/2013 – 5/8/2014
A look into the West Side of Chicago’s Narcotics related Arrests.
The data is from City of Chicago Data Portal. Time Range used from 1-1-13 through 5-8-14. Data was exported and saved as CSV. Ruby code was written to parse out and format the coordinates. Google Heatmaps Javascript API v3 was used to generate the heatmaps.
Heroin
POSS: HEROIN(WHITE), MANU/DELIVER: HEROIN (WHITE), POSS: HEROIN(BRN/TAN), POSS: HEROIN(BLACK TAR), MANU/DELIVER: HEROIN(BRN/TAN), MANU/DELIVER:HEROIN(BLACK TAR)
Cocaine
POSS: COCAINE, MANU/DELIVER:COCAINE
Crack
MANU/DELIVER:CRACK, POSS: CRACK
PCP
POSS: PCP, MANU/DELIVER:PCP
Marijuana
POSSESSION: SYNTHETIC MARIJUANA, MANU/POSS. W/INTENT TO DELIVER: SYNTHETIC MARIJUANA, POSS: CANNABIS 30GMS OR LESS, MANU/DEL:CANNABIS OVER 10 GMS, POSS: CANNABIS MORE THAN 30GMS, MANU/DEL:CANNABIS 10GM OR LESS, DELIVER CANNABIS TO PERSON <18, CANNABIS PLANT, ATTEMPT POSSESSION CANNABIS
Hallucinogen
POSS: HALLUCINOGENS, MANU/DELIVER: HALLUCINOGEN
Video: Ruby to Parse CSV data, and Visualize it within GoogleCharts – NFL Player Weight Averages by Draft Year
Fun with random data. Find, investigate, and plot.
I parse an NFL dataset, and visualize it in a GoogleCharts Column Chart.
The video above details the steps taken
- Download NFL CSV data from reddit post
- Open downloaded file with OpenOffice and notepad to check it out
- Create an Aptana Ruby Project
- Copy CSV data into a specific directory
- Write Ruby code to: Read Each line of the csv file, Test by outputting each player name (3rd column)
- Figure out what to chart
- Find specific columns within the dataset (Weight, draft_year)
Ruby:
- Adjust ruby code to get columns, confirm for integrity
- Create variables for weight and draft year
- Create Hash’s for Counts and Averages
- Populate the year hash count variable as you iterate through each row:
- – If the year hash count variable doesn’t have a year, create a new hash entry, specifying the year as the key, and setting the initial value to 1
- – If the year hash count variable already contains a key with the next row’s year, then get its value, increment it by 1, and update the pair.
- Do the same thing for the weight averages hash, only with weight. Accumulate weight totals for each year.
- cast weight and draft year variables into integers
- iterate through year count hash.
- Create new has with year and weight averages hash.
- Perform calculations on each pair in year hash count. Cast pairs into float types, divide weight accumulated totals, by counts.
- Sort new hash
- output the contents of new hash.
- fix mistakes.
Google Charts html formatting:
- Obtain a Column Chart from GoogleCharts and save it locally as an html.
- Adjust example properties with note pad.
Ruby:
- Adjust output into appropriate JSON
- Enjoy your chart.