Skip to content

Commit 41b09ce

Browse files
author
Plamen Milenkov
committed
Answer to bad-drivers questions
1 parent 7c91c29 commit 41b09ce

File tree

4 files changed

+91
-1
lines changed

4 files changed

+91
-1
lines changed
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,18 @@
11
# Questions
22

33
## 1. States with highest number of died drivers.
4+
* North Dakota' with '23.9'
5+
* 'South Carolina' with '23.9'
6+
* 'West Virginia' with '23.8'
7+
* 'Arkansas' with '22.4'
8+
* 'Kentucky' with '21.4'
49

510
## 2. Is there a connection between incidents and speed.
11+
There is no intersection between top 5 states by collisions and by speeding.
12+
Hence, without pandas in use, I would say there is no connection.
13+
14+
But there is a small intersection between collisions and drinking - North Dakota and South Carolina are the examples.
615

716
## 3. Are insurance companies paying more or less to racers.
17+
Only 3 of the top 10 states where incusrance companies are loosing money are from the top 10 states which are sorted by speeding.
18+
Hence -> I would say there is no connection between speeding and insurance losses.
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
from research import BadDriversResearch
2+
3+
research = BadDriversResearch()
4+
5+
# for state in research.sort_states_by_died_drivers()[:5]:
6+
# print("'{}' and died '{}'".format(state.state, state.drivers_fatal_collisions))
7+
#
8+
# print("#" * 20)
9+
10+
for state in research.sort_states_by_speed()[:10]:
11+
print("'{}' and speeding '{}'".format(state.state, state.drivers_fatal_collisions))
12+
13+
# print("#" * 20)
14+
#
15+
# for state in research.sort_states_by_alcohol()[:5]:
16+
# print("'{}' and drinking '{}'".format(state.state, state.drivers_fatal_collisions))
17+
#
18+
print("#" * 20)
19+
20+
for state in research.sort_states_by_insurance_company_loss()[:10]:
21+
print("'{}' and insurance losses '{}'".format(state.state, state.drivers_fatal_collisions))
22+

days/37-39-csv-data-analsys/bad-drivers/bad-drivers.csv

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
State,Number of drivers involved in fatal collisions per billion miles,Percentage Of Drivers Involved In Fatal Collisions Who Were Speeding,Percentage Of Drivers Involved In Fatal Collisions Who Were Alcohol-Impaired,Percentage Of Drivers Involved In Fatal Collisions Who Were Not Distracted,Percentage Of Drivers Involved In Fatal Collisions Who Had Not Been Involved In Any Previous Accidents,Car Insurance Premiums ($),Losses incurred by insurance companies for collisions per insured driver ($)Alabama,18.8,39,30,96,80,784.55,145.08Alaska,18.1,41,25,90,94,1053.48,133.93Arizona,18.6,35,28,84,96,899.47,110.35Arkansas,22.4,18,26,94,95,827.34,142.39California,12,35,28,91,89,878.41,165.63Colorado,13.6,37,28,79,95,835.5,139.91Connecticut,10.8,46,36,87,82,1068.73,167.02Delaware,16.2,38,30,87,99,1137.87,151.48District of Columbia,5.9,34,27,100,100,1273.89,136.05Florida,17.9,21,29,92,94,1160.13,144.18Georgia,15.6,19,25,95,93,913.15,142.8Hawaii,17.5,54,41,82,87,861.18,120.92Idaho,15.3,36,29,85,98,641.96,82.75Illinois,12.8,36,34,94,96,803.11,139.15Indiana,14.5,25,29,95,95,710.46,108.92Iowa,15.7,17,25,97,87,649.06,114.47Kansas,17.8,27,24,77,85,780.45,133.8Kentucky,21.4,19,23,78,76,872.51,137.13Louisiana,20.5,35,33,73,98,1281.55,194.78Maine,15.1,38,30,87,84,661.88,96.57Maryland,12.5,34,32,71,99,1048.78,192.7Massachusetts,8.2,23,35,87,80,1011.14,135.63Michigan,14.1,24,28,95,77,1110.61,152.26Minnesota,9.6,23,29,88,88,777.18,133.35Mississippi,17.6,15,31,10,100,896.07,155.77Missouri,16.1,43,34,92,84,790.32,144.45Montana,21.4,39,44,84,85,816.21,85.15Nebraska,14.9,13,35,93,90,732.28,114.82Nevada,14.7,37,32,95,99,1029.87,138.71New Hampshire,11.6,35,30,87,83,746.54,120.21New Jersey,11.2,16,28,86,78,1301.52,159.85New Mexico,18.4,19,27,67,98,869.85,120.75New York,12.3,32,29,88,80,1234.31,150.01North Carolina,16.8,39,31,94,81,708.24,127.82North Dakota,23.9,23,42,99,86,688.75,109.72Ohio,14.1,28,34,99,82,697.73,133.52Oklahoma,19.9,32,29,92,94,881.51,178.86Oregon,12.8,33,26,67,90,804.71,104.61Pennsylvania,18.2,50,31,96,88,905.99,153.86Rhode Island,11.1,34,38,92,79,1148.99,148.58South Carolina,23.9,38,41,96,81,858.97,116.29South Dakota,19.4,31,33,98,86,669.31,96.87Tennessee,19.5,21,29,82,81,767.91,155.57Texas,19.4,40,38,91,87,1004.75,156.83Utah,11.3,43,16,88,96,809.38,109.48Vermont,13.6,30,30,96,95,716.2,109.61Virginia,12.7,19,27,87,88,768.95,153.72Washington,10.6,42,33,82,86,890.03,111.62West Virginia,23.8,34,28,97,87,992.61,152.56Wisconsin,13.8,36,33,39,84,670.31,106.62Wyoming,17.4,42,32,81,90,791.14,122.04
1+
state,drivers_fatal_collisions,drivers_speeding,drivers_alcohol_impaired,drivers_not_distracted,drivers_first_collision,car_insurance,insurance_company_lossesAlabama,18.8,39,30,96,80,784.55,145.08Alaska,18.1,41,25,90,94,1053.48,133.93Arizona,18.6,35,28,84,96,899.47,110.35Arkansas,22.4,18,26,94,95,827.34,142.39California,12,35,28,91,89,878.41,165.63Colorado,13.6,37,28,79,95,835.5,139.91Connecticut,10.8,46,36,87,82,1068.73,167.02Delaware,16.2,38,30,87,99,1137.87,151.48District of Columbia,5.9,34,27,100,100,1273.89,136.05Florida,17.9,21,29,92,94,1160.13,144.18Georgia,15.6,19,25,95,93,913.15,142.8Hawaii,17.5,54,41,82,87,861.18,120.92Idaho,15.3,36,29,85,98,641.96,82.75Illinois,12.8,36,34,94,96,803.11,139.15Indiana,14.5,25,29,95,95,710.46,108.92Iowa,15.7,17,25,97,87,649.06,114.47Kansas,17.8,27,24,77,85,780.45,133.8Kentucky,21.4,19,23,78,76,872.51,137.13Louisiana,20.5,35,33,73,98,1281.55,194.78Maine,15.1,38,30,87,84,661.88,96.57Maryland,12.5,34,32,71,99,1048.78,192.7Massachusetts,8.2,23,35,87,80,1011.14,135.63Michigan,14.1,24,28,95,77,1110.61,152.26Minnesota,9.6,23,29,88,88,777.18,133.35Mississippi,17.6,15,31,10,100,896.07,155.77Missouri,16.1,43,34,92,84,790.32,144.45Montana,21.4,39,44,84,85,816.21,85.15Nebraska,14.9,13,35,93,90,732.28,114.82Nevada,14.7,37,32,95,99,1029.87,138.71New Hampshire,11.6,35,30,87,83,746.54,120.21New Jersey,11.2,16,28,86,78,1301.52,159.85New Mexico,18.4,19,27,67,98,869.85,120.75New York,12.3,32,29,88,80,1234.31,150.01North Carolina,16.8,39,31,94,81,708.24,127.82North Dakota,23.9,23,42,99,86,688.75,109.72Ohio,14.1,28,34,99,82,697.73,133.52Oklahoma,19.9,32,29,92,94,881.51,178.86Oregon,12.8,33,26,67,90,804.71,104.61Pennsylvania,18.2,50,31,96,88,905.99,153.86Rhode Island,11.1,34,38,92,79,1148.99,148.58South Carolina,23.9,38,41,96,81,858.97,116.29South Dakota,19.4,31,33,98,86,669.31,96.87Tennessee,19.5,21,29,82,81,767.91,155.57Texas,19.4,40,38,91,87,1004.75,156.83Utah,11.3,43,16,88,96,809.38,109.48Vermont,13.6,30,30,96,95,716.2,109.61Virginia,12.7,19,27,87,88,768.95,153.72Washington,10.6,42,33,82,86,890.03,111.62West Virginia,23.8,34,28,97,87,992.61,152.56Wisconsin,13.8,36,33,39,84,670.31,106.62Wyoming,17.4,42,32,81,90,791.14,122.04
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
import os
2+
import csv
3+
from collections import namedtuple
4+
from typing import List
5+
6+
Record = namedtuple(
7+
'Record',
8+
'state,drivers_fatal_collisions,drivers_speeding,drivers_alcohol_impaired,'
9+
'drivers_not_distracted,drivers_first_collision,car_insurance,insurance_company_losses'
10+
)
11+
12+
class BadDriversResearch:
13+
14+
def __init__(self):
15+
self.__data = []
16+
17+
18+
base_folder = os.path.dirname(__file__)
19+
data_file = os.path.join(base_folder, 'bad-drivers.csv')
20+
21+
with open(data_file) as f:
22+
reader = csv.DictReader(f)
23+
24+
for row in reader:
25+
record = self.__parse_row(row)
26+
self.__data.append(record)
27+
28+
def __parse_row(self, row):
29+
row['drivers_fatal_collisions'] = float(row['drivers_fatal_collisions'])
30+
row['drivers_speeding'] = int(row['drivers_speeding'])
31+
row['drivers_alcohol_impaired'] = float(row['drivers_alcohol_impaired'])
32+
row['drivers_not_distracted'] = float(row['drivers_not_distracted'])
33+
row['drivers_first_collision'] = float(row['drivers_first_collision'])
34+
row['car_insurance'] = float(row['car_insurance'])
35+
row['insurance_company_losses'] = float(row['insurance_company_losses'])
36+
37+
record = Record( **row )
38+
return record
39+
40+
def get_states(self) -> List[str]:
41+
for data in self.__data:
42+
yield data.state
43+
44+
def sort_states_by_died_drivers(self) -> List[Record]:
45+
return sorted(self.__data, key=lambda r: r.drivers_fatal_collisions, reverse=True)
46+
47+
def sort_states_by_speed(self) -> List[Record]:
48+
return sorted(self.__data, key=lambda r: r.drivers_speeding, reverse=True)
49+
50+
def sort_states_by_alcohol(self) -> List[Record]:
51+
return sorted(self.__data, key=lambda r: r.drivers_alcohol_impaired, reverse=True)
52+
53+
def sort_states_by_insurance_company_loss(self) -> List[Record]:
54+
return sorted(self.__data, key=lambda r: r.insurance_company_losses, reverse=True)
55+
56+
def sort_states_by_alcohol(self) -> List[Record]:
57+
return sorted(self.__data, key=lambda r: r.drivers_alcohol_impaired, reverse=True)

0 commit comments

Comments
 (0)