dhrumi commited on
Commit
da261e6
·
1 Parent(s): a840e9f

Initial commit

Browse files
State_wise_total(EV)/2009.csv ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ State,Total Consolidated
2
+ AP,623
3
+ AR,1
4
+ AS,5
5
+ BR,17
6
+ CG,116
7
+ CH,1
8
+ DD,12
9
+ DL,724
10
+ GA,5
11
+ GJ,381
12
+ HR,18
13
+ JH,24
14
+ JK,5
15
+ KA,997
16
+ KL,322
17
+ LD,10
18
+ MH,721
19
+ MP,689
20
+ OR,325
21
+ PB,63
22
+ PY,155
23
+ RJ,63
24
+ TN,1800
25
+ UK,20
26
+ UP,220
27
+ WB,91
28
+ Total,7408
State_wise_total(EV)/2010.csv ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ State,Total Consolidated
2
+ AP,254
3
+ AR,1
4
+ AS,6
5
+ BR,77
6
+ CG,172
7
+ CH,3
8
+ DD,3
9
+ DL,614
10
+ GA,24
11
+ GJ,241
12
+ HP,2
13
+ HR,7
14
+ JH,4
15
+ JK,5
16
+ KA,624
17
+ KL,171
18
+ LD,14
19
+ MH,615
20
+ MP,180
21
+ MZ,2
22
+ NL,1
23
+ OR,73
24
+ PB,74
25
+ PY,79
26
+ RJ,82
27
+ SK,2
28
+ TN,859
29
+ UK,15
30
+ UP,312
31
+ WB,119
32
+ Total,4635
State_wise_total(EV)/2011.csv ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ State,Total Consolidated
2
+ AP,81
3
+ AS,2
4
+ BR,156
5
+ CG,270
6
+ DD,7
7
+ DL,741
8
+ GA,29
9
+ GJ,502
10
+ HP,2
11
+ HR,14
12
+ JH,7
13
+ JK,10
14
+ KA,1028
15
+ KL,126
16
+ LD,16
17
+ MH,999
18
+ MN,5
19
+ MP,312
20
+ OR,102
21
+ PB,545
22
+ PY,40
23
+ RJ,342
24
+ SK,2
25
+ TN,703
26
+ UK,29
27
+ UP,625
28
+ WB,269
29
+ Total,6964
State_wise_total(EV)/2012.csv ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ State,Total Consolidated
2
+ AP,19
3
+ AR,1
4
+ AS,4
5
+ BR,20
6
+ CG,184
7
+ CH,2
8
+ DD,1
9
+ DL,369
10
+ GA,31
11
+ GJ,434
12
+ HP,3
13
+ HR,21
14
+ JH,15
15
+ JK,5
16
+ KA,1104
17
+ KL,104
18
+ LD,9
19
+ MH,511
20
+ ML,1
21
+ MP,161
22
+ MZ,2
23
+ OR,121
24
+ PB,617
25
+ PY,47
26
+ RJ,352
27
+ SK,3
28
+ TN,674
29
+ UK,48
30
+ UP,393
31
+ WB,243
32
+ Total,5499
State_wise_total(EV)/2013.csv ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ State,Total Consolidated
2
+ AP,19
3
+ AS,3
4
+ BR,14
5
+ CG,78
6
+ CH,1
7
+ DL,115
8
+ GA,19
9
+ GJ,108
10
+ HP,2
11
+ HR,6
12
+ JH,16
13
+ JK,4
14
+ KA,548
15
+ KL,63
16
+ LD,5
17
+ MH,571
18
+ ML,3
19
+ MP,51
20
+ NL,3
21
+ OR,102
22
+ PB,178
23
+ PY,25
24
+ RJ,171
25
+ TN,364
26
+ TR,1
27
+ UK,25
28
+ UP,202
29
+ WB,32
30
+ Total,2729
State_wise_total(EV)/2014.csv ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ State,Total Consolidated
2
+ AP,12
3
+ AS,4
4
+ BR,11
5
+ CG,123
6
+ DL,46
7
+ GA,9
8
+ GJ,78
9
+ HP,1
10
+ HR,9
11
+ JH,4
12
+ JK,4
13
+ KA,606
14
+ KL,22
15
+ LD,2
16
+ MH,902
17
+ ML,1
18
+ MP,40
19
+ OR,51
20
+ PB,31
21
+ PY,4
22
+ RJ,89
23
+ SK,1
24
+ TN,177
25
+ UK,9
26
+ UP,143
27
+ WB,2
28
+ Total,2381
State_wise_total(EV)/2015.csv ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ State,Total Consolidated
2
+ AP,9
3
+ AS,23
4
+ BR,69
5
+ CG,86
6
+ CH,2
7
+ DD,2
8
+ DL,3564
9
+ GA,4
10
+ GJ,78
11
+ HP,4
12
+ HR,55
13
+ JH,194
14
+ JK,4
15
+ KA,686
16
+ KL,26
17
+ LD,4
18
+ MH,999
19
+ MP,85
20
+ NL,1
21
+ OR,47
22
+ PB,18
23
+ PY,11
24
+ RJ,674
25
+ SK,1
26
+ TN,83
27
+ UK,15
28
+ UP,1016
29
+ WB,30
30
+ Total,7790
State_wise_total(EV)/2016.csv ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ State,Total Consolidated
2
+ AN,1
3
+ AP,20
4
+ AR,1
5
+ AS,19
6
+ BR,1100
7
+ CG,192
8
+ CH,1
9
+ DD,2
10
+ DL,21680
11
+ GA,33
12
+ GJ,141
13
+ HP,4
14
+ HR,1375
15
+ JH,705
16
+ KA,587
17
+ KL,20
18
+ LD,5
19
+ MH,928
20
+ ML,1
21
+ MN,2
22
+ MP,847
23
+ MZ,2
24
+ OR,25
25
+ PB,37
26
+ PY,7
27
+ RJ,3999
28
+ TN,82
29
+ UK,1158
30
+ UP,15315
31
+ WB,1530
32
+ Total,49819
State_wise_total(EV)/2017.csv ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ State,Total Consolidated
2
+ AS,3831
3
+ BR,3594
4
+ CG,945
5
+ CH,23
6
+ DD,1
7
+ DL,17850
8
+ GA,38
9
+ GJ,173
10
+ HP,15
11
+ HR,2487
12
+ JH,1352
13
+ JK,1
14
+ KA,708
15
+ KL,79
16
+ MH,943
17
+ MN,5
18
+ MP,1409
19
+ OR,212
20
+ PB,137
21
+ PY,9
22
+ RJ,3945
23
+ TN,109
24
+ TR,2
25
+ UK,4223
26
+ UP,40648
27
+ WB,4452
28
+ Total,87191
State_wise_total(EV)/2018.csv ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ State,Total Consolidated
2
+ AN,20
3
+ AP,1180
4
+ AR,1
5
+ AS,7398
6
+ BR,8465
7
+ CG,1903
8
+ CH,213
9
+ DD,19
10
+ DL,20902
11
+ GA,25
12
+ GJ,500
13
+ HP,62
14
+ HR,4626
15
+ JH,1957
16
+ JK,90
17
+ KA,2259
18
+ KL,288
19
+ MH,4632
20
+ ML,2
21
+ MN,39
22
+ MP,2743
23
+ OR,1358
24
+ PB,364
25
+ PY,87
26
+ RJ,4676
27
+ TN,1338
28
+ TR,32
29
+ UK,5067
30
+ UP,53199
31
+ WB,6728
32
+ Total,130173
State_wise_total(EV)/2019.csv ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ State,Total Consolidated
2
+ AN,2
3
+ AP,2157
4
+ AR,1
5
+ AS,10859
6
+ BR,12380
7
+ CG,2744
8
+ CH,507
9
+ DD,19
10
+ DL,23221
11
+ GA,42
12
+ GJ,947
13
+ HP,54
14
+ HR,5107
15
+ JH,1932
16
+ JK,75
17
+ KA,6138
18
+ KL,503
19
+ LA,1
20
+ LD,1
21
+ MH,7316
22
+ ML,13
23
+ MN,251
24
+ MP,3686
25
+ MZ,1
26
+ NL,29
27
+ OR,1160
28
+ PB,961
29
+ PY,81
30
+ RJ,6636
31
+ TN,3450
32
+ TR,1459
33
+ UK,5817
34
+ UP,55785
35
+ WB,13533
36
+ Total,166868
State_wise_total(EV)/2020.csv ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ State,Total Consolidated
2
+ AN,36
3
+ AP,1643
4
+ AR,4
5
+ AS,8357
6
+ BR,12446
7
+ CG,1490
8
+ CH,369
9
+ DD,24
10
+ DL,12377
11
+ GA,82
12
+ GJ,1123
13
+ HP,181
14
+ HR,2980
15
+ JH,1516
16
+ JK,74
17
+ KA,9688
18
+ KL,1370
19
+ LD,7
20
+ MH,7130
21
+ ML,3
22
+ MN,102
23
+ MP,3361
24
+ MZ,1
25
+ NL,11
26
+ OR,903
27
+ PB,833
28
+ PY,89
29
+ RJ,5605
30
+ TN,5697
31
+ TR,3419
32
+ UK,2392
33
+ UP,31256
34
+ WB,10079
35
+ Total,124648
State_wise_total(EV)/2021.csv ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ State,Total Consolidated
2
+ AN,92
3
+ AP,9678
4
+ AR,2
5
+ AS,15632
6
+ BR,23084
7
+ CG,4216
8
+ CH,731
9
+ DD,29
10
+ DL,25806
11
+ GA,1095
12
+ GJ,9762
13
+ HP,327
14
+ HR,8658
15
+ JH,3740
16
+ JK,1147
17
+ KA,33298
18
+ KL,8732
19
+ LA,6
20
+ LD,4
21
+ MH,29916
22
+ ML,5
23
+ MN,114
24
+ MP,10442
25
+ MZ,1
26
+ NL,2
27
+ OR,5626
28
+ PB,4648
29
+ PY,405
30
+ RJ,23460
31
+ TN,30033
32
+ TR,2432
33
+ UK,5322
34
+ UP,66684
35
+ WB,6408
36
+ Total,331537
State_wise_total(EV)/2022.csv ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ State,Total Consolidated
2
+ AN,23
3
+ AP,29358
4
+ AR,2
5
+ AS,40699
6
+ BR,55751
7
+ CG,22364
8
+ CH,2719
9
+ DD,142
10
+ DL,62249
11
+ GA,5682
12
+ GJ,68993
13
+ HP,1011
14
+ HR,25862
15
+ JH,13680
16
+ JK,4690
17
+ KA,95846
18
+ KL,39617
19
+ LA,40
20
+ LD,1
21
+ MH,136063
22
+ ML,41
23
+ MN,341
24
+ MP,36818
25
+ MZ,36
26
+ NL,3
27
+ OR,28446
28
+ PB,14057
29
+ PY,1481
30
+ RJ,78221
31
+ TN,66995
32
+ TR,4177
33
+ UK,15561
34
+ UP,162868
35
+ WB,11156
36
+ Total,1024993
State_wise_total(EV)/2023.csv ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ State,Total Consolidated
2
+ AN,26
3
+ AP,32877
4
+ AR,21
5
+ AS,60788
6
+ BR,88213
7
+ CG,38248
8
+ CH,6415
9
+ DD,161
10
+ DL,73695
11
+ GA,9482
12
+ GJ,88613
13
+ HP,1132
14
+ HR,30505
15
+ JH,21125
16
+ JK,9747
17
+ KA,152667
18
+ KL,75810
19
+ LA,28
20
+ LD,6
21
+ MH,194342
22
+ ML,115
23
+ MN,399
24
+ MP,67988
25
+ MZ,167
26
+ NL,6
27
+ OR,44543
28
+ PB,25746
29
+ PY,2638
30
+ RJ,93766
31
+ TN,90305
32
+ TR,6311
33
+ UK,16795
34
+ UP,278305
35
+ WB,21430
36
+ Total,1532415
State_wise_total(EV)/2024.csv ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ State,Total Consolidated
2
+ AN,82
3
+ AP,57489
4
+ AR,99
5
+ AS,68422
6
+ BR,113144
7
+ CG,49476
8
+ CH,7071
9
+ DD,492
10
+ DL,85296
11
+ GA,11755
12
+ GJ,80344
13
+ HP,2106
14
+ HR,47801
15
+ JH,26279
16
+ JK,13366
17
+ KA,185436
18
+ KL,86898
19
+ LA,20
20
+ LD,5
21
+ MH,250906
22
+ ML,832
23
+ MN,445
24
+ MP,101438
25
+ MZ,574
26
+ NL,45
27
+ OR,65973
28
+ PB,47151
29
+ PY,4740
30
+ RJ,111227
31
+ SK,17
32
+ TN,135492
33
+ TR,9624
34
+ UK,20223
35
+ UP,378403
36
+ WB,46564
37
+ Total,2009235
State_wise_total(EV)/2025.csv ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ State,Total Consolidated
2
+ AN,31
3
+ AP,14490
4
+ AR,60
5
+ AS,17927
6
+ BR,29460
7
+ CG,13171
8
+ CH,1843
9
+ DD,175
10
+ DL,32862
11
+ GA,2911
12
+ GJ,19613
13
+ HP,784
14
+ HR,12622
15
+ JH,7521
16
+ JK,3019
17
+ KA,58623
18
+ KL,30519
19
+ LA,1
20
+ LD,6
21
+ MH,83852
22
+ ML,158
23
+ MN,204
24
+ MP,34535
25
+ MZ,274
26
+ NL,26
27
+ OR,19240
28
+ PB,14097
29
+ PY,1434
30
+ RJ,29581
31
+ SK,10
32
+ TN,47008
33
+ TR,2957
34
+ UK,4545
35
+ UP,112251
36
+ WB,18335
37
+ Total,614145
app.py ADDED
@@ -0,0 +1,741 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import pandas as pd
3
+ import sqlite3
4
+ import plotly.express as px
5
+ from io import BytesIO
6
+ import json
7
+ import os
8
+ import sqlite3
9
+ import pandas as pd
10
+ import streamlit as st
11
+ import re
12
+ import plotly.express as px
13
+ import json
14
+ from difflib import get_close_matches
15
+
16
+
17
+ # ---------------------- Config ----------------------
18
+ st.set_page_config(page_title="Vehicle Dashboard India", layout="wide")
19
+
20
+ # ---------------------- DB Connection ----------------------
21
+ @st.cache_data
22
+ def load_data(query):
23
+ with sqlite3.connect(r"vehicle_analysis_1.db") as conn:
24
+ df = pd.read_sql_query(query, conn)
25
+ for col in ['row_value', 'column_value']:
26
+ if col in df.columns:
27
+ df = df[df[col] != col]
28
+ return df
29
+
30
+ # ---------------------- Setup: Load State Mapping ----------------------
31
+ @st.cache_data
32
+ def load_state_rto_mapping():
33
+ with open("state_rto_data.json", "r") as f:
34
+ data = json.load(f)
35
+ return {
36
+ entry["State Code"]: {
37
+ "state_name": entry["Full State Name"].strip(),
38
+ "rtos": [rto.strip() for rto in entry["RTO List"].split(",")]
39
+ }
40
+ for entry in data
41
+ }
42
+
43
+ state_rto_map = load_state_rto_mapping()
44
+ abbr_to_full = {abbr: info["state_name"] for abbr, info in state_rto_map.items()}
45
+
46
+ # Utility function
47
+ def load_csv_data(folder_path):
48
+ all_data = []
49
+ for filename in os.listdir(folder_path):
50
+ if filename.endswith(".csv"):
51
+ file_path = os.path.join(folder_path, filename)
52
+ try:
53
+ df = pd.read_csv(file_path)
54
+ df = df.iloc[:-1]
55
+ year = filename.split('_')[-1].replace('.csv', '')
56
+ df['year'] = year
57
+ all_data.append(df)
58
+ except Exception:
59
+ pass
60
+ return pd.concat(all_data, ignore_index=True) if all_data else None
61
+
62
+
63
+ def dashboard_overview():
64
+ st.title("📊 Vehicle Registration Summary")
65
+
66
+ # Load data
67
+ df_total = load_csv_data(r"state_wise_total")
68
+ df_ev = load_csv_data(r"State_wise_total(EV)")
69
+ df_fuel = load_data("SELECT * FROM fuel_vs_state")
70
+ df_class = load_data("SELECT * FROM vehicle_class_vs_state")
71
+ df_cat = load_data("SELECT * FROM vehicle_category_group_vs_state")
72
+
73
+ # Clean the data
74
+ df_total['count'] = pd.to_numeric(df_total['Total Consolidated'], errors='coerce').fillna(0)
75
+ df_ev['count'] = pd.to_numeric(df_ev['Total Consolidated'], errors='coerce').fillna(0)
76
+ df_fuel['count'] = pd.to_numeric(df_fuel['count'], errors='coerce').fillna(0)
77
+ df_class['count'] = pd.to_numeric(df_class['count'], errors='coerce').fillna(0)
78
+ df_cat['count'] = pd.to_numeric(df_cat['count'], errors='coerce').fillna(0)
79
+
80
+ df_total['year'] = pd.to_numeric(df_total['year'], errors='coerce')
81
+ df_ev['year'] = pd.to_numeric(df_ev['year'], errors='coerce')
82
+
83
+ # National totals
84
+ total_count = df_total['count'].sum()
85
+ total_ev = df_ev['count'].sum()
86
+ ev_share = round((total_ev / total_count) * 100, 2) if total_count else 0
87
+
88
+ col1, col2, col3 = st.columns(3)
89
+ col1.metric("Total Vehicles", f"{int(total_count):,}")
90
+ col2.metric("EV Registered", f"{int(total_ev):,}")
91
+ col3.metric("EV Share", f"{ev_share}%")
92
+
93
+ # 1. Year-wise state-wise registration graph
94
+ if not df_total.empty:
95
+ min_year_total, max_year_total = int(df_total["year"].min()), int(df_total["year"].max())
96
+ selected_years_total = st.slider("Select Year Range for Registration", min_year_total, max_year_total, (min_year_total, max_year_total))
97
+ df_total_filtered = df_total[(df_total["year"] >= selected_years_total[0]) & (df_total["year"] <= selected_years_total[1])]
98
+ fig1 = px.line(df_total_filtered, x="year", y="count", color="State", title=f"Year-wise Registration by State ({selected_years_total[0]} - {selected_years_total[1]})")
99
+ st.plotly_chart(fig1, use_container_width=True)
100
+ else:
101
+ st.warning("No data available for year-wise registration.")
102
+
103
+ # 2. Fuel type trend
104
+ fuel_types = sorted(df_fuel['row_value'].dropna().unique())
105
+ fuel_options = ["Select All"] + fuel_types
106
+ selected_fuel_types = st.multiselect("Select Fuel Type(s)", fuel_options, help="Select 'Select All' to include all fuel types")
107
+ if "Select All" in selected_fuel_types:
108
+ selected_fuel_types = fuel_types
109
+ if selected_fuel_types:
110
+ df_fuel_filtered = df_fuel[df_fuel['row_value'].isin(selected_fuel_types)]
111
+ df_fuel_grouped = df_fuel_filtered.groupby(['year', 'row_value'])['count'].sum().reset_index()
112
+ fig2 = px.area(df_fuel_grouped, x="year", y="count", color="row_value", title="National Fuel Type Trend Over Years")
113
+ st.plotly_chart(fig2, use_container_width=True)
114
+
115
+ # 3. Vehicle class trend
116
+ vehicle_classes = sorted(df_class['row_value'].dropna().unique())
117
+ class_options = ["Select All"] + vehicle_classes
118
+ selected_vehicle_classes = st.multiselect("Select Vehicle Class(es)", class_options, help="Select 'Select All' to include all classes")
119
+ if "Select All" in selected_vehicle_classes:
120
+ selected_vehicle_classes = vehicle_classes
121
+ if selected_vehicle_classes:
122
+ df_class_filtered = df_class[df_class['row_value'].isin(selected_vehicle_classes)]
123
+ df_class_grouped = df_class_filtered.groupby(['year', 'row_value'])['count'].sum().reset_index()
124
+ fig3 = px.area(df_class_grouped, x="year", y="count", color="row_value", title="Vehicle Class Trend Across India")
125
+ st.plotly_chart(fig3, use_container_width=True)
126
+
127
+ # 4. EV adoption graph
128
+ ev_states = sorted(df_ev['State'].dropna().unique())
129
+ ev_options = ["Select All"] + ev_states
130
+ selected_ev_states = st.multiselect("Select States for EV Adoption", ev_options, help="Select 'Select All' to include all states")
131
+ if "Select All" in selected_ev_states:
132
+ selected_ev_states = ev_states
133
+ if selected_ev_states:
134
+ df_ev_filtered = df_ev[df_ev['State'].isin(selected_ev_states)]
135
+ df_ev_statewise = df_ev_filtered.groupby("State")["count"].sum().reset_index().sort_values(by="count", ascending=False).head(10)
136
+ fig5 = px.bar(df_ev_statewise, x="State", y="count", title="Top 10 States by EV Registration")
137
+ st.plotly_chart(fig5, use_container_width=True)
138
+
139
+ # 5. EV vs. Total Vehicle Registrations Over Time
140
+ df_ev_vs_total = df_ev_filtered.groupby("year")["count"].sum().reset_index()
141
+ df_total_vs_ev = pd.merge(df_total.groupby("year")['count'].sum().reset_index(), df_ev_vs_total, on="year", suffixes=('_total', '_ev'))
142
+ fig6 = px.line(df_total_vs_ev, x="year", y=["count_total", "count_ev"], title="EV vs Total Vehicle Registrations Over Time")
143
+ st.plotly_chart(fig6, use_container_width=True)
144
+
145
+
146
+ def ev_insights():
147
+ st.title("⚡ Electric Vehicle (EV) Analysis")
148
+
149
+ # Load State Abbreviation Mapping from JSON
150
+ with open("state_rto_data.json", "r") as f:
151
+ state_data = json.load(f)
152
+
153
+ state_code_to_name = {
154
+ entry["State Code"].strip().lower(): entry["Full State Name"].strip()
155
+ for entry in state_data
156
+ }
157
+ state_name_to_code = {
158
+ entry["Full State Name"].strip(): entry["State Code"].strip().lower()
159
+ for entry in state_data
160
+ }
161
+
162
+ # 1️⃣ EV Registrations by Fuel Type (State-wise)
163
+ df_ev_state = load_data("SELECT * FROM fuel_vs_stateev")
164
+ unique_states = df_ev_state["column_value"].dropna().unique()
165
+ state_full_names = [state_code_to_name.get(state.strip().lower(), state) for state in unique_states]
166
+
167
+ state_selection = st.selectbox("Select a State", sorted(state_full_names))
168
+ selected_abbr = state_name_to_code.get(state_selection.strip(), state_selection.strip().lower())
169
+ filtered = df_ev_state[df_ev_state["column_value"].str.lower() == selected_abbr]
170
+
171
+ fig1 = px.bar(
172
+ filtered, x="year", y="count", color="row_value", barmode="group",
173
+ title=f"EV Registrations by Fuel Type in {state_selection}"
174
+ )
175
+ st.plotly_chart(fig1, use_container_width=True)
176
+
177
+ # 2️⃣ EV Growth Over Years (National) with Year Range Filter
178
+ st.subheader("📈 National EV Growth Over Years")
179
+ ev_growth = df_ev_state.groupby("year")["count"].sum().reset_index()
180
+
181
+ if not ev_growth.empty:
182
+ min_year_nat, max_year_nat = int(ev_growth["year"].min()), int(ev_growth["year"].max())
183
+ selected_years_nat = st.slider("Select Year Range (National)", min_year_nat, max_year_nat, (min_year_nat, max_year_nat))
184
+ ev_growth = ev_growth[(ev_growth["year"] >= selected_years_nat[0]) & (ev_growth["year"] <= selected_years_nat[1])]
185
+ else:
186
+ st.warning("No national EV data available for selected range.")
187
+
188
+ fig2 = px.line(ev_growth, x="year", y="count", title="Total EVs Registered per Year in India")
189
+ st.plotly_chart(fig2, use_container_width=True)
190
+
191
+
192
+ def fuel_norm_distribution_dashboard(root_dir, state_mapping_file, start_year=2009, end_year=2025):
193
+
194
+ # Folder paths
195
+ folders = {
196
+ "statewise": os.path.join(root_dir, "Fuel_vs_state"),
197
+ "norms": os.path.join(root_dir, "Norm_vs_state"),
198
+ "fuelwise": os.path.join(root_dir, "Fuel_vs_Norm")
199
+ }
200
+
201
+ # Load the state mapping JSON file
202
+ with open(state_mapping_file, 'r') as f:
203
+ state_mapping = json.load(f)
204
+
205
+ # Create a dictionary mapping state codes to full state names (case-insensitive key mapping)
206
+ state_dict = {item["State Code"].upper(): item["Full State Name"].strip() for item in state_mapping}
207
+
208
+ # Function to load data
209
+ def load_data(folder_path, year_file):
210
+ file_path = os.path.join(folder_path, year_file)
211
+ if os.path.exists(file_path):
212
+ df = pd.read_csv(file_path)
213
+ # Remove 'Total' row/column if present
214
+ if "Total" in df.columns:
215
+ df = df.drop(columns=["Total"])
216
+ if df.iloc[:, 0].str.contains("Total", na=False).any():
217
+ df = df[~df.iloc[:, 0].str.contains("Total", na=False)]
218
+ return df
219
+ else:
220
+ st.warning(f"File not found: {file_path}")
221
+ return pd.DataFrame()
222
+
223
+ # Function to load data for multiple years
224
+ def load_data_for_year_range(folder_path, start_year, end_year):
225
+ combined_df = pd.DataFrame()
226
+ for year in range(start_year, end_year + 1):
227
+ year_file = f"{year}.csv"
228
+ df = load_data(folder_path, year_file)
229
+ combined_df = pd.concat([combined_df, df], ignore_index=True)
230
+ return combined_df
231
+
232
+ # Load data for selected year range
233
+ statewise_df = load_data_for_year_range(folders["statewise"], start_year, end_year)
234
+ norms_df = load_data_for_year_range(folders["norms"], start_year, end_year)
235
+ fuelwise_df = load_data_for_year_range(folders["fuelwise"], start_year, end_year)
236
+
237
+ # Set up Streamlit app title
238
+ st.title("🛢 Fuel Allocation & Emission Norms Dashboard (2009–2025)")
239
+
240
+ # Tabs for different visualizations
241
+ tab1, tab2, tab3 = st.tabs([
242
+ "📍 Fuel Distribution over States",
243
+ "📊 Norm Distribution by State",
244
+ "🔥 Emission by Fuel Type"
245
+ ])
246
+
247
+ # Tab 1: Statewise Fuel Allocation
248
+ with tab1:
249
+ st.subheader("Fuel Distribution Across States")
250
+ if not statewise_df.empty:
251
+ # Convert from wide to long format
252
+ melted_df = pd.melt(statewise_df, id_vars=["Fuel"], var_name="State", value_name="Fuel_Amount")
253
+
254
+ # Replace state codes with full state names (case-insensitive matching)
255
+ melted_df["State"] = melted_df["State"].apply(lambda x: state_dict.get(x.upper(), x))
256
+
257
+ # Allow users to select states (categories)
258
+ selected_states = st.multiselect("Select States", ["Select All"] + list(melted_df["State"].unique()), default=[], key="state_selection")
259
+
260
+ # If "Select All" is chosen, select all states
261
+ if "Select All" in selected_states:
262
+ selected_states = list(melted_df["State"].unique())
263
+
264
+ filtered_df = melted_df[melted_df["State"].isin(selected_states)]
265
+
266
+ # Create and display the plot
267
+ fig1 = px.bar(filtered_df, x="State", y="Fuel_Amount", color="Fuel",
268
+ title=f"Fuel Distribution from {start_year} to {end_year}",
269
+ labels={"Fuel_Amount": "Amount (in units)"}, barmode="group")
270
+ st.plotly_chart(fig1, use_container_width=True)
271
+
272
+ # Tab 2: Norm Distribution by State
273
+ with tab2:
274
+ st.subheader("Emission Norm Distribution by State")
275
+ if not norms_df.empty:
276
+ # Convert from wide to long format
277
+ melted_norms = pd.melt(norms_df, id_vars=["Norms"], var_name="State", value_name="Count")
278
+
279
+ # Replace state codes with full state names (case-insensitive matching)
280
+ melted_norms["State"] = melted_norms["State"].apply(lambda x: state_dict.get(x.upper(), x))
281
+
282
+ # Allow users to select a state
283
+ selected_states = st.multiselect("Select States", ["Select All"] + list(melted_norms["State"].unique()), default=[], key="norm_state_selection")
284
+
285
+ # If "Select All" is chosen, select all states
286
+ if "Select All" in selected_states:
287
+ selected_states = list(melted_norms["State"].unique())
288
+
289
+ filtered_norms = melted_norms[melted_norms["State"].isin(selected_states)]
290
+
291
+ # Create and display the plot
292
+ fig2 = px.bar(filtered_norms, x="State", y="Count", color="Norms",
293
+ title=f"Emission Norms Distribution from {start_year} to {end_year}",
294
+ labels={"Count": "Count of Norms"}, barmode="group")
295
+ st.plotly_chart(fig2, use_container_width=True)
296
+
297
+ # Tab 3: Fuelwise Emissions
298
+ with tab3:
299
+ st.subheader("Norm Emissions by Fuel Type")
300
+ if not fuelwise_df.empty:
301
+ # Check if 'Fuel' exists and others are norms
302
+ norm_columns = [col for col in fuelwise_df.columns if col != "Fuel"]
303
+ if "Fuel" in fuelwise_df.columns and len(norm_columns) > 0:
304
+ # Melt the DataFrame to long format
305
+ melted_fuelwise = pd.melt(fuelwise_df, id_vars=["Fuel"],
306
+ var_name="Norm_Type", value_name="Emission")
307
+
308
+ # Drop missing or non-numeric values if necessary
309
+ melted_fuelwise = melted_fuelwise.dropna()
310
+ melted_fuelwise["Emission"] = pd.to_numeric(melted_fuelwise["Emission"], errors="coerce")
311
+ melted_fuelwise = melted_fuelwise.dropna(subset=["Emission"])
312
+
313
+ # Allow users to select fuel categories
314
+ selected_fuels = st.multiselect("Select Fuel Types", ["Select All"] + list(melted_fuelwise["Fuel"].unique()), default=[], key="fuel_selection")
315
+
316
+ # If "Select All" is chosen, select all fuels
317
+ if "Select All" in selected_fuels:
318
+ selected_fuels = list(melted_fuelwise["Fuel"].unique())
319
+
320
+ filtered_fuelwise = melted_fuelwise[melted_fuelwise["Fuel"].isin(selected_fuels)]
321
+
322
+ # Create and display the plot
323
+ fig3 = px.bar(filtered_fuelwise, x="Fuel", y="Emission", color="Norm_Type",
324
+ title=f"Emission per Fuel Type from {start_year} to {end_year}",
325
+ labels={"Emission": "Emission Amount"}, barmode="stack")
326
+ st.plotly_chart(fig3, use_container_width=True)
327
+
328
+ # Additional visualization for Top Fuels emitting most pollution
329
+ top_fuels = melted_fuelwise.groupby("Fuel")["Emission"].sum().reset_index()
330
+ top_fuels_sorted = top_fuels.sort_values(by="Emission", ascending=False).head(10)
331
+
332
+ st.subheader("Top Fuels Emitting Most Pollution")
333
+ st.write(top_fuels_sorted)
334
+
335
+ fig4 = px.bar(top_fuels_sorted, x="Fuel", y="Emission", title="Top Fuels by Emission",
336
+ labels={"Emission": "Total Emission"}, color="Fuel")
337
+ st.plotly_chart(fig4, use_container_width=True)
338
+ else:
339
+ st.error("The required format was not found in 'fuelwise_df'. Ensure the file includes a 'Fuel' column and multiple norm-type columns.")
340
+
341
+
342
+ def state_analysis():
343
+ st.title("🗺 State Analysis")
344
+
345
+ # Load data
346
+ df_state = load_data("SELECT * FROM fuel_vs_state")
347
+ df_norm = load_data("SELECT * FROM norm_vs_state")
348
+
349
+ # State selection
350
+ state_options = sorted(df_state["column_value"].dropna().unique())
351
+ selected_state = st.selectbox("Select a State", state_options)
352
+
353
+ # Filter based on state
354
+ filtered = df_state[df_state["column_value"] == selected_state]
355
+ norm_filtered = df_norm[df_norm["column_value"] == selected_state]
356
+
357
+ # Tabs for Absolute and Normalized
358
+ tab1, tab2 = st.tabs(["⛽ Fuel analysis(State Wise)", "📊 Norm analysis(State Wise)"])
359
+
360
+ with tab1:
361
+ st.subheader(f"{selected_state} - Fuel Distribution")
362
+
363
+ # Fuel type filter with "Select All" option
364
+ fuel_types = sorted(filtered["row_value"].dropna().unique())
365
+ fuel_options = ["Select All"] + fuel_types
366
+ selected_fuels = st.multiselect(
367
+ "Select Fuel Types",
368
+ fuel_options,
369
+ default=[]
370
+ )
371
+
372
+ # Apply fuel filter
373
+ if "Select All" in selected_fuels or not selected_fuels:
374
+ selected_fuels = fuel_types
375
+ filtered = filtered[filtered["row_value"].isin(selected_fuels)]
376
+
377
+ if not filtered.empty:
378
+ # Year range filter
379
+ min_year, max_year = int(filtered["year"].min()), int(filtered["year"].max())
380
+ selected_years = st.slider("Select Year Range", min_year, max_year, (min_year, max_year))
381
+ filtered = filtered[(filtered["year"] >= selected_years[0]) & (filtered["year"] <= selected_years[1])]
382
+
383
+ # Plot
384
+ fig = px.bar(
385
+ filtered, x="year", y="count", color="row_value", barmode="group",
386
+ title=f"{selected_state} Vehicle Distribution by Fuel Type "
387
+ )
388
+ st.plotly_chart(fig, use_container_width=True)
389
+
390
+ # Download
391
+ csv = filtered.to_csv(index=False).encode("utf-8")
392
+ file_label = f"{selected_state.replace(' ', '_')}_fuel_data.csv"
393
+ st.download_button(
394
+ label="📥 Download Absolute Data as CSV",
395
+ data=csv,
396
+ file_name=file_label,
397
+ mime="text/csv"
398
+ )
399
+ else:
400
+ st.warning("No absolute data available for selected filters.")
401
+
402
+ with tab2:
403
+ st.subheader(f"{selected_state} - Norm Distribution")
404
+
405
+ # Norm fuel type filter with "Select All" option
406
+ norm_fuels = sorted(norm_filtered["row_value"].dropna().unique())
407
+ norm_fuel_options = ["Select All"] + norm_fuels
408
+ selected_norm_fuels = st.multiselect(
409
+ "Select Norm Types",
410
+ norm_fuel_options,
411
+ default=[],
412
+ key="norm_fuel"
413
+ )
414
+
415
+ # Apply norm fuel filter
416
+ if "Select All" in selected_norm_fuels or not selected_norm_fuels:
417
+ selected_norm_fuels = norm_fuels
418
+ norm_filtered = norm_filtered[norm_filtered["row_value"].isin(selected_norm_fuels)]
419
+
420
+ if not norm_filtered.empty:
421
+ min_year_norm, max_year_norm = int(norm_filtered["year"].min()), int(norm_filtered["year"].max())
422
+ selected_years_norm = st.slider(
423
+ "Select Year Range for Norm Data",
424
+ min_year_norm, max_year_norm,
425
+ (min_year_norm, max_year_norm),
426
+ key="norm_slider"
427
+ )
428
+ norm_filtered = norm_filtered[
429
+ (norm_filtered["year"] >= selected_years_norm[0]) &
430
+ (norm_filtered["year"] <= selected_years_norm[1])
431
+ ]
432
+
433
+ # Plot
434
+ fig_norm = px.bar(
435
+ norm_filtered, x="year", y="count", color="row_value", barmode="stack",
436
+ title=f"{selected_state} Norm Vehicle Distribution"
437
+ )
438
+ st.plotly_chart(fig_norm, use_container_width=True)
439
+
440
+ # Download
441
+ csv_norm = norm_filtered.to_csv(index=False).encode("utf-8")
442
+ file_label_norm = f"{selected_state.replace(' ', '_')}_norm_data.csv"
443
+ st.download_button(
444
+ label="📥 Download Norm Data as CSV",
445
+ data=csv_norm,
446
+ file_name=file_label_norm,
447
+ mime="text/csv"
448
+ )
449
+ else:
450
+ st.warning("No norm data available for selected filters.")
451
+
452
+
453
+ def vehicle_class_category():
454
+ st.title("🚗 Vehicle Class & Category")
455
+ # Load data
456
+ df_class = load_data("SELECT * FROM vehicle_class_vs_state")
457
+ df_cat = load_data("SELECT * FROM vehicle_category_group_vs_state")
458
+
459
+ # Unique states
460
+ unique_states = df_class["column_value"].dropna().unique()
461
+ selected_state = st.selectbox("Select a State", sorted(unique_states), key="state_select")
462
+
463
+ # Filter state-wise
464
+ df_class_filtered = df_class[df_class["column_value"] == selected_state]
465
+ df_cat_filtered = df_cat[df_cat["column_value"] == selected_state]
466
+
467
+
468
+ # Tabs for Class and Category
469
+ tab1, tab2 = st.tabs(["🚘 Vehicle Class", "🚛 Vehicle Category"])
470
+
471
+ with tab1:
472
+ st.subheader(f"Vehicle Class Trend - {selected_state}")
473
+
474
+ # Row_value filter for class
475
+ row_class_values = sorted(df_class_filtered["row_value"].dropna().unique())
476
+ selected_class_types = st.multiselect(
477
+ "Select Vehicle Class Types",
478
+ options=row_class_values,
479
+ default=[],
480
+ key="class_select",
481
+ help="Leave empty to show all vehicle classes"
482
+ )
483
+ if selected_class_types:
484
+ df_class_filtered = df_class_filtered[df_class_filtered["row_value"].isin(selected_class_types)]
485
+
486
+ # Graph
487
+ fig1 = px.line(
488
+ df_class_filtered,
489
+ x="year",
490
+ y="count",
491
+ color="row_value",
492
+ title=f"{selected_state} - Vehicle Class Trend"
493
+ )
494
+ st.plotly_chart(fig1, use_container_width=True, key="vehicle_class_trend")
495
+
496
+ # Download button for vehicle class
497
+ csv_class = df_class_filtered.to_csv(index=False).encode('utf-8')
498
+ st.download_button(
499
+ label="📥 Download Vehicle Class Data",
500
+ data=csv_class,
501
+ file_name=f"{selected_state}_vehicle_class_data.csv",
502
+ mime="text/csv"
503
+ )
504
+
505
+ with tab2:
506
+ st.subheader(f"Vehicle Category Trend - {selected_state}")
507
+
508
+ # Row_value filter for category
509
+ row_cat_values = sorted(df_cat_filtered["row_value"].dropna().unique())
510
+ selected_cat_types = st.multiselect(
511
+ "Select Vehicle Category Types",
512
+ options=row_cat_values,
513
+ default=[],
514
+ key="category_select",
515
+ help="Leave empty to show all vehicle categories"
516
+ )
517
+ if selected_cat_types:
518
+ df_cat_filtered = df_cat_filtered[df_cat_filtered["row_value"].isin(selected_cat_types)]
519
+
520
+ # Graph
521
+ fig2 = px.line(
522
+ df_cat_filtered,
523
+ x="year",
524
+ y="count",
525
+ color="row_value",
526
+ title=f"{selected_state} - Vehicle Category Trend"
527
+ )
528
+ st.plotly_chart(fig2, use_container_width=True, key="vehicle_category_trend")
529
+
530
+ # Download button for vehicle category
531
+ csv_category = df_cat_filtered.to_csv(index=False).encode('utf-8')
532
+ st.download_button(
533
+ label="📥 Download Vehicle Category Data",
534
+ data=csv_category,
535
+ file_name=f"{selected_state}_vehicle_category_data.csv",
536
+ mime="text/csv")
537
+
538
+
539
+ def ask_with_llm():
540
+ """
541
+ Single function to run the entire Streamlit dashboard:
542
+ - Loads databases and mappings
543
+ - Parses natural-language queries
544
+ - Executes queries and renders results
545
+ """
546
+ # ---------- CONFIG ----------
547
+ DATABASE_PATH = r"vehicle_analysis_1.db"
548
+ STATE_RTO_JSON = r"state_rto_data.json"
549
+
550
+ TABLE_MAPPINGS = {
551
+ 'fuel': {'state': 'fuel_vs_state', 'state_ev': 'fuel_vs_stateev', 'rto': 'fuel_vs_rto', 'rto_ev': 'fuel_vs_rtoev'},
552
+ 'norm': {'state': 'norm_vs_state', 'state_ev': 'norm_vs_stateev', 'rto': 'norm_vs_rto', 'rto_ev': 'norm_vs_rtoev'},
553
+ 'category':{'state': 'vehicle_category_group_vs_state', 'state_ev': 'vehicle_category_group_vs_stateev', 'rto': 'vehicle_category_group_vs_rto', 'rto_ev': 'vehicle_category_group_vs_rtoev'},
554
+ 'class': {'state': 'vehicle_class_vs_state', 'state_ev': 'vehicle_class_vs_stateev', 'rto': None, 'rto_ev': 'vehicle_class_vs_rtoev'}
555
+ }
556
+ TABLE_TOTALS = {'state': 'state_wise_total', 'state_ev': 'state_wise_totalev'}
557
+
558
+ @st.cache_data
559
+ def load_all():
560
+ # Load DB tables
561
+ conn = sqlite3.connect(DATABASE_PATH)
562
+ df_map = {}
563
+ for dims in TABLE_MAPPINGS.values():
564
+ for tbl in dims.values():
565
+ if tbl and tbl not in df_map:
566
+ df_map[tbl] = pd.read_sql(f"SELECT * FROM {tbl}", conn)
567
+ for tbl in TABLE_TOTALS.values():
568
+ if tbl not in df_map:
569
+ df_map[tbl] = pd.read_sql(f"SELECT * FROM {tbl}", conn)
570
+ conn.close()
571
+
572
+ # Load JSON mapping
573
+ with open(STATE_RTO_JSON, 'r', encoding='utf-8') as f:
574
+ raw = json.load(f)
575
+ state_rto_map = {}
576
+ if isinstance(raw, dict):
577
+ for state, rtos in raw.items():
578
+ state_rto_map[state.lower()] = rtos
579
+ elif isinstance(raw, list):
580
+ for entry in raw:
581
+ if isinstance(entry, dict):
582
+ for state, rtos in entry.items():
583
+ state_rto_map[state.lower()] = rtos
584
+ else:
585
+ st.error("Invalid JSON format for state→RTO mapping.")
586
+
587
+ return df_map, state_rto_map
588
+
589
+ # Load data and mappings
590
+ df_map, state_rto_map = load_all()
591
+ STATES = df_map['fuel_vs_state']['column_value'].unique().tolist()
592
+ RTOS = df_map['fuel_vs_rto']['column_value'].unique().tolist()
593
+
594
+ # Parsers
595
+ def parse_ev(q: str) -> bool:
596
+ return bool(re.search(r"\bEV\b|electric|evs?\b", q, re.IGNORECASE))
597
+
598
+ def parse_dimension(q: str) -> str | None:
599
+ ql = q.lower()
600
+ for d in TABLE_MAPPINGS:
601
+ if re.search(rf"\b{d}\b", ql):
602
+ return d
603
+ for tok in re.findall(r"\w+", ql):
604
+ match = get_close_matches(tok, TABLE_MAPPINGS.keys(), n=1, cutoff=0.8)
605
+ if match:
606
+ return match[0]
607
+ return None
608
+
609
+ def parse_year_filter(q: str) -> tuple[str|None,int|None]:
610
+ ql = q.lower()
611
+ if m := re.search(r"after\s*(20\d{2})", ql): return ('>', int(m.group(1)))
612
+ if m := re.search(r"before\s*(20\d{2})", ql): return ('<', int(m.group(1)))
613
+ if m := re.search(r"in\s*(20\d{2})", ql): return ('==', int(m.group(1)))
614
+ if m := re.search(r"\b(20\d{2})\b", ql): return ('==', int(m.group(1)))
615
+ return (None, None)
616
+
617
+ def parse_top_n(q: str) -> int|None:
618
+ ql = q.lower()
619
+ if m := re.search(r"top\s*(\d+)\s*states?\b", ql):
620
+ return int(m.group(1))
621
+ return None
622
+
623
+ def parse_location(q: str) -> tuple[str|None,str|None]:
624
+ ql = q.lower()
625
+ for r in RTOS:
626
+ if r.lower() in ql:
627
+ return ('rto', r)
628
+ for s in STATES:
629
+ if s.lower() in ql:
630
+ return ('state', s)
631
+ for tok in re.findall(r"\w+", ql):
632
+ m = get_close_matches(tok, [s.lower() for s in STATES], n=1, cutoff=0.8)
633
+ if m:
634
+ return ('state', STATES[[s.lower() for s in STATES].index(m[0])])
635
+ for tok in re.findall(r"\w+", ql):
636
+ m = get_close_matches(tok, [r.lower() for r in RTOS], n=1, cutoff=0.8)
637
+ if m:
638
+ return ('rto', RTOS[[r.lower() for r in RTOS].index(m[0])])
639
+ return (None, None)
640
+
641
+ # Streamlit UI
642
+ st.title("🚗 Vehicle Data Dashboard (Ask Anything)")
643
+ query = st.text_input("🔍 Ask your vehicle data question:", placeholder="e.g., Norm-wise registrations in Maharashtra in 2024")
644
+ if not query:
645
+ return
646
+
647
+ ev = parse_ev(query)
648
+ dim = parse_dimension(query)
649
+ op, year = parse_year_filter(query)
650
+ top_n = parse_top_n(query)
651
+ loc_type, loc = parse_location(query)
652
+
653
+ # Determine table
654
+ if dim:
655
+ opts = TABLE_MAPPINGS[dim]
656
+ suffix = (f"{loc_type}{'_ev' if ev else ''}" if loc_type in ('state','rto') else ('state_ev' if ev else 'state'))
657
+ tbl_name = opts.get(suffix) or (opts['state_ev'] if ev else opts['state'])
658
+ else:
659
+ tbl_name = TABLE_TOTALS['state_ev' if ev else 'state']
660
+
661
+ df = df_map[tbl_name]
662
+ if op and year:
663
+ df = df.query(f"year {op} @year")
664
+ if loc_type == 'rto':
665
+ df = df[df['column_value']==loc]
666
+ elif loc_type == 'state':
667
+ if 'rto' in tbl_name:
668
+ rto_list = state_rto_map.get(loc.lower(), [])
669
+ df = df[df['column_value'].isin(rto_list)]
670
+ else:
671
+ df = df[df['column_value']==loc]
672
+
673
+ # Render
674
+ if dim:
675
+ if top_n and loc_type is None:
676
+ agg = df.groupby('column_value', as_index=False)['count'].sum()
677
+ result = agg.nlargest(top_n, 'count')
678
+ title = f"Top {top_n} states by {dim}{' (EV)' if ev else ''}" + (f" in {year}" if op=='==' else "")
679
+ fig = px.bar(result, x='column_value', y='count', labels={'column_value':'State','count':'Total'})
680
+ elif loc_type:
681
+ brk = df.groupby('row_value', as_index=False)['count'].sum().sort_values('count', ascending=False)
682
+ title = f"{dim.capitalize()} breakdown for {loc_type.upper()}: {loc}" + (f" after {year}" if op=='>' else "")
683
+ result = brk.rename(columns={'row_value':dim.capitalize(),'count':'Total'})
684
+ fig = px.bar(brk, x='row_value', y='count', labels={'row_value':dim.capitalize(),'count':'Total'})
685
+ else:
686
+ agg = df.groupby('column_value', as_index=False)['count'].sum()
687
+ title = f"State-wise totals by {dim}{' (EV)' if ev else ''}"
688
+ result = agg.rename(columns={'column_value':'State','count':'Total'})
689
+ fig = px.bar(agg, x='column_value', y='count', labels={'column_value':'State','count':'Total'})
690
+ else:
691
+ if loc_type == 'state':
692
+ ts = df[df['column_value']==loc].groupby('year', as_index=False)['count'].sum()
693
+ title = f"Total registrations for STATE: {loc}{' (EV)' if ev else ''}"
694
+ result = ts.rename(columns={'count':'Total'})
695
+ fig = px.line(ts, x='year', y='count', labels={'count':'Total'})
696
+ else:
697
+ ts = df.groupby('year', as_index=False)['count'].sum()
698
+ title = f"Overall total registrations{' (EV)' if ev else ''}"
699
+ result = ts.rename(columns={'count':'Total'})
700
+ fig = px.line(ts, x='year', y='count', labels={'count':'Total'})
701
+ st.dataframe(result)
702
+ st.plotly_chart(fig)
703
+ st.markdown("#### 💬 Try asking:")
704
+ st.markdown("- Top 5 states by fuel in 2022 ")
705
+ st.markdown("- Norm-wise registrations in Maharashtra in 2024 ")
706
+ st.markdown("- Electric (EV) norm-wise registrations in Karnataka after 2021 ")
707
+ st.markdown("- Fuel-wise registrations in Delhi in 2020")
708
+ st.markdown("- vehicle classes by registrations in Tamil Nadu in 2022 ")
709
+
710
+
711
+
712
+ # Run the entire app
713
+ # ask_with_llm()
714
+
715
+ # ---------------------- Sidebar ----------------------
716
+ st.sidebar.title("🔍 Navigation")
717
+ section = st.sidebar.radio("Go to", [
718
+ "Dashboard Overview",
719
+ "EV Insights",
720
+ "Fuel Norm Analysis(StateWise)",
721
+ "State Analysis",
722
+ "Vehicle Class & Category",
723
+ "Ask with Text (LLM)"
724
+ ])
725
+
726
+ # ---------------------- Page Routing ----------------------
727
+ if section == "Dashboard Overview":
728
+ dashboard_overview()
729
+ elif section == "EV Insights":
730
+ ev_insights()
731
+ elif section == "Fuel Norm Analysis(StateWise)":
732
+ fuel_norm_distribution_dashboard(
733
+ root_dir=r"D:\Data_for_query_tool\data",
734
+ state_mapping_file=r'state_rto_data.json'
735
+ )
736
+ elif section == "State Analysis":
737
+ state_analysis()
738
+ elif section == "Vehicle Class & Category":
739
+ vehicle_class_category()
740
+ elif section == "Ask with Text (LLM)":
741
+ ask_with_llm()
requirements.txt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ streamlit
2
+ pandas
3
+ plotly
state_rto_data.json ADDED
@@ -0,0 +1,182 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [
2
+ {
3
+ "State Code": "an",
4
+ "Full State Name": "Andaman & Nicobar Island ",
5
+ "RTO List": "Baratang, Campbell Bay, Car Nicobar, Diglipur, Ferrargunj, Kamorta, Katchal, Little Andaman, Mayabunder, Port Blair DTO, Rangat, Shaheed Dweep, Swaraj Dweep, Teressa"
6
+ },
7
+ {
8
+ "State Code": "ap",
9
+ "Full State Name": "Andhra Pradesh ",
10
+ "RTO List": "Adoni RTO, Amalapuram RTA, Anakapalli RTA, Anantapur RTA, Atmakur MVI Office, Atmakur-Kurnool MVI Office, Badvel MVI Office, Bapatla MVI Office, Bhimavaram RTA, Chilakaluripeta MVI Office, Chintoor, Chirala UO, Chittoor RTA, Cuddapah RTA, Darsi UO, Dhone MVI Office, Gajuwaka RTA, Gudiwada RTA, Gudur RTA, Guntakal UO, Guntur RTA, Hindupur RTA, Itchapuram MVI Office, Jaggayyapet UO, Jangareddy Gudem UO, Kadiri MVI Office, Kandukur MVI Office, Kavali UO, Kovvuru UO, Kurnool RTA, Macherla MVI Office, Madanapalle UO, Mandapeta UO, Mangalagiri MVI Office, Markapur UO, Nandigama RTA, Nandyal RTA, Narasaraopet RTA, Narsipatnam MVI Office, Nellore RTA, Nuzvid UO, Paderu RTA, Palakole UO, Palakonda MVI Office, Palamaner MVI Office, Palasa MVI Office, PARVATHIPURAM RTO OFFICE, Peddapuram MVI Office, Piduguralla UO, Piler MVI Office, Prakasam RTA, Proddutur RTA, Pulivendula MVI Office, Punganur UO, Puttur MVI Office, Rajahmundry RTA, Rajampet MVI Office, Ramachandrapuram UO, Ravulapalem UO, Rayachoti MVI Office, REGIONAL TRANSPORT OFFICE RAMPACHODAVARAM, RTA Eluru, RTA Kakinada, RTA MACHILIPATNAM, Salur MVI Office, Srikakulam RTA, Srikalahasthi MVI Office, Sullurpet UO, Tadepalli Gudem UO, Tadipatri UO, Tanuku UO, Tekkali MVI Office, Tenali UO, Tirupati RTA, UNIT OFFICE KATHIPUDI, UNIT OFFICE RAYADURG, Vijayawada RTA, Vishakapatnam RTA, Vizianagaram RTA, Vuyyuru UO"
11
+ },
12
+ {
13
+ "State Code": "ar",
14
+ "Full State Name": "Arunachal Pradesh ",
15
+ "RTO List": "ANJAW, CHANGLANG, DIBANG VALLEY, EAST KAMENG, EAST SIANG, ITANAGAR CAPITAL REGION, KAMLE, KRA-DAADI, KURUNG KUMEY, LEPARADA, LOHIT, LONGDING, LOWER DIBANG VALLEY, LOWER SIANG, LOWER SUBANSIRI, NAMSAI, PAKKE-KESANG, SHI-YOMI, SIANG, STATE TRANSPORT AUTHORITY, TAWANG, TIRAP, UPPER SIANG, UPPER SUBANSIRI, WEST KAMENG, WEST SIANG, YUPIA"
16
+ },
17
+ {
18
+ "State Code": "as",
19
+ "Full State Name": "Assam ",
20
+ "RTO List": "NIAIMT,CACHAR, NIAIMT,HAILAKANDI, NIAIMT,KARIMGANJ, BARPETA, BASKA, BISWANATH CHARIALI, BONGAIGAON, CACHAR, CHARAIDEO, CHIRANG, DARRANG, DHEMAJI, DHUBRI, DIBRUGARH, DIMA HASAO, GOALPARA, GOLAGHAT, HAILAKANDI, HOJAI, JORHAT, KAMRUP, KAMRUP(RURAL), KARBI ANGLONG, KARIMGANJ, KOKRAJHAR, LAKHIMPUR, MAJULI, MORIGAON, NAGAON, NALBARI, SIVASAGAR, SONITPUR, SOUTH SALMARA, STATE TRANSPORT AUTHORITY, TINSUKIA, UDALGURI"
21
+ },
22
+ {
23
+ "State Code": "br",
24
+ "Full State Name": "Bihar ",
25
+ "RTO List": "M/S MURARI AUTO, Patna, ARARIA, ARAWAL, AURANGABAD, BANKA, BEGUSARAI, BETTIAH, BHABHUA, BHAGALPUR, BHAGALPUR RTA, BHOJPUR, BUXUR, CHAPARA, CHAPRA RTA, DARBHANGA, DARBHANGA RTA, GAYA, GAYA RTA, GOPALGANJ, JAMUI, JEHANABAD, KATIHAR, KHAGARIA, KISHANGANJ, LAKHISARAI, MADHEPURA, MADHUBANI, MOTIHARI, MUNGER, MUNGER RTA, MUZAFFARPUR, MUZAFFARPUR RTA, NALANDA, NAWADA, PATNA, PATNA RTA, PURNEA, PURNEA RTA, ROHTAS, SAHARSA, SAHARSA RTA, SAMASTIPUR, SHEIKHPURA, SHEOHAR, SITAMARHI, SIWAN, STA BIHAR, SUPAUL, VAISHALI"
26
+ },
27
+ {
28
+ "State Code": "ch",
29
+ "Full State Name": "Chandigarh ",
30
+ "RTO List": "CHANDIGARH UT (RLA AND STA)"
31
+ },
32
+ {
33
+ "State Code": "cg",
34
+ "Full State Name": "Chhattisgarh ",
35
+ "RTO List": "Ambikapur RTO, BAIKUNTHPUR DTO, Balod DTO, Baloda Bazar DTO, Balrampur DTO, Bemetara DTO, Bijapur DTO, Bilaspur RTO, Dantewada DTO, Dhamtari DTO, DURG RTO, Gariyaband DTO, Gaurela-Pendra-Marwahi DTO, JAGDALPUR RTO, Janjgir Champa DTO, Jashpur DTO, KANKER DTO, KAWARDHA DTO, KONDAGAON DTO, Korba DTO, Mahasamund DTO, Mungeli DTO, Narayanpur DTO, Raigarh DTO, Raipur RTO, Rajnandgaon ARTO, RTA TC NAWA RAIPUR, State Transport Authority, Sukma DTO, Surajpur DTO"
36
+ },
37
+ {
38
+ "State Code": "dl",
39
+ "Full State Name": "Delhi ",
40
+ "RTO List": "BURARI AUTO UNIT, BURARI TAXI UNIT, DWARKA, I P ESTATE, JANAKPURI, JHULJHULI FITNESS CENTER, KAIR CLUSTER BUS FITNESS CENTER, KUSHAKNALA CLUSTER BUS FITNESS CENTER, LADO SARAI FITNESS CENTER, LONI ROAD, MALL ROAD, MAYUR VIHAR, RAJA GARDEN FITNESS CENTER, RAJOURI GARDEN, RAJPUR ROAD/VIU BURARI, ROHINI, SARAI KALE KHAN, SHAKUR BASTI FITNESS CENTER, SOUTH DELHI, SURAJMAL VIHAR, VASANT VIHAR, VISHWAS NAGAR FITNESS CENTER, WAZIRPUR"
41
+ },
42
+ {
43
+ "State Code": "ga",
44
+ "Full State Name": "Goa ",
45
+ "RTO List": "STATE TRANSPORT AUTHORITY, GOA, ASSISTANT DIRECTOR OF TRANSPORT ENF. (NORTH) PANAJI, ASSISTANT DIRECTOR OF TRANSPORT ENF. (SOUTH) MARGAO, BICHOLIM RTO, CANACONA RTO, DHARBANDORA RTO, MAPUSA RTO, MARGAO RTO, PANAJI RTO, PERNEM RTO, PONDA RTO, QUEPEM RTO, VASCO RTO"
46
+ },
47
+ {
48
+ "State Code": "gj",
49
+ "Full State Name": "Gujarat ",
50
+ "RTO List": "Ahmedabad (Rural), Bawla ARTO, AAHWA, AHMEDABAD, AHMEDABAD EAST, AMRELI, ANAND, BANASKANTHA, BARDOLI, BHARUCH, BHAVNAGAR, BOTAD, CHHOTAUDAIPUR, DAHOD, GANDHINAGAR, JAMNAGAR, JUNAGADH, KACHCHH, KACHCHH EAST, KHAMBHALIYA, KHEDA, LUNAVADA, MEHSANA, MODASA, MORBI, NARMADA, NAVSARI, PANCHMAHAL, PATAN, PORBANDAR, RAJKOT, SABARKANTHA, SURAT, SURENDRANAGAR, TAPI, VADODARA, VALSAD, VERAVAL"
51
+ },
52
+ {
53
+ "State Code": "hr",
54
+ "Full State Name": "Haryana ",
55
+ "RTO List": "M.G. MOTORS, M/S DAISY MOTORS PVT LTD, M/S GLOBAL AUTOMART PVT LTD, M/S KARNAL MOTORS PVT LTD, M/S MAHABALAJI AUTO SERVICE PVT LTD, M/S METRO MOTORS PVT LTD, M/S MOHAN FOURWHEEL PVT LTD, M/S PARAS TRUCKS, M/S PASCO AUTOMOBILES, M/S PASCO MOTORS LLP, M/S SHREE MOTORS PVT LTD, M/S YASHODHA TRANSWHEELS LLP, RA(MV) PANCHKULA, RTA BHIWANI, RTA FARIDABAD, RTA FATEHABAD, RTA GURGAON, RTA HISAR, RTA JHAJJAR, RTA JIND, RTA KAITHAL, RTA KARNAL, RTA KURUKSHETRA, RTA MOHINDERGARH, RTA NUH, RTA PALWAL, RTA PANCHKULA, RTA PANIPAT, RTA REWARI, RTA ROHTAK, RTA SIRSA, RTA SONEPAT, RTA YNR, AMBALA CITY, ASSANDH, BAHADURGARH, BALLABGARH, BARARA, BAWAL, BHIWANI, CHARKHI DADRI, DABWALI, ELLNABAD, FARIDABAD, FATEHABAD, FEROZEPUR ZIRKHA, GANAUR, GOHANA, GULHA, GURUGRAM SOUTH, HANSI, HARYANA HEAD OFFICE CHD, HATHIN, HISAR, HODEL, JAGADHARI, JHAJHAR, JIND, KAITHAL, KALAYAT, KANINA, KARNAL, KOSLI, LADWA, LOHARU, M/S ABC MOTORS, M/S AMBA MOTORS, M/S COMPETENT AUTOMOBILES, M/S CSG AUTOMOBILES, M/S DAKSH MARKETING, M/S DHINGRA TRUCKING PVT LTD, M/S DINCO FOUR WHEELS LLP, M/S EAKANSH MOTORS PVT LTD, M/S EAKANSH WHEELS, M/S G.N.G AUTO AIDS PVT.LTD, M/S GARG MOTORS, M/S GLOBAL AUTMOBOLINES, M/S H.S MOTORS, M/S HARCHAND MOTORS, M/S HARYANA MOTOR, M/S HIMGIRI AUTOMOBILES PVT.LTD, M/S HIND MOTORS, M/S HISAR AUTOMOBILES, M/S JAGMOHAN AUTOMOBILES PVT LTD, M/S JOHAR AUTOMOBILES, M/S KARAN AUTOMOTIVE, M/S KARNAL MOTORS PVT, M/S KBS MOTORS PVT LTD, M/S KHANNA CAR PLAZA PVT LTD, M/S LEKHRAJ AUTO PLAZA PVT LTD, M/S SATGURU MOTORS, M/S MANGALAM MOTORS, M/S MANGLA MOTORS, M/S MG MOTORS, M/S PALTINUM MOTOCOPR, M/S PALUCK TECHNOLOGIES PVT.LTD, M/S PANDIT AUTOMOBILES PVT LTD, M/S PASCO AUTOMOBILES (x3), M/S PASCO AUTOMOBILES COMPLEX, M/S PASCO MOTORS LLP, M/S PASCO MOTORS LLP SHOP, M/S PASCO MOTORS, M/S PREM MOTORS PVT LTD, M/S PREM MOTORS PVT LTD IDC, M/S R.K.H AUTOMOBILES PVT LTD, M/S RAMA MOTORS, M/S RANA MOTORS PVT LTD, M/S RUDRA MOTORS, M/S SAHIL MOTORS, M/S SANJAY AUTOMOTIVE LLP, M/S SHAKTI MOTORS PVT LTD, M/S SHIVA MOTORS, M/S SHREE KRISHANA MOTORS, M/S SHREE SALASAR MOTORS, M/S SISOTHYA AUTOMOBILES, M/S STAR AUTOMOBILE, M/S SUPREME MOBILES PVT LTD (x2), M/S TAYAL MOTORS PVT LTD, M/S TCS AUTOWORLD, M/S THADESHRI MOTORS, M/S TIRUPATI MOTORS, M/S UNIQUE MOTORS PVT LTD, M/S UNITED MOTORS, M/S VIPIN MOTORS, M/S VMT MOTORS, MAHENDERGARH, MEHAM, NARAINGARH, NARNAUL, NARWANA, NUH, PALWAL, PANCHKULA, PANIPAT, PATAUDI, PEHOWA, RATIA, REWARI, RLA TAURU, ROHTAK, RTA AMBALA, RTA CHARKHI DADRI, SAFIDON, SAMALKHA, SDM AMBALA CANTONMENT, SDM BADHRA, SDM BADKHAL, SDM BADLI, SDM BADSHAHPUR, SDM BARWALA, SDM BERI, SDM BILASPUR, SDM GHARAUNDA, SDM GURUGRAM, SDM INDIRI, SDM KALANWALI, SDM KHARKHONDA, SDM NARNAUND, SDM OFFICE KALKA, SDM PUNHANA, SDM RADAUR, SDM SAMPLA, SDM SHAHABAD, SDM UCHANA, SIRSA, SIWANI, SONEPAT, THANESAR, TOHANA, TOSHAM"
56
+ },
57
+ {
58
+ "State Code": "hp",
59
+ "Full State Name": "Himachal Pradesh ",
60
+ "RTO List": "ADDITIONAL/JOINT/DY. DIRECTOR-CUM-RTO (HQ), ARTO BADDI, ARTO BAROTIWALA, ARTO DAMTAL (TOKI), ARTO GAGRET, ARTO KALA AMB, ARTO KANDWAL, ARTO MEHATPUR, ARTO PAONTA SAHIB, ARTO PARWANOO, ARTO SWARGHAT, ARTO TIPRA, ARTO TUNUHATTI, HRTC BAIJNATH, HRTC BILASPUR, HRTC CHAMBA, HRTC DEHRA, HRTC DHARAMSHALA, HRTC HAMIRPUR, HRTC JASSUR, HRTC KULLU, HRTC MANDI, HRTC NAHAN, HRTC NALAGARH, HRTC PALAMPUR, HRTC RAMPUR, HRTC SARKAGHAT, HRTC SHIMLA(RURAL), HRTC SUNDERNAGAR, HRTC TARADEVI, HRTC UNA, RLA AMB, RLA ANI, RLA ARKI, RLA BAIJNATH, RLA BALH, RLA BALICHOWKI, RLA BANGANA, RLA BANJAR, RLA BARSAR, RLA BHARMOUR, RLA BHORANJ, RLA BILASPUR, RLA CHAMBA, RLA CHOPAL, RLA CHURAH, RLA CHUWARI, RLA DALHOUSIE, RLA DEHRA, RLA DHARAMPUR, RLA DHARAMSHALA, RLA DHEERA, RLA DODRA KAWAR, RLA FATHEPUR, RLA GAGRET, RLA GHUMARVI, RLA GOHAR, RLA HAMIRPUR, RLA HAROLI, RLA INDORA, RLA JAISINGPUR, RLA JAWALAJI, RLA JAWALI, RLA JHANDUTTA, RLA JOGENDRANAGAR, RLA JUBBAL, RLA KAFFOTA, RLA KALPA, RLA KANDAGHAT, RLA KANGRA, RLA KARSOG, RLA KASAULI, RLA KAZA, RLA KELANG, RLA KOTKHAI, RLA KOTLI, RLA KULU, RLA KUMARSAIN, RLA KUPVI, RLA MANALI, RLA MANDI, RLA NADAUN, RLA NAGROTA BAGWAN, RLA NAHAN, RLA NALAGARH, RLA NICHAR, RLA NIRMAND, RLA NURPUR, RLA PACHHAD, RLA PADDHAR, RLA PALAMPUR, RLA PANGI, RLA PAONTA SAHIB, RLA PARWANOO, RLA POOH, RLA RAJGARH, RLA RAMPUR BUSHAR, RLA ROHRU, RLA SALOONI, RLA SANGRAH, RLA SARKAGHAT, RLA SHAHPUR, RLA SHILLAI, RLA SHIMLA HP-03/HP-07(URBAN), RLA SHIMLA(RURAL), RLA SHRI NAINA DEVI JI SWARGHAT, RLA SOLAN, RLA SUJANPUR, RLA SUNDARNAGAR, RLA THEOG, RLA THUNAG, RLA UDAIPUR, RLA UNA, RTO (FLYING SQUAD) KANGRA AT DHARAMSHALA, RTO (FLYING SQUAD) KULLU, RTO BADDI(NALAGARH), RTO BILASPUR, RTO CHAMBA, RTO DHARAMSHALA, RTO HAMIRPUR, RTO KULLU, RTO MANDI, RTO NAHAN, RTO RAMPUR, RTO SHIMLA, RTO SOLAN, RTO UNA, STA SHIMLA"
61
+ },
62
+ {
63
+ "State Code": "jk",
64
+ "Full State Name": "Jammu & Kashmir ",
65
+ "RTO List": "ANANTNAG ARTO, BANDIPORA ARTO, BARAMULLA ARTO, BUDGAM ARTO, DODA ARTO, GANDERBAL ARTO, JAMMU RTO, KATHUA RTO, KISHTWAR ARTO, KULGAM ARTO, KUPWARA ARTO, POONCH ARTO, PULWAMA ARTO, RAJOURI ARTO, RAMBAN ARTO, REASI ARTO, SAMBA ARTO, SHOPIAN ARTO, SRINAGAR RTO, STATE TRANSPORT AUTHORITY, UDHAMPUR ARTO"
66
+ },
67
+ {
68
+ "State Code": "jh",
69
+ "Full State Name": "Jharkhand ",
70
+ "RTO List": "Authorised Testing Centre (TUV SUD), Ranchi, Authorized Fitness Centre(VAHAN), Dhanbad, M/s Auto Fitness Centre, Ranchi, M/s Auto Tech Vehicle Fitness, Ranchi, M/S Global Automated Fitness, Hazaribag, M/s Universal Automated Fitness Centre, East Singhbhum, BOKARO, CHATRA, DEOGHAR, DHANBAD, DTO OFFICE DUMKA, EAST SINGHBHUM (JAMSHEDPUR), GARHWA, GIRIDIH, GODDA, GUMLA, HAZARIBAG, JAMTARA, KHUNTI, KODERMA, LATEHAR, LOHARDAGA, PAKUR, PALAMU, RAMGARH, RANCHI, SAHEBGANJ, SARAIKELA-KHARSAWAN, SIMDEGA, STATE TRANSPORT AUTHORITY, WEST SINGHBHUM (CHAIBASA)"
71
+ },
72
+ {
73
+ "State Code": "ka",
74
+ "Full State Name": "Karnataka ",
75
+ "RTO List": "Chandapura, Bengaluru RTO, Madhugiri, Tumakuru ARTO, R.T. Nagar, Bengaluru, STU AND AUTORIKSHAW, SHANTHINAGAR RTO, Surathkal, Mangaluru, TARIKERE, CHIKKAMAGALURU ARTO, ATHANI ARTO, Bagalkot RTO, Bailhongal RTO, Banashankari, Bantwala ARTO, Baswakalyan RTO, Bellary RTO, BENGALURU CENTRAL RTO, BENGALURU EAST RTO, BENGALURU NORTH RTO, BENGALURU SOUTH RTO, BENGALURU WEST RTO, BHALKI ARTO, Bidar RTO, Bijapur RTO, Chamarajanagar RTO, Chickaballapur RTO, CHIKAMANGLUR RTO, Chikkodi RTO, Chintamani ARTO, CHITRADURGA RTO, Dandeli ARTO, DAVANAGERE RTO, Devanahalli ARTO, DHARWAD EAST RTO, DHARWAD WEST RTO, Electronic City RTO, Gadag RTO, Gokak ARTO, Hassan RTO, Haveri RTO, Honnavar ARTO, Hospet RTO, Hunsur ARTO, JAMKHANDI ARTO, Jnanabharathi RTO, K G F ARTO, KALABURAGI RTO, Karwar RTO, Kolar RTO, Koppal RTO, Krishnarajapuram RTO, MADIKERI RTO, Mandya RTO, Mangalore RTO, Marathahalli, MYSURU EAST RTO, MYSURU WEST RTO, Nagamangala RTO, Nelamangala RTO, Puttur RTO, Raichur RTO, Ramanagar RTO, Ramdurga ARTO, Ranibennur ARTO, REGIONAL TRANSPORT OFFICE BELAGAVI, Sagar ARTO, SAKALESHPURA ARTO, Shimoga RTO, Sirsi RTO, STATE TRANSPORT AUTHORITY, Tiptur ARTO, Tumkur RTO, Udupi RTO, Yadgiri RTO, YALAHANKA RTO"
76
+ },
77
+ {
78
+ "State Code": "kl",
79
+ "Full State Name": "Kerala ",
80
+ "RTO List": "ADOOR SRTO, ALAPPUZHA RTO, ALATHUR SRTO, ALUVA SRTO, ANGAMALI SRTO, ATTINGAL RTO, CHADAYAMANGALA SRTO, CHALAKKUDY SRTO, CHANGANACHERRY SRTO, CHENGANNUR SRTO, CHERTHALA SRTO, CHITTUR SRTO, DEVIKULAM SRTO, ERNAKULAM RTO, GURUVAYUR SRTO, IDUKKI RTO, IRINJALAKUDA SRTO, IRTTY SRTO, KANHANGAD SRTO, KANJIRAPPALLY SRTO, KANNUR RTO, KARUNAGAPPALLY SRTO, KASARGODE RTO, KATTAKADA SRTO, KAYAMKULAM SRTO, KAZHAKUTTOM SRTO, KODUNGALLUR SRTO, KODUVALLY SRTO, KOILANDY SRTO, KOLLAM RTO, KONDOTTY SRTO, KONNI SRTO, KOTHAMANGALAM SRTO, KOTTARAKKARA SRTO, KOTTAYAM RTO, KOZHIKODE RTO, KUNNATHUR SRTO, KUTTANADU SRTO, MALAPPURAM RTO, MALLAPPALLY SRTO, MANANTHAVADY SRTO, MANNARGHAT SRTO, MATTANCHERRY SRTO, MAVELIKKARA SRTO, MUVATTUPUZHA RTO, NANMANDA SRTO, NATIONALISED SECTOR(TVPM) RTO, NEDUMANGADU SRTO, NEYYATTINKARA SRTO, NILAMBUR SRTO, NORTH PARUR SRTO, OTTAPPALAM SRTO, PALAI SRTO, PALAKKAD RTO, PARASSALA SRTO, PATHANAMTHITTA RTO, PATHANAPURAM SRTO, PATTAMBI SRTO, PAYYANNUR SRTO, PERAMBRA SRTO, PERINTHALMANNA SRTO, PERUMBAVUR SRTO, PONNANI SRTO, PUNALUR SRTO, RAMANATTUKARA (FEROKE) SRTO, RANNI SRTO, SULTHANBATHERY SRTO, TC OFFICE - STA OFFICE, THALASSERY SRTO, THALIPARAMBA SRTO, THIRUR SRTO, THIRURANGADI SRTO, THIRUVALLA SRTO, THODUPUZHA SRTO, THRIPRAYAR SRTO, THRISSUR RTO, TRIPUNITHURA SRTO, TRIVANDRUM RTO, UDUMBANCHOLA SRTO, UZHAVOOR SRTO, VADAKARA RTO, VAIKOM SRTO, VANDIPERIYAR SRTO, VARKALA SRTO, VELLARIKUNDU SRTO, WADAKKANCHERRY SRTO, WAYANAD RTO"
81
+ },
82
+ {
83
+ "State Code": "la",
84
+ "Full State Name": "Ladakh ",
85
+ "RTO List": "KARGIL ARTO, LEH ARTO, STATE TRANSPORT AUTHORITY"
86
+ },
87
+ {
88
+ "State Code": "ld",
89
+ "Full State Name": "Lakshadweep ",
90
+ "RTO List": "AGATTI, AMINI, ANDROTH, CHETLAT, KADMAT, KALPENI, KAVARATTI, KILTAN, MINICOY"
91
+ },
92
+ {
93
+ "State Code": "mp",
94
+ "Full State Name": "Madhya Pradesh ",
95
+ "RTO List": "AGAR MALWA RTO, ALIRAJPUR DTO, ANUPPUR DTO, ASHOKNAGAR DTO, BADWANI DTO, BALAGHAT DTO, BETUL DTO, BHIND DTO, BHOPAL RTO, BURHANPUR DTO, CHATTARPUR ARTO, CHHINDWARA ARTO, DAMOH DTO, DATIA DTO, DEWAS DTO, DHAR ARTO, DINDORI DTO, GUNA DTO, GWALIOR RTO, HARDA DTO, HOSANGABAD DTO, INDORE RTO, JABALPUR RTO, JHABUA DTO, KATNI ARTO, KHANDWA ARTO, KHARGONE ARTO, MANDLA DTO, MANDSAUR ARTO, MORENA DTO, NARSINGHPUR DTO, NEEMUCH DTO, PANNA DTO, RAISEN DTO, RAJGARH DTO, RATLAM DTO, REWA RTO, SAGAR RTO, SATNA ARTO, SEHORE DTO, SEONI ARTO, SHAHDOL RTO, SHAJAPUR DTO, SHEOPUR DTO, SHIVPURI DTO, SIDHI DTO, SINGROLI DTO, STATE TRANSPORT AUTHORITY, TIKAMGARH DTO, UJJAIN RTO, UMARIA DTO, VIDISHA DTO"
96
+ },
97
+ {
98
+ "State Code": "mh",
99
+ "Full State Name": "Maharashtra ",
100
+ "RTO List": "DY REGIONAL TRANSPORT OFFICE, HINGOLI, AHEMEDNAGAR, AKLUJ, AKOLA, AMBEJOGAI, AMRAWATI, BARAMATI, BEED, BHANDARA, BULDHANA, CHANDRAPUR, CHHATRAPATI SAMBHAJINAGAR, Chiplun Chiplun Track, DHARASHIV, DHULE, DY RTO PIMPRI CHINCHWAD, DY RTO RATNAGIRI, DY.R.T.O.BORIVALI, GADCHIROLI, GONDHIA, JALANA, JALGAON, KALYAN, KARAD, KOLHAPUR, LATUR, MALEGAON, MUMBAI (CENTRAL), MUMBAI (EAST), MUMBAI (WEST), NAGPUR (EAST), NAGPUR (RURAL), NAGPUR (U), NANDED, NANDURBAR, NASHIK, PANVEL, PARBHANI, PEN (RAIGAD), PUNE, RTO MH04-Mira Bhayander FitnessTrack, SANGLI, SATARA, SINDHUDURG(KUDAL), SOLAPUR, SRIRAMPUR, TC OFFICE, THANE, VASAI, VASHI (NEW MUMBAI), WARDHA, WASHIM, YAWATMAL"
101
+ },
102
+ {
103
+ "State Code": "mn",
104
+ "Full State Name": "Manipur ",
105
+ "RTO List": "DISTRICT TRANSPORT OFFICE, TENGNOUPAL, BISHNUPUR, Chandel, CHURACHANDPUR, IMPHAL EAST, IMPHAL WEST, KANGPOKPI, SENAPATI, STA MANIPUR, Tamenglong, THOUBAL, UKHRUL"
106
+ },
107
+ {
108
+ "State Code": "ml",
109
+ "Full State Name": "Meghalaya ",
110
+ "RTO List": "AMPATI, BAGHMARA, DTO JOWAI, DTO MAIRANG, KHLIEHRIAT, MAWKYRWAT, NONGPOH, NONGSTOIN, RESUBELPARA, SHILLONG, STATE TRANSPORT AUTHORITY, TURA, WILLIAMNAGAR"
111
+ },
112
+ {
113
+ "State Code": "mz",
114
+ "Full State Name": "Mizoram ",
115
+ "RTO List": "AIZAWL DTO, AIZAWL RURAL DTO, CHAMPHAI, KOLASIB, LAWNGTLAI, LUNGLEI, MAMIT, SAIHA, SERCHHIP, STATE TRANSPORT AUTHORITY"
116
+ },
117
+ {
118
+ "State Code": "nl",
119
+ "Full State Name": "Nagaland ",
120
+ "RTO List": "DIMAPUR DTO, KOHIMA RTO, MOKOKCHUNG RTO, MON DTO, PHEK DTO, TRANSPORT COMMISSIONERATE, TUENSANG DTO, WOKHA DTO, ZUNHEBOTO DTO"
121
+ },
122
+ {
123
+ "State Code": "or",
124
+ "Full State Name": "Odisha ",
125
+ "RTO List": "ANGUL RTO, ARTO BARBIL, BALASORE RTO, BARGARH RTO, BHADRAK RTO, BHANJANAGAR RTO, BHUBANESWAR RTO, BHUBANESWAR-II RTO, BOLANGIR RTO, BOUDH RTO, CHANDIKHOLE RTO, CUTTACK RTO, DEOGARH RTO, DHENKANAL RTO, GAJAPATI RTO, GANJAM RTO, JAGATSINGHPUR RTO, JAJPUR RTO, JHARSUGUDA RTO, KALAHANDI RTO, KENDRAPARA RTO, KEONJHAR RTO, KHORDHA ARTO, KORAPUT RTO, MALKANAGIRI RTO, MAYURBHANJ RTO, NAWARANGPUR RTO, NAYAGARH RTO, NUAPADA RTO, PHULBANI RTO, PURI RTO, RAIRANGPUR ARTO, RAYGADA RTO, ROURKELA RTO, SAMBALPUR RTO, SONEPUR RTO, STATE TRANSPORT AUTHORITY, SUNDERGARH RTO, TALCHER RTO"
126
+ },
127
+ {
128
+ "State Code": "py",
129
+ "Full State Name": "Puducherry ",
130
+ "RTO List": "BAHOUR, CHECK POST, KARAIKAL, MAHE, OULGARET, PUDUCHERRY, VILLIANUR, YANAM"
131
+ },
132
+ {
133
+ "State Code": "pb",
134
+ "Full State Name": "Punjab ",
135
+ "RTO List": "ABOHAR SDM, AHMEDGARH SDM, AJNALA SDM, AMARGARH SDM, AMLOH SDM, AMRITSAR RTA, AMRITSAR-2 SDM, ANANDPUR SAHIB SDM, BABA BAKALA SDM, BAGHA PURANA SDM, BALACHAUR SDM, BANGA SDM, BARNALA SDM, BASSI PATHANA SDM, BATALA SDM, BATHINDA RTA, BHAWNIGARH SDM, BHIKHIWIND SDM, BHOLATH SDM, Budhlada SDM, CHAMKAUR SAHIB SDM, DASUYA SDM, DERA BABA NANAK SDM, DERA BASSI SDM, DHAR KALAN SDM, DHARAMKOT SDM, DHURI SDM, DINANAGAR SDM, DIRBA SDM, DUDHAN SADHAN SDM, FARIDKOT RTA, FATEHGARH SAHIB SDM, FAZILKA SDM, FEROZPUR RTA, GARSHANKAR SDM, GIDDARBAHA SDM, GURDASPUR RTA, GURU HAR SAHAI SDM, HOSHIARPUR RTA, JAGRAON SDM, JAITO SDM, JALALABAD SDM, JALANDHAR RTA, JALANDHAR-11 SDM, KALANAUR SDM, KAPURTHALA SDM, KHADUR SAHIB SDM, KHAMANO SDM, KHANNA SDM, KHARAR SDM, KOTKAPURA SDM, LEHRAGAGA SDM, LUDHIANA EAST SDM, LUDHIANA RTA, MAJITHA SDM, MALERKOTLA SDM, MALOUT SDM, MANSA SDM, MAUR MANDI SDM, MOGA SDM, MOONAK SDM, MORINDA SDM, MUKERIAN SDM, MUKTSAR SDM, NABHA SDM, NAKODAR SDM, NANGAL SDM, NIHAL SINGH WALA SDM, PATHANKOT SDM, PATIALA RTA, PATRAN SDM, PATTI SDM, PAYAL SDM, PHAGWARA SDM, PHILLOUR SDM, PUNJAB STA(RAC)/(AITP), RAIKOT SDM, RAJPURA SDM, RAMPURA PHUL SDM, ROPAR SDM, SAHIBZADA AJIT SINGH NAGAR RTA, SAMANA SDM, SAMRALA SDM, SANGRUR RTA, SARDULGARH SDM, SHAHD BHAGAT SINGH NAGAR SDM, SHAHKOT SDM, SULTANPUR SDM, SUNAM SDM, TALWANDI SABO SDM, TAPA SDM, TARN TARAN SDM, ZIRA SDM"
136
+ },
137
+ {
138
+ "State Code": "rj",
139
+ "Full State Name": "Rajasthan ",
140
+ "RTO List": "JAGATPURA, JAIPUR ARTO, VIDHYADHAR NAGAR,JAIPUR DTO, A&L Company, ABU ROAD DTO, Adinath Fitness Center, Agarwal Fitness Center, AJMER RTO, Alwar Auto Mobile Fitness Center, Alwar Fitness Center, ALWAR RTO, ARAVALI FITNESS TESTING CENTER, Arihant Vehicle Fitness Center, Atharva Enterprises, BALAJI ALLIANCE, BALAJI FITNESS CENTER (BHILWARA), BALAJI FITNESS CENTER (HANUMANGARH), BALOTRA DTO, BANSWARA DTO, BANSWARA VEHICLE FITNESS CENTER, BARAN DTO, BARMER DTO, BEAWAR DTO, Bharat Vahan Fitness Center, BHARATPUR RTO, BHILWARA DTO, BHINMAL DTO, BHIWARI DTO, BIKANER RTO, BUNDI DTO, CHITTORGARH RTO, CHOMU DTO, CHURU DTO, DAUSA RTO, DHOLPUR DTO, DIDWANA DTO, DUDU DTO, DUDU FITNESS CENTER, DUNGARPUR DTO, EXPLORE IT SERVICES PVT. LTD., FREEDOM MOTORS, G.Y. Fitness Center, Ganesh Ji Fitness Center, HANUMANGARH DTO, Hindustan Automobiles, Indira Vehicle Fitness Centre, INFINITY FITNESS CENTER, Jai Bhawani Fitness Center, JAIPUR (FIRST) RTO, JAIPUR (SECOND) RTO, Jaipur Vehicle Fitness and Maintenance Center, JAISALMER DTO, JALORE DTO, JALORE FITNESS CENTRE, JHALAWAR DTO, JHUNJHUNU DTO, Jodhpur Parivahan Fitness Centre, JODHPUR RTO, KAROLI DTO, KEKRI DTO, KHETRI DTO, KISHANGARH DTO, KOTA RTO, Kota Vehicle Fitness Center, KOTPUTALI DTO, Laxmi Parivahan Fitness Center, M & D Automobile Fitness Center, M.K. Fitness Center, M/S Dholpur Fitness Center, M/S Jagdamba Fitness Center, M/S Nandan Fitness Testing Center, M/S OM Fitness & Service Center, Mahadev Fitness Center, MAHADEV FITNESS CENTER BHILWARA, MAHADEV FITNESS CENTER JODHPUR, Mahaveer Jain Fitness Centre, MAHAVEER PRASAD RAM KISHAN, Marudhara Transport Company, Marwar Fitness Center, Matsya Fitness Center, Meel Motors, Meera Fitness Center, MEERA FITNESS TESTING CENTER CHITTORGARH, Naganaray Fitness Center, NAGAUR DTO, Navdeep Fitness Test Center, Navdurga Vahan Fitness Center, Navkar Shri Fitness Testing Center, NOHAR DTO, NOKHA DTO, Nokha Vehicle Fitness Center, PALI RTO, Parasvnath Fitness Center, PAWAN VEHICLE FITNESS CENTER PVT LTD, PHALODI DTO, PIPAR CITY DTO, POKHRAN DTO, PRATAPGARH DTO, Preksha Parivahan Fitness Center, Prerna Parivahan Fitness Center, R.K. Fitness Center, RAJSAMAND DTO, RAMGANJMANDI DTO, Royal Motors, SADULSHAHAR DTO, SAHAPURA (BHILWARA) DTO, SAHAPURA (JAIPUR) DTO, SALUMBAR DTO, SAWAI MADHOPUR DTO, Schoolnet India Limited, SHAHPURA BHILWARA FITNESS CENTER, SHAHPURA VEHICLE FITNESS CENTER (JAIPUR), Shanti Vehicle Fitness Testing Center, Shashank Automobiles, SHIV KRIPA FITNESS CENTER PVT LTD, SHREE BALAJI FITNESS CENTER PALI, Shree Fitness Center, Shree Kamdhenu Fitness Center, SHREE SHYAM VEHICLE FITNESS CENTER, SHRI BALAJI FITNESS CENTER BIKANER, Shri Bikaner Fitness Center, Shri Fitness Center, Shri Force Fitness Center, Shri Karni Fitness Center, SHRI MAHALAXMI FITNESS CENTER, Shri Vinayak Auto Fitness Center, SIKAR RTO, Sikar Vehicle Fitness Center, SIROHI DTO, Speedline Auto Fitness Private Limited, SRI GANGANAGAR DTO, SUJANGARH DTO, SUMERPUR DTO, Swarna Shri Fitness Testing Center, Tirupati Associates, TIRUPATI ASSOCIATES MORIJA CHOMU, TIRUPATI FITNESS CENTER, TONK DTO, Tonk Fitness Center, Udaipur Fitness Center, UDAIPUR RTO, Vaahan Fitness Center, Vatsal Enterprises"
141
+ },
142
+ {
143
+ "State Code": "sk",
144
+ "Full State Name": "Sikkim ",
145
+ "RTO List": "Singtam, East Sikkim, GYALSING, JORETHANG, MANGAN, NAMCHI, Pakyong, RTO GANGTOK, SORENG"
146
+ },
147
+ {
148
+ "State Code": "tn",
149
+ "Full State Name": "Tamil Nadu ",
150
+ "RTO List": "ALANGUDI UO, AMBASAMUTHIRAM UO, AMBATTUR RTO, AMBUR UO, ARAKKONAM UO, ARANI RTO, ARANTHANGI UO, ARAVAKURICHI UO, ARIYALUR RTO, ARUPPUKOTTAI UO, ATTUR RTO, AVINASHI UO, BATLAGUNDU UO, BHAVANI UO, CHENGALPATTU RTO, CHENNAI (CENTRAL) RTO, CHENNAI (EAST) RTO, CHENNAI (NORTH) RTO, CHENNAI (NORTH-EAST) RTO, CHENNAI (SOUTH) RTO, CHENNAI (SOUTH-EAST) RTO, CHENNAI (SOUTH-WEST) RTO, CHENNAI (WEST) RTO, CHEYYAR UO, CHIDAMBARAM RTO, COIMBATORE (CENTRAL) RTO, COIMBATORE (NORTH) RTO, COIMBATORE (SOUTH) RTO, COIMBATORE (WEST) RTO, CUDDALORE RTO, DHARAPURAM RTO, DHARMAPURI RTO, DINDIGUL RTO, ERODE (WEST) RTO, ERODE RTO, GINGEE UO, GOPICHETTIPALAYAM RTO, GUDALORE UO, GUDIYATHAM UO, GUMMIDIPOONDI UO, HARUR UO, HOSUR RTO, ILLUPPUR UO, KALLAKURICHI RTO, KANCHEEPURAM RTO, KANGEYAM UO, KARAIKUDI UO, KARUR RTO, KOVILPATTI RTO, KRISHNAGIRI RTO, KULITHALI UO, KUMARAPALAYAM RTO, KUMBAKONAM RTO, KUNDRATHUR RTO, LALKUDI UO, MADURAI (CENTRAL) RTO, MADURAI (NORTH) RTO, MADURAI (SOUTH) RTO, MADURANTAGAM UO, MANAPARAI UO, MANMANGALAM UO, MANNARGUDI UO, MARTHANDAM RTO, MAYILADUTHURAI RTO, MEENAMBAKKAM RTO, MELUR UO, METTUPALAYAM RTO, METTUR RTO, MUSURI UO, NAGAPATTINAM RTO, NAGERCOIL RTO, NAMAKKAL (NORTH) RTO, NAMAKKAL (SOUTH) RTO, NATHAM UO, NEYVELI UO, ODDANCHATRAM UO, OMALURE UO, OOTY RTO, PALACODE UO, PALANI RTO, PANRUTI UO, PARAMAKUDI UO, PARAMATHI VELLURE UO, PATTUKOTTAI UO, PERAMBALUR RTO, PERUNDURAI RTO, POLLACHI RTO, POONAMALLEE RTO, PUDUKOTTAI RTO, RAMANATHAPURAM RTO, RANIPET RTO, RASIPURAM UO, REDHILLS RTO, RTO CHENNAI (NORTH WEST), SALEM (EAST) RTO, SALEM (SOUTH) RTO, SALEM (WEST) RTO, SANKAGIRI RTO, SANKARANKOVIL RTO, SATHYAMANGALAM UO, SHOLINGANALLUR RTO, SIRKALI UO, SIVAGANGAI RTO, SIVAKASI RTO, SRIPERUMBUDUR RTO, SRIRANGAM RTO, SRIVILLIPUTHUR RTO, STATE TRANSPORT AUTHORITY, SULUR UO, TAMBARAM RTO, TENKASI RTO, THANJAVUR RTO, THENI RTO, THIRUCHENDUR RTO, THIRUKALUKUNTRAM UO, THIRUMANGALAM UO, THIRUPATTUR RTO, THIRUTHANI UO, THIRUTHURAIPOONDI UO, THOOTHUKUDI RTO, THURAIYUR UO, TINDIVANAM RTO, TIRUCHENGODE RTO, TIRUCHI RTO, TIRUCHI(EAST) RTO, TIRUNELVELI RTO, TIRUPPUR (NORTH) RTO, TIRUPPUR (SOUTH) RTO, TIRUVALLUR RTO, TIRUVANNAMALAI RTO, TIRUVARUR RTO, TIRUVERANBUR UO, UDUMALPET RTO, ULUNDURPET RTO, USILAMPATTI UO, UTHAMAPALAYAM UO, VADIPATTI UO, VALAPPADI UO, VALLIYUR UO, VALPARAI UO, VANIYAMBADI RTO, VEDACHANDUR UO, VELLORE RTO, VILUPPURAM RTO, VIRUDHACHALAM UO, VIRUDHUNAGAR RTO"
151
+ },
152
+ {
153
+ "State Code": "ts",
154
+ "Full State Name": "Telangana ",
155
+ "RTO List": "MULUGU, NARAYANPET, RTA ADILABAD, RTA BHADRADRI, RTA IBRAHIMPATNAM, RTA JAGITYAL, RTA JANGOAN, RTA JAYASHANKAR, RTA JOGULAMBA, RTA KAMAREDDY, RTA KARIMNAGAR, RTA KHAMMAM, RTA KOMRAMBHEEM, RTA MAHABOOBNAGAR, RTA MAHABUBABAD, RTA MANCHERIAL, RTA MEDAK, RTA MEDCHAL, RTA NAGARKURNOOL, RTA NALGONDA, RTA NIRMAL, RTA NIZAMABAD, RTA PEDDAPALLI, RTA RAJANNA, RTA RANGAREDDY, RTA SANGAREDDY, RTA SIDDIPET, RTA SURYAPET, RTA UPPAL, RTA VIKARABAD, RTA WANAPARTHY, RTA WARANGAL RURAL, RTA WARANGAL URBAN, RTA YADADRI, RTA-HYDERABAD-CZ, RTA-HYDERABAD-EZ, RTA-HYDERABAD-NZ, RTA-HYDERABAD-SZ, RTA-HYDERABAD-WZ, UNIT OFFICE ARMOOR, UNIT OFFICE BHADRACHALAM, UNIT OFFICE BHODAN, UNIT OFFICE HUZURABAD, UNIT OFFICE KALWAKURTHY, UNIT OFFICE KODAD, UNIT OFFICE KORUTLA, UNIT OFFICE KUKATPALLY, UNIT OFFICE MIRYALAGUDA, UNIT OFFICE PARGI, UNIT OFFICE PATANCHERUVU, UNIT OFFICE PEBBAIR, UNIT OFFICE RAMAGUNDAM, UNIT OFFICE SATTUPALLI, UNIT OFFICE SHADNAGAR, UNIT OFFICE WYRA, UNIT OFFICE ZAHIRABAD"
156
+ },
157
+ {
158
+ "State Code": "tr",
159
+ "Full State Name": "Tripura ",
160
+ "RTO List": "DHALAI DTO, GOMATI DTO, KHOWAI DTO, NORTH TRIPURA DHM DTO, NORTH TRIPURA DTO, SEPAHIJALA DTO, SOUTH TRIPURA DTO, STA TRIPURA, UNAKOTI DTO, WEST TRIPURA JTC"
161
+ },
162
+ {
163
+ "State Code": "up",
164
+ "Full State Name": "Uttar Pradesh ",
165
+ "RTO List": "Agra RTO, AKBARPUR(AMBEDKAR NAGAR), ALIGARH RTO, Amethi ARTO, ARTO OFFICE RAMPUR, AURAIYA, AYODHYA RTO, Azamgarh RTO, Badaun, Baghpat, Bahraich, Ballia, Balrampur, BANDARTO, Barabanki ARTO, BAREILLY, BASTI RTO, Bhadohi(SANT RAVIDAS NAGAR), Bijnor, Bulandshahar, Chandauli, Chitrakoot, DEORIA, Etah, Etawah, Farrukhabad, FATHEHPUR, FEROZABAD, GHAZIABAD, Ghazipur, GONDA, Gorakhpur RTO, HAMIRPUR(UP), Hapur, HARDOI, HATHRAS, JAUNPUR, JhansiRTO, JPNAGAR, Kannauj, Kanpur Dehat, KANPUR NAGAR, Kasganj(kashi ram nagar), Kaushambi, LAKHIMPUR KHERI, Lalitpur, M/S Sai Dham Super Srv Soln Pvt Ltd Ghaziabad, MAHANAGAR ARTO LUCKNOW (UP321), Maharajganj, Mahoba, Mainpuri, MATHURA, Mau, MEERUT RTO, MIRZAPUR RTO, MORADABAD, MuzaffarNagar, Noida, Orai, PADRAUNA(KUSHI NAGAR), Pilibhit, PRATAPGARH, Prayagraj RTO, Raibareilly, SAHARANPUR RTO, SAHJAHANPUR, Sambhal ARTO, Sant Kabir Nagar, SHAMLI ARTO, Shravasti, Siddharth Nagar(naugarh), Sitapur, SONBHADRA, STATE TRANSPORT AUTHORITY, Sultanpur, TRANSPORT NAGAR RTO LUCKNOW (UP32), Unnao, VARANASI RTO"
166
+ },
167
+ {
168
+ "State Code": "uk",
169
+ "Full State Name": "Uttarakhand ",
170
+ "RTO List": "ALMORA RTO, BAGESHWAR ARTO, DEHRADUN RTO, HALDWANI RTO, HARIDWAR ARTO, KARANPRAYAG ARTO, KASHIPUR ARTO, KOTDWAR ARTO, PAURI RTO, PITHORAGARH ARTO, RAMNAGAR ARTO, RANIKHET ARTO, RISHIKESH ARTO, ROORKEE ARTO, RUDRAPRAYAG ARTO, STATE TRANSPORT AUTHORITY, TANAKPUR ARTO, TEHRI ARTO, UDHAM SINGH NAGAR ARTO, UTTARKASHI ARTO, VIKAS NAGAR ARTO"
171
+ },
172
+ {
173
+ "State Code": "wb",
174
+ "Full State Name": "West Bengal ",
175
+ "RTO List": "ALIPORE RTO, Alipurduar RTO, Arambag ARTO, Bangaon ARTO, Bankura RTO, Barasat RTO, Barrackpore ARTO, Baruipur ARTO, Basirhat ARTO, BEHALA ARTO, Birbhum RTO, Bishnupur ARTO, Bolpur ARTO, Chanchol ARTO, Contai ARTO, Coochbehar RTO, Dakshin Dinajpur RTO, Darjeeling RTO, Diamond Harbour ARTO, Durgapore ARTO, GHATAL ARTO, HALDIA ARTO, Hooghly RTO, Howrah RTO, Islampur ARTO, Jalpaiguri RTO, JANGIPUR ARTO, Jhargram RTO, KALIMPONG RTO, Kalna ARTO, Kalyani ARTO, Kandi, KASBA ARTO, Katwa ARTO, Kharagpur ARTO, MALDA RTO, Manbazar, Mathabhanga ARTO, Murshidabad RTO, Nadia RTO, Paschim Burdwan RTO, Paschim Midnapore RTO, Purba Burdwan RTO, Purulia RTO, PVD KOLKATA, Raghunathpur ARTO, Rampurhat ARTO, SALTLAKE ARTO, SILIGURI ARTO, Srirampur ARTO, STA WEST BENGAL, STA-Durgapur, STA-North Bengal (Siliguri), TAMLUK RTO, Tehatta ARTO, Uluberia ARTO, UTTAR DINAJPUR RTO"
176
+ },
177
+ {
178
+ "State Code": "dd",
179
+ "Full State Name": "UT of DNH and DD ",
180
+ "RTO List": "DAMAN, DIU, SILVASSA"
181
+ }
182
+ ]
state_wise_total/2009.csv ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ State,Total Consolidated
2
+ AN,6503
3
+ AP,503981
4
+ AR,9424
5
+ AS,92677
6
+ BR,103370
7
+ CG,187306
8
+ CH,35878
9
+ DD,10264
10
+ DL,374533
11
+ GA,38262
12
+ GJ,536408
13
+ HP,68663
14
+ HR,411264
15
+ JH,201508
16
+ JK,62490
17
+ KA,851961
18
+ KL,500486
19
+ LA,1408
20
+ LD,958
21
+ MH,1094395
22
+ ML,18019
23
+ MN,18093
24
+ MP,646015
25
+ MZ,10617
26
+ NL,13901
27
+ OR,299395
28
+ PB,390311
29
+ PY,62486
30
+ RJ,410523
31
+ SK,2712
32
+ TN,1121725
33
+ TR,17666
34
+ UK,115724
35
+ UP,1255684
36
+ WB,378535
37
+ Total,9853145
state_wise_total/2010.csv ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ State,Total Consolidated
2
+ AN,7517
3
+ AP,635716
4
+ AR,10037
5
+ AS,161928
6
+ BR,237608
7
+ CG,314126
8
+ CH,53825
9
+ DD,12626
10
+ DL,450296
11
+ GA,54216
12
+ GJ,971747
13
+ HP,88414
14
+ HR,552332
15
+ JH,256009
16
+ JK,74102
17
+ KA,1106966
18
+ KL,637365
19
+ LA,1501
20
+ LD,834
21
+ MH,1601586
22
+ ML,21956
23
+ MN,20500
24
+ MP,770145
25
+ MZ,12764
26
+ NL,20770
27
+ OR,391691
28
+ PB,487439
29
+ PY,69884
30
+ RJ,776856
31
+ SK,5528
32
+ TN,1482447
33
+ TR,26387
34
+ UK,152073
35
+ UP,1548447
36
+ WB,555264
37
+ Total,13570902
state_wise_total/2011.csv ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ State,Total Consolidated
2
+ AN,7172
3
+ AP,721945
4
+ AR,10840
5
+ AS,209870
6
+ BR,381148
7
+ CG,332714
8
+ CH,50572
9
+ DD,14389
10
+ DL,480781
11
+ GA,75025
12
+ GJ,1400530
13
+ HP,88542
14
+ HR,629140
15
+ JH,277245
16
+ JK,95283
17
+ KA,1278803
18
+ KL,781836
19
+ LA,1683
20
+ LD,1071
21
+ MH,1961079
22
+ ML,23745
23
+ MN,23263
24
+ MP,880452
25
+ MZ,14400
26
+ NL,22864
27
+ OR,418846
28
+ PB,574060
29
+ PY,82767
30
+ RJ,962544
31
+ SK,6172
32
+ TN,1728652
33
+ TR,28311
34
+ UK,173013
35
+ UP,1720751
36
+ WB,599068
37
+ Total,16058576
state_wise_total/2012.csv ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ State,Total Consolidated
2
+ AN,8441
3
+ AP,762657
4
+ AR,12461
5
+ AS,216210
6
+ BR,504682
7
+ CG,364224
8
+ CH,52068
9
+ DD,15299
10
+ DL,484542
11
+ GA,75681
12
+ GJ,1431639
13
+ HP,90305
14
+ HR,626629
15
+ JH,302507
16
+ JK,102481
17
+ KA,1373993
18
+ KL,976200
19
+ LA,2246
20
+ LD,1110
21
+ MH,2044973
22
+ ML,26194
23
+ MN,28856
24
+ MP,909386
25
+ MZ,15643
26
+ NL,24749
27
+ OR,431274
28
+ PB,837505
29
+ PY,65881
30
+ RJ,1100656
31
+ SK,9697
32
+ TN,1890230
33
+ TR,29884
34
+ UK,186572
35
+ UP,1910655
36
+ WB,627007
37
+ Total,17542537
state_wise_total/2013.csv ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ State,Total Consolidated
2
+ AN,8108
3
+ AP,702497
4
+ AR,14303
5
+ AS,236810
6
+ BR,604281
7
+ CG,453738
8
+ CH,45910
9
+ DD,15677
10
+ DL,486691
11
+ GA,69699
12
+ GJ,1340061
13
+ HP,97564
14
+ HR,640572
15
+ JH,324878
16
+ JK,110857
17
+ KA,1388531
18
+ KL,941144
19
+ LA,1851
20
+ LD,887
21
+ MH,2029793
22
+ ML,25257
23
+ MN,29147
24
+ MP,995290
25
+ MZ,16158
26
+ NL,23030
27
+ OR,474624
28
+ PB,770122
29
+ PY,53050
30
+ RJ,1212101
31
+ SK,5484
32
+ TN,1676825
33
+ TR,29558
34
+ UK,181840
35
+ UP,2063364
36
+ WB,691890
37
+ Total,17761592
state_wise_total/2014.csv ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ State,Total Consolidated
2
+ AN,8454
3
+ AP,879720
4
+ AR,15059
5
+ AS,261022
6
+ BR,674775
7
+ CG,490947
8
+ CH,47268
9
+ DD,15647
10
+ DL,525582
11
+ GA,75246
12
+ GJ,1504738
13
+ HP,106815
14
+ HR,656586
15
+ JH,349352
16
+ JK,109414
17
+ KA,1549205
18
+ KL,902902
19
+ LA,2357
20
+ LD,959
21
+ MH,2258081
22
+ ML,21909
23
+ MN,29632
24
+ MP,1048456
25
+ MZ,14507
26
+ NL,20348
27
+ OR,533795
28
+ PB,813429
29
+ PY,53681
30
+ RJ,1323772
31
+ SK,4828
32
+ TN,1649191
33
+ TR,30694
34
+ UK,200125
35
+ UP,2364093
36
+ WB,743877
37
+ Total,19286466
state_wise_total/2015.csv ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ State,Total Consolidated
2
+ AN,8463
3
+ AP,857293
4
+ AR,13848
5
+ AS,293956
6
+ BR,732097
7
+ CG,463564
8
+ CH,46754
9
+ DD,15566
10
+ DL,623900
11
+ GA,74083
12
+ GJ,1492664
13
+ HP,112535
14
+ HR,684339
15
+ JH,403490
16
+ JK,118086
17
+ KA,1563735
18
+ KL,894124
19
+ LA,2052
20
+ LD,1033
21
+ MH,2275190
22
+ ML,20670
23
+ MN,28385
24
+ MP,982785
25
+ MZ,13445
26
+ NL,22974
27
+ OR,591470
28
+ PB,816249
29
+ PY,54755
30
+ RJ,1311577
31
+ SK,5591
32
+ TN,1626113
33
+ TR,35429
34
+ UK,217306
35
+ UP,2436132
36
+ WB,822604
37
+ Total,19662257
state_wise_total/2016.csv ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ State,Total Consolidated
2
+ AN,9484
3
+ AP,1043293
4
+ AR,18135
5
+ AS,329997
6
+ BR,870620
7
+ CG,467901
8
+ CH,47445
9
+ DD,18237
10
+ DL,681707
11
+ GA,78520
12
+ GJ,1595893
13
+ HP,123652
14
+ HR,690868
15
+ JH,447470
16
+ JK,113994
17
+ KA,1663785
18
+ KL,946258
19
+ LA,2282
20
+ LD,846
21
+ MH,2420195
22
+ ML,23560
23
+ MN,29411
24
+ MP,1093730
25
+ MZ,14798
26
+ NL,26166
27
+ OR,647743
28
+ PB,775204
29
+ PY,66244
30
+ RJ,1317611
31
+ SK,5429
32
+ TN,1903740
33
+ TR,39792
34
+ UK,223661
35
+ UP,2636230
36
+ WB,950144
37
+ Total,21324045
state_wise_total/2017.csv ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ State,Total Consolidated
2
+ AN,9979
3
+ AP,1144793
4
+ AR,23191
5
+ AS,427626
6
+ BR,913311
7
+ CG,556447
8
+ CH,48466
9
+ DD,19193
10
+ DL,707547
11
+ GA,86800
12
+ GJ,1722622
13
+ HP,138723
14
+ HR,754168
15
+ JH,584946
16
+ JK,164981
17
+ KA,1602786
18
+ KL,1018354
19
+ LA,2837
20
+ LD,1119
21
+ MH,2558732
22
+ ML,28848
23
+ MN,27906
24
+ MP,1294350
25
+ MZ,20083
26
+ NL,29077
27
+ OR,769372
28
+ PB,840876
29
+ PY,68484
30
+ RJ,1391776
31
+ SK,5394
32
+ TN,1910974
33
+ TR,46191
34
+ UK,264952
35
+ UP,3080898
36
+ WB,1037163
37
+ Total,23302965
state_wise_total/2018.csv ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ State,Total Consolidated
2
+ AN,10141
3
+ AP,1245102
4
+ AR,23159
5
+ AS,518751
6
+ BR,1285979
7
+ CG,576964
8
+ CH,47408
9
+ DD,20802
10
+ DL,721496
11
+ GA,81203
12
+ GJ,1825095
13
+ HP,144778
14
+ HR,860403
15
+ JH,635293
16
+ JK,183911
17
+ KA,1698570
18
+ KL,1052156
19
+ LA,3363
20
+ LD,1218
21
+ MH,2710417
22
+ ML,33363
23
+ MN,33263
24
+ MP,1456305
25
+ MZ,23840
26
+ NL,33124
27
+ OR,859396
28
+ PB,841658
29
+ PY,65508
30
+ RJ,1477531
31
+ SK,7160
32
+ TN,2116079
33
+ TR,60632
34
+ UK,282748
35
+ UP,3354521
36
+ WB,1128771
37
+ Total,25420108
state_wise_total/2019.csv ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ State,Total Consolidated
2
+ AN,9138
3
+ AP,1147673
4
+ AR,34981
5
+ AS,516908
6
+ BR,1266653
7
+ CG,668447
8
+ CH,46126
9
+ DD,18253
10
+ DL,638998
11
+ GA,74236
12
+ GJ,1627265
13
+ HP,138542
14
+ HR,853041
15
+ JH,559070
16
+ JK,144524
17
+ KA,1578997
18
+ KL,915012
19
+ LA,2043
20
+ LD,1054
21
+ MH,2307772
22
+ ML,33342
23
+ MN,37329
24
+ MP,1533243
25
+ MZ,30927
26
+ NL,28964
27
+ OR,825938
28
+ PB,759710
29
+ PY,58309
30
+ RJ,1478778
31
+ SK,10360
32
+ TN,1970231
33
+ TR,56254
34
+ UK,245876
35
+ UP,3362766
36
+ WB,1176609
37
+ Total,24157369
state_wise_total/2020.csv ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ State,Total Consolidated
2
+ AN,6224
3
+ AP,987883
4
+ AR,20941
5
+ AS,407082
6
+ BR,1036877
7
+ CG,481833
8
+ CH,30687
9
+ DD,13165
10
+ DL,423368
11
+ GA,42437
12
+ GJ,1124083
13
+ HP,133627
14
+ HR,607017
15
+ JH,483086
16
+ JK,184295
17
+ KA,1205789
18
+ KL,641127
19
+ LA,2418
20
+ LD,730
21
+ MH,1775068
22
+ ML,23450
23
+ MN,15965
24
+ MP,1261945
25
+ MZ,23396
26
+ NL,16251
27
+ OR,601284
28
+ PB,514854
29
+ PY,42172
30
+ RJ,1107629
31
+ SK,7218
32
+ TN,1492671
33
+ TR,51040
34
+ UK,185313
35
+ UP,2626140
36
+ WB,1055869
37
+ Total,18632934
state_wise_total/2021.csv ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ State,Total Consolidated
2
+ AN,5735
3
+ AP,951774
4
+ AR,23491
5
+ AS,457668
6
+ BR,1009965
7
+ CG,455865
8
+ CH,38634
9
+ DD,16531
10
+ DL,458827
11
+ GA,50956
12
+ GJ,1256226
13
+ HP,114728
14
+ HR,632316
15
+ JH,470619
16
+ JK,157158
17
+ KA,1178651
18
+ KL,765887
19
+ LA,3728
20
+ LD,820
21
+ MH,1923269
22
+ ML,25841
23
+ MN,35881
24
+ MP,1150383
25
+ MZ,25215
26
+ NL,21880
27
+ OR,536826
28
+ PB,517469
29
+ PY,45136
30
+ RJ,1062976
31
+ SK,10006
32
+ TN,1515040
33
+ TR,46292
34
+ UK,196030
35
+ UP,2796198
36
+ WB,955456
37
+ Total,18913477
state_wise_total/2022.csv ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ State,Total Consolidated
2
+ AN,7059
3
+ AP,852965
4
+ AR,26721
5
+ AS,516652
6
+ BR,1129644
7
+ CG,501220
8
+ CH,50899
9
+ DD,18938
10
+ DL,608336
11
+ GA,70799
12
+ GJ,1568471
13
+ HP,118973
14
+ HR,740822
15
+ JH,491316
16
+ JK,162810
17
+ KA,1532190
18
+ KL,784055
19
+ LA,6014
20
+ LD,415
21
+ MH,2374413
22
+ ML,35658
23
+ MN,55170
24
+ MP,1366148
25
+ MZ,27064
26
+ NL,25710
27
+ OR,633759
28
+ PB,555797
29
+ PY,50357
30
+ RJ,1287122
31
+ SK,10572
32
+ TN,1700726
33
+ TR,52646
34
+ UK,231037
35
+ UP,3013726
36
+ WB,972475
37
+ Total,21580679
state_wise_total/2023.csv ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ State,Total Consolidated
2
+ AN,8069
3
+ AP,895337
4
+ AR,30879
5
+ AS,653450
6
+ BR,1288309
7
+ CG,564645
8
+ CH,53222
9
+ DD,22408
10
+ DL,657972
11
+ GA,81302
12
+ GJ,1821062
13
+ HP,127568
14
+ HR,836278
15
+ JH,544874
16
+ JK,171601
17
+ KA,1746772
18
+ KL,759215
19
+ LA,5153
20
+ LD,412
21
+ MH,2563787
22
+ ML,40314
23
+ MN,26591
24
+ MP,1498255
25
+ MZ,28729
26
+ NL,27147
27
+ OR,739980
28
+ PB,640829
29
+ PY,55365
30
+ RJ,1524161
31
+ SK,11010
32
+ TN,1826035
33
+ TR,56649
34
+ UK,256959
35
+ UP,3444704
36
+ WB,1002303
37
+ Total,24011346
state_wise_total/2024.csv ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ State,Total Consolidated
2
+ AN,8463
3
+ AP,913738
4
+ AR,36744
5
+ AS,629669
6
+ BR,1395065
7
+ CG,714085
8
+ CH,46398
9
+ DD,24255
10
+ DL,711264
11
+ GA,84308
12
+ GJ,1898987
13
+ HP,147725
14
+ HR,996474
15
+ JH,579180
16
+ JK,179397
17
+ KA,1888269
18
+ KL,779196
19
+ LA,5439
20
+ LD,372
21
+ MH,2887858
22
+ ML,42360
23
+ MN,28030
24
+ MP,1667810
25
+ MZ,30022
26
+ NL,27770
27
+ OR,811022
28
+ PB,705490
29
+ PY,65578
30
+ RJ,1653200
31
+ SK,11685
32
+ TN,1953453
33
+ TR,63651
34
+ UK,281767
35
+ UP,3758113
36
+ WB,1184917
37
+ Total,26211754
state_wise_total/2025.csv ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ State,Total Consolidated
2
+ AN,2342
3
+ AP,232534
4
+ AR,10050
5
+ AS,180976
6
+ BR,351702
7
+ CG,208943
8
+ CH,13248
9
+ DD,7410
10
+ DL,215234
11
+ GA,24495
12
+ GJ,493369
13
+ HP,41471
14
+ HR,285349
15
+ JH,163677
16
+ JK,46972
17
+ KA,525701
18
+ KL,227892
19
+ LA,651
20
+ LD,293
21
+ MH,876662
22
+ ML,11831
23
+ MN,8296
24
+ MP,455152
25
+ MZ,8410
26
+ NL,8161
27
+ OR,247102
28
+ PB,205654
29
+ PY,21485
30
+ RJ,397020
31
+ SK,2907
32
+ TN,599518
33
+ TR,16557
34
+ UK,69924
35
+ UP,1076554
36
+ WB,317905
37
+ Total,7355447
vehicle_analysis_1.db ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:1e9c7921c36ee9c1a58bdfb41ee3e858d3a582f7a250d151eedfdc4dcf5a5a93
3
+ size 92508160