File size: 224,079 Bytes
3992954
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 89,
   "id": "2668805c",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "import matplotlib\n",
    "import warnings\n",
    "warnings.filterwarnings('ignore')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "2566dffa",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>area_type</th>\n",
       "      <th>availability</th>\n",
       "      <th>location</th>\n",
       "      <th>size</th>\n",
       "      <th>society</th>\n",
       "      <th>total_sqft</th>\n",
       "      <th>bath</th>\n",
       "      <th>balcony</th>\n",
       "      <th>price</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Super built-up  Area</td>\n",
       "      <td>19-Dec</td>\n",
       "      <td>Electronic City Phase II</td>\n",
       "      <td>2 BHK</td>\n",
       "      <td>Coomee</td>\n",
       "      <td>1056</td>\n",
       "      <td>2.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>39.07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Plot  Area</td>\n",
       "      <td>Ready To Move</td>\n",
       "      <td>Chikka Tirupathi</td>\n",
       "      <td>4 Bedroom</td>\n",
       "      <td>Theanmp</td>\n",
       "      <td>2600</td>\n",
       "      <td>5.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>120.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Built-up  Area</td>\n",
       "      <td>Ready To Move</td>\n",
       "      <td>Uttarahalli</td>\n",
       "      <td>3 BHK</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1440</td>\n",
       "      <td>2.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>62.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Super built-up  Area</td>\n",
       "      <td>Ready To Move</td>\n",
       "      <td>Lingadheeranahalli</td>\n",
       "      <td>3 BHK</td>\n",
       "      <td>Soiewre</td>\n",
       "      <td>1521</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>95.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Super built-up  Area</td>\n",
       "      <td>Ready To Move</td>\n",
       "      <td>Kothanur</td>\n",
       "      <td>2 BHK</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1200</td>\n",
       "      <td>2.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>51.00</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "              area_type   availability                  location       size  \\\n",
       "0  Super built-up  Area         19-Dec  Electronic City Phase II      2 BHK   \n",
       "1            Plot  Area  Ready To Move          Chikka Tirupathi  4 Bedroom   \n",
       "2        Built-up  Area  Ready To Move               Uttarahalli      3 BHK   \n",
       "3  Super built-up  Area  Ready To Move        Lingadheeranahalli      3 BHK   \n",
       "4  Super built-up  Area  Ready To Move                  Kothanur      2 BHK   \n",
       "\n",
       "   society total_sqft  bath  balcony   price  \n",
       "0  Coomee        1056   2.0      1.0   39.07  \n",
       "1  Theanmp       2600   5.0      3.0  120.00  \n",
       "2      NaN       1440   2.0      3.0   62.00  \n",
       "3  Soiewre       1521   3.0      1.0   95.00  \n",
       "4      NaN       1200   2.0      1.0   51.00  "
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df1=pd.read_csv('bengaluru_house_prices.csv')\n",
    "df1.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "141f3c7b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(13320, 9)"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df1.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "a666c8e7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['area_type', 'availability', 'location', 'size', 'society',\n",
       "       'total_sqft', 'bath', 'balcony', 'price'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df1.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "c4b78e77",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['Super built-up  Area', 'Plot  Area', 'Built-up  Area',\n",
       "       'Carpet  Area'], dtype=object)"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df1['area_type'].unique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "d2b1286a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Super built-up  Area    8790\n",
       "Built-up  Area          2418\n",
       "Plot  Area              2025\n",
       "Carpet  Area              87\n",
       "Name: area_type, dtype: int64"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df1['area_type'].value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "4776cabc",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>location</th>\n",
       "      <th>size</th>\n",
       "      <th>total_sqft</th>\n",
       "      <th>bath</th>\n",
       "      <th>price</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Electronic City Phase II</td>\n",
       "      <td>2 BHK</td>\n",
       "      <td>1056</td>\n",
       "      <td>2.0</td>\n",
       "      <td>39.07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Chikka Tirupathi</td>\n",
       "      <td>4 Bedroom</td>\n",
       "      <td>2600</td>\n",
       "      <td>5.0</td>\n",
       "      <td>120.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Uttarahalli</td>\n",
       "      <td>3 BHK</td>\n",
       "      <td>1440</td>\n",
       "      <td>2.0</td>\n",
       "      <td>62.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Lingadheeranahalli</td>\n",
       "      <td>3 BHK</td>\n",
       "      <td>1521</td>\n",
       "      <td>3.0</td>\n",
       "      <td>95.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Kothanur</td>\n",
       "      <td>2 BHK</td>\n",
       "      <td>1200</td>\n",
       "      <td>2.0</td>\n",
       "      <td>51.00</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   location       size total_sqft  bath   price\n",
       "0  Electronic City Phase II      2 BHK       1056   2.0   39.07\n",
       "1          Chikka Tirupathi  4 Bedroom       2600   5.0  120.00\n",
       "2               Uttarahalli      3 BHK       1440   2.0   62.00\n",
       "3        Lingadheeranahalli      3 BHK       1521   3.0   95.00\n",
       "4                  Kothanur      2 BHK       1200   2.0   51.00"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2=df1.drop(['area_type','availability','society','balcony'],axis='columns')\n",
    "df2.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "b971be8c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(13320, 5)"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "da19f381",
   "metadata": {},
   "source": [
    "### Data Cleaning: Handling NA values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "84ffb66b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "location       1\n",
       "size          16\n",
       "total_sqft     0\n",
       "bath          73\n",
       "price          0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2.isnull().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "c7cc2a04",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "location      0\n",
       "size          0\n",
       "total_sqft    0\n",
       "bath          0\n",
       "price         0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df3=df2.dropna()\n",
    "df3.isnull().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "1a0f5f5d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(13246, 5)"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df3.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "618deabb",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Dinesh_vivobook\\AppData\\Local\\Temp\\ipykernel_6088\\1261436634.py:1: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  df3['bhk']=df3['size'].apply(lambda x: int(x.split(' ')[0]))\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([ 2,  4,  3,  6,  1,  8,  7,  5, 11,  9, 27, 10, 19, 16, 43, 14, 12,\n",
       "       13, 18], dtype=int64)"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df3['bhk']=df3['size'].apply(lambda x: int(x.split(' ')[0]))\n",
    "df3.bhk.unique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "c027ea7e",
   "metadata": {},
   "outputs": [],
   "source": [
    "def is_float(x):\n",
    "    try:\n",
    "        float(x)\n",
    "    except:\n",
    "        return False\n",
    "    return True"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "506c5d8e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>location</th>\n",
       "      <th>size</th>\n",
       "      <th>total_sqft</th>\n",
       "      <th>bath</th>\n",
       "      <th>price</th>\n",
       "      <th>bhk</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>Yelahanka</td>\n",
       "      <td>4 BHK</td>\n",
       "      <td>2100 - 2850</td>\n",
       "      <td>4.0</td>\n",
       "      <td>186.000</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>122</th>\n",
       "      <td>Hebbal</td>\n",
       "      <td>4 BHK</td>\n",
       "      <td>3067 - 8156</td>\n",
       "      <td>4.0</td>\n",
       "      <td>477.000</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>137</th>\n",
       "      <td>8th Phase JP Nagar</td>\n",
       "      <td>2 BHK</td>\n",
       "      <td>1042 - 1105</td>\n",
       "      <td>2.0</td>\n",
       "      <td>54.005</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>165</th>\n",
       "      <td>Sarjapur</td>\n",
       "      <td>2 BHK</td>\n",
       "      <td>1145 - 1340</td>\n",
       "      <td>2.0</td>\n",
       "      <td>43.490</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>188</th>\n",
       "      <td>KR Puram</td>\n",
       "      <td>2 BHK</td>\n",
       "      <td>1015 - 1540</td>\n",
       "      <td>2.0</td>\n",
       "      <td>56.800</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>410</th>\n",
       "      <td>Kengeri</td>\n",
       "      <td>1 BHK</td>\n",
       "      <td>34.46Sq. Meter</td>\n",
       "      <td>1.0</td>\n",
       "      <td>18.500</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>549</th>\n",
       "      <td>Hennur Road</td>\n",
       "      <td>2 BHK</td>\n",
       "      <td>1195 - 1440</td>\n",
       "      <td>2.0</td>\n",
       "      <td>63.770</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>648</th>\n",
       "      <td>Arekere</td>\n",
       "      <td>9 Bedroom</td>\n",
       "      <td>4125Perch</td>\n",
       "      <td>9.0</td>\n",
       "      <td>265.000</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>661</th>\n",
       "      <td>Yelahanka</td>\n",
       "      <td>2 BHK</td>\n",
       "      <td>1120 - 1145</td>\n",
       "      <td>2.0</td>\n",
       "      <td>48.130</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>672</th>\n",
       "      <td>Bettahalsoor</td>\n",
       "      <td>4 Bedroom</td>\n",
       "      <td>3090 - 5002</td>\n",
       "      <td>4.0</td>\n",
       "      <td>445.000</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "               location       size      total_sqft  bath    price  bhk\n",
       "30            Yelahanka      4 BHK     2100 - 2850   4.0  186.000    4\n",
       "122              Hebbal      4 BHK     3067 - 8156   4.0  477.000    4\n",
       "137  8th Phase JP Nagar      2 BHK     1042 - 1105   2.0   54.005    2\n",
       "165            Sarjapur      2 BHK     1145 - 1340   2.0   43.490    2\n",
       "188            KR Puram      2 BHK     1015 - 1540   2.0   56.800    2\n",
       "410             Kengeri      1 BHK  34.46Sq. Meter   1.0   18.500    1\n",
       "549         Hennur Road      2 BHK     1195 - 1440   2.0   63.770    2\n",
       "648             Arekere  9 Bedroom       4125Perch   9.0  265.000    9\n",
       "661           Yelahanka      2 BHK     1120 - 1145   2.0   48.130    2\n",
       "672        Bettahalsoor  4 Bedroom     3090 - 5002   4.0  445.000    4"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df3[~df3['total_sqft'].apply(is_float)].head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "53cb2ebd",
   "metadata": {},
   "outputs": [],
   "source": [
    "def convert_sqft_to_num(x):\n",
    "    tokens=x.split('-')\n",
    "    if(len(tokens)==2):\n",
    "        return (float(tokens[0])+float(tokens[1]))/2\n",
    "    try:\n",
    "        return float(x)\n",
    "    except:\n",
    "        return None"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "990186c4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>location</th>\n",
       "      <th>size</th>\n",
       "      <th>total_sqft</th>\n",
       "      <th>bath</th>\n",
       "      <th>price</th>\n",
       "      <th>bhk</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Electronic City Phase II</td>\n",
       "      <td>2 BHK</td>\n",
       "      <td>1056.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>39.07</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Chikka Tirupathi</td>\n",
       "      <td>4 Bedroom</td>\n",
       "      <td>2600.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>120.00</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Uttarahalli</td>\n",
       "      <td>3 BHK</td>\n",
       "      <td>1440.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>62.00</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Lingadheeranahalli</td>\n",
       "      <td>3 BHK</td>\n",
       "      <td>1521.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>95.00</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Kothanur</td>\n",
       "      <td>2 BHK</td>\n",
       "      <td>1200.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>51.00</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   location       size  total_sqft  bath   price  bhk\n",
       "0  Electronic City Phase II      2 BHK      1056.0   2.0   39.07    2\n",
       "1          Chikka Tirupathi  4 Bedroom      2600.0   5.0  120.00    4\n",
       "2               Uttarahalli      3 BHK      1440.0   2.0   62.00    3\n",
       "3        Lingadheeranahalli      3 BHK      1521.0   3.0   95.00    3\n",
       "4                  Kothanur      2 BHK      1200.0   2.0   51.00    2"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df4=df3.copy()\n",
    "df4.total_sqft=df4.total_sqft.apply(convert_sqft_to_num)\n",
    "df4=df4[df4.total_sqft.notnull()]\n",
    "df4.head(5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "7f1b0177",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>location</th>\n",
       "      <th>size</th>\n",
       "      <th>total_sqft</th>\n",
       "      <th>bath</th>\n",
       "      <th>price</th>\n",
       "      <th>bhk</th>\n",
       "      <th>price_per_sqft</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Electronic City Phase II</td>\n",
       "      <td>2 BHK</td>\n",
       "      <td>1056.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>39.07</td>\n",
       "      <td>2</td>\n",
       "      <td>3699.810606</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Chikka Tirupathi</td>\n",
       "      <td>4 Bedroom</td>\n",
       "      <td>2600.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>120.00</td>\n",
       "      <td>4</td>\n",
       "      <td>4615.384615</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Uttarahalli</td>\n",
       "      <td>3 BHK</td>\n",
       "      <td>1440.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>62.00</td>\n",
       "      <td>3</td>\n",
       "      <td>4305.555556</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Lingadheeranahalli</td>\n",
       "      <td>3 BHK</td>\n",
       "      <td>1521.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>95.00</td>\n",
       "      <td>3</td>\n",
       "      <td>6245.890861</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Kothanur</td>\n",
       "      <td>2 BHK</td>\n",
       "      <td>1200.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>51.00</td>\n",
       "      <td>2</td>\n",
       "      <td>4250.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   location       size  total_sqft  bath   price  bhk  \\\n",
       "0  Electronic City Phase II      2 BHK      1056.0   2.0   39.07    2   \n",
       "1          Chikka Tirupathi  4 Bedroom      2600.0   5.0  120.00    4   \n",
       "2               Uttarahalli      3 BHK      1440.0   2.0   62.00    3   \n",
       "3        Lingadheeranahalli      3 BHK      1521.0   3.0   95.00    3   \n",
       "4                  Kothanur      2 BHK      1200.0   2.0   51.00    2   \n",
       "\n",
       "   price_per_sqft  \n",
       "0     3699.810606  \n",
       "1     4615.384615  \n",
       "2     4305.555556  \n",
       "3     6245.890861  \n",
       "4     4250.000000  "
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df5=df4.copy()\n",
    "df5['price_per_sqft']=df5['price']*100000/df5['total_sqft']\n",
    "df5.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "ad0a2319",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count    1.320000e+04\n",
       "mean     7.920759e+03\n",
       "std      1.067272e+05\n",
       "min      2.678298e+02\n",
       "25%      4.267701e+03\n",
       "50%      5.438331e+03\n",
       "75%      7.317073e+03\n",
       "max      1.200000e+07\n",
       "Name: price_per_sqft, dtype: float64"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df5_stats=df5['price_per_sqft'].describe()\n",
    "df5_stats"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "fa41ad05",
   "metadata": {},
   "outputs": [],
   "source": [
    "df5.to_csv(\"bhp.csv\",index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "17d613ae",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(13200, 7)"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df5.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "9cc20326",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Whitefield                   533\n",
       "Sarjapur  Road               392\n",
       "Electronic City              304\n",
       "Kanakpura Road               264\n",
       "Thanisandra                  235\n",
       "                            ... \n",
       "Rajanna Layout                 1\n",
       "Subramanyanagar                1\n",
       "Lakshmipura Vidyaanyapura      1\n",
       "Malur Hosur Road               1\n",
       "Abshot Layout                  1\n",
       "Name: location, Length: 1287, dtype: int64"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df5.location = df5.location.apply(lambda x: x.strip())\n",
    "location_stats = df5['location'].value_counts(ascending=False)\n",
    "location_stats"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "b0806611",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "13200"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "location_stats.values.sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "d9984a8b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "240"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(location_stats[location_stats>10])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "59cac967",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1287"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(location_stats)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "2fe2b271",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1047"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(location_stats[location_stats<=10])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "f3cddd30",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "BTM 1st Stage                10\n",
       "Gunjur Palya                 10\n",
       "Nagappa Reddy Layout         10\n",
       "Sector 1 HSR Layout          10\n",
       "Thyagaraja Nagar             10\n",
       "                             ..\n",
       "Rajanna Layout                1\n",
       "Subramanyanagar               1\n",
       "Lakshmipura Vidyaanyapura     1\n",
       "Malur Hosur Road              1\n",
       "Abshot Layout                 1\n",
       "Name: location, Length: 1047, dtype: int64"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "location_stats_less_than_10 = location_stats[location_stats<=10]\n",
    "location_stats_less_than_10"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "6be6b2e6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1287"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(df5.location.unique())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "5a9ea722",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "241"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df5.location = df5.location.apply(lambda x: 'other' if x in location_stats_less_than_10 else x)\n",
    "len(df5.location.unique())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "bccc5a57",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>location</th>\n",
       "      <th>size</th>\n",
       "      <th>total_sqft</th>\n",
       "      <th>bath</th>\n",
       "      <th>price</th>\n",
       "      <th>bhk</th>\n",
       "      <th>price_per_sqft</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Electronic City Phase II</td>\n",
       "      <td>2 BHK</td>\n",
       "      <td>1056.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>39.07</td>\n",
       "      <td>2</td>\n",
       "      <td>3699.810606</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Chikka Tirupathi</td>\n",
       "      <td>4 Bedroom</td>\n",
       "      <td>2600.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>120.00</td>\n",
       "      <td>4</td>\n",
       "      <td>4615.384615</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Uttarahalli</td>\n",
       "      <td>3 BHK</td>\n",
       "      <td>1440.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>62.00</td>\n",
       "      <td>3</td>\n",
       "      <td>4305.555556</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Lingadheeranahalli</td>\n",
       "      <td>3 BHK</td>\n",
       "      <td>1521.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>95.00</td>\n",
       "      <td>3</td>\n",
       "      <td>6245.890861</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Kothanur</td>\n",
       "      <td>2 BHK</td>\n",
       "      <td>1200.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>51.00</td>\n",
       "      <td>2</td>\n",
       "      <td>4250.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>Whitefield</td>\n",
       "      <td>2 BHK</td>\n",
       "      <td>1170.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>38.00</td>\n",
       "      <td>2</td>\n",
       "      <td>3247.863248</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>Old Airport Road</td>\n",
       "      <td>4 BHK</td>\n",
       "      <td>2732.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>204.00</td>\n",
       "      <td>4</td>\n",
       "      <td>7467.057101</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>Rajaji Nagar</td>\n",
       "      <td>4 BHK</td>\n",
       "      <td>3300.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>600.00</td>\n",
       "      <td>4</td>\n",
       "      <td>18181.818182</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>Marathahalli</td>\n",
       "      <td>3 BHK</td>\n",
       "      <td>1310.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>63.25</td>\n",
       "      <td>3</td>\n",
       "      <td>4828.244275</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>other</td>\n",
       "      <td>6 Bedroom</td>\n",
       "      <td>1020.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>370.00</td>\n",
       "      <td>6</td>\n",
       "      <td>36274.509804</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   location       size  total_sqft  bath   price  bhk  \\\n",
       "0  Electronic City Phase II      2 BHK      1056.0   2.0   39.07    2   \n",
       "1          Chikka Tirupathi  4 Bedroom      2600.0   5.0  120.00    4   \n",
       "2               Uttarahalli      3 BHK      1440.0   2.0   62.00    3   \n",
       "3        Lingadheeranahalli      3 BHK      1521.0   3.0   95.00    3   \n",
       "4                  Kothanur      2 BHK      1200.0   2.0   51.00    2   \n",
       "5                Whitefield      2 BHK      1170.0   2.0   38.00    2   \n",
       "6          Old Airport Road      4 BHK      2732.0   4.0  204.00    4   \n",
       "7              Rajaji Nagar      4 BHK      3300.0   4.0  600.00    4   \n",
       "8              Marathahalli      3 BHK      1310.0   3.0   63.25    3   \n",
       "9                     other  6 Bedroom      1020.0   6.0  370.00    6   \n",
       "\n",
       "   price_per_sqft  \n",
       "0     3699.810606  \n",
       "1     4615.384615  \n",
       "2     4305.555556  \n",
       "3     6245.890861  \n",
       "4     4250.000000  \n",
       "5     3247.863248  \n",
       "6     7467.057101  \n",
       "7    18181.818182  \n",
       "8     4828.244275  \n",
       "9    36274.509804  "
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df5.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "8bc27536",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>location</th>\n",
       "      <th>size</th>\n",
       "      <th>total_sqft</th>\n",
       "      <th>bath</th>\n",
       "      <th>price</th>\n",
       "      <th>bhk</th>\n",
       "      <th>price_per_sqft</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>other</td>\n",
       "      <td>6 Bedroom</td>\n",
       "      <td>1020.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>370.0</td>\n",
       "      <td>6</td>\n",
       "      <td>36274.509804</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>45</th>\n",
       "      <td>HSR Layout</td>\n",
       "      <td>8 Bedroom</td>\n",
       "      <td>600.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>200.0</td>\n",
       "      <td>8</td>\n",
       "      <td>33333.333333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>58</th>\n",
       "      <td>Murugeshpalya</td>\n",
       "      <td>6 Bedroom</td>\n",
       "      <td>1407.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>150.0</td>\n",
       "      <td>6</td>\n",
       "      <td>10660.980810</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>68</th>\n",
       "      <td>Devarachikkanahalli</td>\n",
       "      <td>8 Bedroom</td>\n",
       "      <td>1350.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>85.0</td>\n",
       "      <td>8</td>\n",
       "      <td>6296.296296</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>70</th>\n",
       "      <td>other</td>\n",
       "      <td>3 Bedroom</td>\n",
       "      <td>500.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>100.0</td>\n",
       "      <td>3</td>\n",
       "      <td>20000.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "               location       size  total_sqft  bath  price  bhk  \\\n",
       "9                 other  6 Bedroom      1020.0   6.0  370.0    6   \n",
       "45           HSR Layout  8 Bedroom       600.0   9.0  200.0    8   \n",
       "58        Murugeshpalya  6 Bedroom      1407.0   4.0  150.0    6   \n",
       "68  Devarachikkanahalli  8 Bedroom      1350.0   7.0   85.0    8   \n",
       "70                other  3 Bedroom       500.0   3.0  100.0    3   \n",
       "\n",
       "    price_per_sqft  \n",
       "9     36274.509804  \n",
       "45    33333.333333  \n",
       "58    10660.980810  \n",
       "68     6296.296296  \n",
       "70    20000.000000  "
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df5[df5.total_sqft/df5.bhk<300].head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "091e3fda",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(13200, 7)"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df5.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "458efc85",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(12456, 7)"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df6 = df5[~(df5.total_sqft/df5.bhk<300)]\n",
    "df6.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "d3da79d6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count     12456.000000\n",
       "mean       6308.502826\n",
       "std        4168.127339\n",
       "min         267.829813\n",
       "25%        4210.526316\n",
       "50%        5294.117647\n",
       "75%        6916.666667\n",
       "max      176470.588235\n",
       "Name: price_per_sqft, dtype: float64"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df6.price_per_sqft.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "id": "fb2efbc6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(10242, 7)"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def remove_pps_outliers(df):\n",
    "    df_out = pd.DataFrame()\n",
    "    for key, subdf in df.groupby('location'):\n",
    "        m = np.mean(subdf.price_per_sqft)\n",
    "        st = np.std(subdf.price_per_sqft)\n",
    "        reduced_df = subdf[(subdf.price_per_sqft>(m-st)) & (subdf.price_per_sqft<=(m+st))]\n",
    "        df_out = pd.concat([df_out,reduced_df],ignore_index=True)\n",
    "    return df_out\n",
    "df7 = remove_pps_outliers(df6)\n",
    "df7.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "id": "c5bba9cf",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABNYAAANVCAYAAAC09nNHAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB4KklEQVR4nOzdeXTddZ0//udNk5RwQ8LaTToVBUexIAjzFWip7MuIFOoMKuOCy+8L04JA6ajFBXChgNiqR1tcGHD94jhQkFEQFEEKMoOAIsigOGxKF5WakEto2uT+/sg0NHRLbrPn8TjnnnyW9+eT16d8yMl55r0UyuVyOQAAAABAr1QNdgEAAAAAMBwJ1gAAAACgAoI1AAAAAKiAYA0AAAAAKiBYAwAAAIAKCNYAAAAAoAKCNQAAAACogGANAAAAACogWAMAAACACgjWAAD6wNVXX51CodD1qa6uzsSJE/O2t70tv/vd7yq+78tf/vKcdtppfXLtE088kUKhkKuvvnqL161vVygUcs0112x0/sILL0yhUMif//zniuoCABgpqge7AACAkeSqq67Kq1/96rzwwgu566678ulPfzo//elP89///d/Zaaeden2/pUuXpqGhoaJaXnrtxIkT8/Of/zyvfOUre3yPj3zkI3nLW96SmpqaimoAABjJ9FgDAOhDU6dOzUEHHZTDDjssH/nIR/LhD384q1atyvXXX1/R/fbff/9eBWFbunbs2LE56KCDsttuu/Xo+uOPPz7/8z//kyuuuKKi7z+Ynn/++cEuAQAYBQRrAAD96MADD0ySrFy5suvYCy+8kPPOOy/77bdfGhsbs/POO+fggw/ODTfcsNH1Lx3OuS3X9nQo6HpHHHFEjj322Hzyk5/Mc889t8W2t956a2bOnJndd9892223Xfbcc8+cfvrpmxwuesMNN2TffffN2LFj84pXvCKf//znu4aXbuhLX/pSZsyYkXHjxqVYLGafffbJZZddlrVr13Zrd9hhh2Xq1Kn52c9+lkMOOSTbb7993vve9/boGQEAtoWhoAAA/ejxxx9PkrzqVa/qOrZmzZo8++yzmTdvXl72spelra0tP/7xjzNr1qxcddVVede73rXZ+23LtZW49NJLs//+++czn/lMPvGJT2y23e9///scfPDBef/735/GxsY88cQTWbhwYaZPn55f//rXXUNJb7755syaNSszZszId7/73axbty6XX355t+Bxw3ueeuqp2WOPPVJbW5tf/epX+fSnP53//u//zr/+6792a7t8+fK84x3vyAc/+MFcfPHFqary92MAoP8J1gAA+lB7e3vWrVvXNcfapz71qcyYMSMnnnhiV5vGxsZcddVV3a458sgjs3r16nzuc5/bYji2LddW4nWve11OPfXULFy4MLNnz86ECRM22e6MM87o2i6XyznkkENy2GGHZcqUKbnpppu6nv/jH/94Xvayl+VHP/pRamtrkyTHHXdcXv7yl290z4ULF3Ztd3R05NBDD80uu+yS97znPfnsZz/bbc66Z599Nt/73vdyxBFH9MVjAwD0iD/lAQD0oYMOOig1NTXZYYcdctxxx2WnnXbKDTfckOrq7n/P/N73vpdp06alvr4+1dXVqampyZVXXplHHnlkq99jW66txKc+9amsXbs2F1100WbbrFq1KmeccUYmT57cVdOUKVOSpKuuUqmUX/ziFznppJO6QrUkqa+vz5vf/OaN7vnAAw/kxBNPzC677JIxY8akpqYm73rXu9Le3p7f/va33drutNNOQjUAYMAJ1gAA+tA3vvGN3Hvvvbntttty+umn55FHHsnb3/72bm2uu+66nHLKKXnZy16Wb33rW/n5z3+ee++9N+9973vzwgsvbPH+23JtpV7+8pdn9uzZ+drXvpbf/e53G53v6OjIMccck+uuuy4f/OAH85Of/CT/9V//lXvuuSdJ0tramiRZvXp1yuVyxo8fv9E9XnrsqaeeyqGHHpo//vGP+fznP58777wz9957b770pS91u+d6EydO7JNnBQDoDUNBAQD60Gte85quBQsOP/zwtLe352tf+1r+/d//Pf/wD/+QJPnWt76VPfbYI9/97ne7Tdi/Zs2ard5/W67dFh/96Efzr//6rzn//PPz2te+ttu5hx56KL/61a9y9dVX593vfnfX8ccee6xbu5122imFQmGT86mtWLGi2/7111+fUqmU6667rqvnW5L88pe/3GR9L134AABgIOixBgDQjy677LLstNNO+fjHP56Ojo4knSFQbW1ttzBoxYoVm1zZ86W25dptscsuu+RDH/pQ/v3f/z3/9V//tVFNSTJ27Nhux7/85S932y8WiznwwANz/fXXp62tret4S0tL/uM//mOr9yyXy/nqV7+67Q8DANBHBGsAAP1op512yvz58/PII4/kO9/5TpLkhBNOyKOPPprZs2fntttuy9e//vVMnz69R8MZt+XabXXOOedk0qRJuemmm7odf/WrX51XvvKV+fCHP5z/9//+X370ox/lzDPPzPe///2N7vGJT3wif/zjH3Psscfm+uuvz7XXXpujjjoq9fX13cLCo48+OrW1tXn729+em266KUuXLs2xxx6b1atX9/tzAgD0lGANAKCfnXXWWfmbv/mbfOITn0h7e3ve85735JJLLslNN92Uv//7v8+ll16aD3/4wzn11FM3ef2GgdO2XLuttt9++1x44YUbHa+pqcmNN96YV73qVTn99NPz9re/PatWrcqPf/zjjdoed9xxufbaa/OXv/wlb33rWzN37tycfPLJmTlzZnbccceudq9+9atz7bXXZvXq1Zk1a1bOOuus7LfffvnCF77QZ88DALCtCuVyuTzYRQAAsGk777xz3vve9+byyy8f0GsH0tq1a7PffvvlZS97WW655ZbBLgcAoMcsXgAAMAQ9+OCD+eEPf5jVq1fn4IMPHrBrB8L73ve+HH300Zk4cWJWrFiRK664Io888kg+//nPD3ZpAAC9IlgDABiCzj777Pz3f/935s2bl1mzZg3YtQPhueeey7x58/KnP/0pNTU1ef3rX58f/vCHOeqoowa7NACAXjEUFAAAAAAqYPECAAAAAKiAYA0AAAAAKiBYAwAAAIAKWLwgSUdHR5555pnssMMOKRQKg10OAAAAAIOkXC7nueeey6RJk1JVteU+aYK1JM8880wmT5482GUAAAAAMEQ8/fTT2X333bfYRrCWZIcddkjS+Q/W0NAwyNUAAAAAMFiam5szefLkrrxoSwRrSdfwz4aGBsEaAAAAAD2aLsziBQAAAABQAcEaAAAAAFRAsAYAAAAAFTDHWg+Vy+WsW7cu7e3tg13KiDVmzJhUV1f3aAwzAAAAwGATrPVAW1tbli9fnueff36wSxnxtt9++0ycODG1tbWDXQoAAADAFgnWtqKjoyOPP/54xowZk0mTJqW2tlaPqn5QLpfT1taWP/3pT3n88cez1157parKSGUAAABg6BKsbUVbW1s6OjoyefLkbL/99oNdzohWV1eXmpqaPPnkk2lra8t222032CUBAAAAbJYuQT2k99TA8O8MAAAADBdSDAAAAACogGANAAAAACogWAMAAACACgjWBlBra7JyZefX/rZgwYL83d/9XXbYYYeMGzcuJ510Uh599NEtXnP11VenUCh0ferr63PAAQfkuuuu69busMMOyznnnLPJ63fcccfN7ifJI488kt133z2zZs3KmjVrKn08AAAAgEEnWBsAy5Yls2Yl9fXJhAmdX2fNSu66q/++5x133JE5c+bknnvuya233pp169blmGOOSalU2uJ1DQ0NWb58eZYvX54HHnggxx57bE455ZSthnI9ce+99+bQQw/Nsccem+9973sZO3bsNt8TAAAAYLAI1vrZkiXJjBnJjTcmHR2dxzo6OvcPPTS54or++b4333xzTjvttLz2ta/N6173ulx11VV56qmnct99923xukKhkAkTJmTChAnZa6+98qlPfSpVVVV58MEHt6me2267LUcccUTe85735Morr8yYMWO26X4AAAAAg02w1o+WLUvmzEnK5WTduu7n1q3rPD57dv/2XFuvqakpSbLzzjv3+Jr29vZ8/etfT5K8/vWvr/h7L126NG9605ty/vnn5zOf+UzF9wEAAAAYSqoHu4CRbOHCZMyYjUO1DY0ZkyxalEyb1n91lMvlzJ07N9OnT8/UqVO32LapqSn19fVJktbW1tTU1OQrX/lKXvnKV3Zrt3jx4nzta1/rdmzdunXZbrvtuh1raWnJP/7jP+b888/P/Pnz++BpAAAAAIYGwVo/aW1NbrjhxeGfm7NuXbJ0aWf7urr+qeXMM8/Mgw8+mGXLlm217Q477JD7778/SfL888/nxz/+cU4//fTssssuefOb39zV7p/+6Z/ykY98pNu11113XS6++OJux+rq6jJ9+vR89atfzdvf/va85jWv6YMnAgAAABh8grV+0ty89VBtvY6Ozvb9EaydddZZ+f73v5+f/exn2X333bfavqqqKnvuuWfX/r777ptbbrkll156abdgrbGxsVu7JBk3btxG9xszZkyuv/76vOUtb8nhhx+e2267LXvvvfc2PBEAAADA0GCOtX7S0JBU9fBft6qqs31fKpfLOfPMM3Pdddfltttuyx577FHxvcaMGZPW1taKrx87dmyuu+66/J//839y+OGH56GHHqr4XgAAAABDhWCtn9TVJTNnJtVb6RNYXZ2cfHLf91abM2dOvvWtb+U73/lOdthhh6xYsSIrVqzYakBWLpe72j7++OP5yle+kh/96EeZOXPmNtVTW1uba6+9NoccckiOOOKI/PrXv96m+wEAAAAMNsFaP5o7N2lv33Kb9vbk3HP7/nsvWbIkTU1NOeywwzJx4sSuz3e/+90tXtfc3NzV9jWveU0++9nP5hOf+MRG86lVoqamJv/2b/+WGTNm5IgjjsiDDz64zfcEAAAAGCyFcrlcHuwiBltzc3MaGxvT1NSUhpeMyXzhhRfy+OOPZ4899thoxcueuOKKZPbsjVcHra7uDNUWL07OOGNbn2Dk2NZ/bwAAAIBtsaWc6KX0WOtnZ5yR3Hln57DQ9XOuVVV17t95p1ANAAAAYLiyKugAmDat89Pa2rn6Z0ND/6wACgAAAMDAEawNoLo6gRoAAADASGEoKAAAAABUQLAGAAAAABUQrAEAAACMEqW2UgoXFVK4qJBSW2mwyxn2BGsAAAAAUAHBGgAAAABUwKqgAAAAACPYhkM+S2s3vZ0kxdrigNU0UgjWAAAAAEaw+gX1mzw+/vLx3fbLF5QHopwRxVDQEWrJkiXZd99909DQkIaGhhx88MG56aabtnjN1VdfnUKh0PWpr6/PAQcckOuuu65bu8MOOyznnHPOJq/fcccdN7ufJI888kh23333zJo1K2vWrKn08QAAAAAGnR5rA6TUVupKiFvmt/R798rdd989l1xySfbcc88kyde//vXMnDkzDzzwQF772tdu9rqGhoY8+uijSZLnnnsuV111VU455ZQ8/PDD+du//dttqunee+/N8ccfn5kzZ+YrX/lKxowZs033AwAAALauZX5L13Zpbamrp9rKeStTrDH8c1vosTZCvfnNb87f//3f51WvelVe9apX5dOf/nTq6+tzzz33bPG6QqGQCRMmZMKECdlrr73yqU99KlVVVXnwwQe3qZ7bbrstRxxxRN7znvfkyiuvFKoBAADAACnWFl/8bBCkFWuK3c7Re4K1UaC9vT3XXHNNSqVSDj744F5d9/Wvfz1J8vrXv77i77906dK86U1vyvnnn5/PfOYzFd8HAAAAYCgxFLQfDfaqG7/+9a9z8MEH54UXXkh9fX2WLl2avffee4vXNDU1pb6+c8hqa2trampq8pWvfCWvfOUru7VbvHhxvva1r3U7tm7dumy33XbdjrW0tOQf//Efc/7552f+/Pl98FQAAAAAQ4NgrR8N9qobf/u3f5tf/vKX+etf/5prr7027373u3PHHXdsMVzbYYcdcv/99ydJnn/++fz4xz/O6aefnl122SVvfvObu9r90z/9Uz7ykY90u/a6667LxRdf3O1YXV1dpk+fnq9+9at5+9vfnte85jV9+IQAAABAbxRri1b/7EOCtRGstra2a/GCAw88MPfee28+//nP58tf/vJmr6mqquq6Jkn23Xff3HLLLbn00ku7BWuNjY3d2iXJuHHjNrrfmDFjcv311+ctb3lLDj/88Nx2221b7TUHAAAAMBwI1vrRUFt1o1wuZ82aNb2+bsyYMWltba34+44dOzbXXXdd/uEf/iGHH354fvKTn2Tq1KkV3w8AAABgKBCs9aPNzZ22ftWN/nT++efn+OOPz+TJk/Pcc8/lmmuuye23356bb755i9eVy+WsWLEiSecca7feemt+9KMf5eMf//g21VNbW5trr702p5xySo444oj85Cc/yT777LNN9wQAAAAYTIK1EWrlypV55zvfmeXLl6exsTH77rtvbr755hx99NFbvK65uTkTJ05M0tnTbMqUKfnEJz6RD33oQ9tcU01NTf7t3/4tb3/727vCtX333Xeb7wsAAAAwGArlcnnUz1jX3NycxsbGNDU1paGhodu5F154IY8//nj22GOPjVa87I1SW6lrMYOW+S393mNtuOqrf28AAACASmwpJ3opPdYGiFU3AAAAAEaWqsEuAAAAAACGI8EaAAAAAFRAsAYAAAAAFRCs9ZA1HgaGf2cAAABguBCsbUVNTU2S5Pnnnx/kSkaH9f/O6//dAQAAAIYqq4JuxZgxY7Ljjjtm1apVSZLtt98+hUJhkKsaecrlcp5//vmsWrUqO+64Y8aMGTPYJQEAAABskWCtByZMmJAkXeEa/WfHHXfs+vcGAABg6Cu1lVK/oD5J0jK/JcXa4iBXBANHsNYDhUIhEydOzLhx47J27drBLmfEqqmp0VMNAAAAGDYEa70wZswYwQ8AAAAASQRrAAAAQC+V2kovbq/d9HYSw0IZ8QRrAAAAQK+sn1PtpcZfPr7bfvmC8kCUA4OmarALAAAAAIDhSI81AAAAoFda5rd0bZfWlrp6qq2ctzLFGsM/GT0EawAAAECvbG7utGJN0bxqjCqGggIAAABABQRrAAAAAFABQ0EBAACAihVri1b/ZNTSYw0AAAAAKiBYAwAAACpWaiulcFEhhYsK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LF++vOvzwx/+sNs9zjnnnCxdujTXXHNNli1blpaWlpxwwglpb28f6McBAAAAYBSpHsxv/uY3v7nb/qc//eksWbIk99xzT1772tcmScaOHZsJEyZs8vqmpqZceeWV+eY3v5mjjjoqSfKtb30rkydPzo9//OMce+yx/fsAAAAAANtgwyGfpbWb3k6SYm1xwGqi5wY1WNtQe3t7vve976VUKuXggw/uOn777bdn3Lhx2XHHHfPGN74xn/70pzNu3LgkyX333Ze1a9fmmGOO6Wo/adKkTJ06NXffffdmg7U1a9ZkzZo1XfvNzc399FQAAAAAm1e/oH6Tx8dfPr7bfvmC8kCUQy8N+uIFv/71r1NfX5+xY8fmjDPOyNKlS7P33nsnSY4//vh8+9vfzm233ZbPfvazuffee3PEEUd0hWIrVqxIbW1tdtppp273HD9+fFasWLHZ77lgwYI0NjZ2fSZPntx/DwgAAADAiDToPdb+9m//Nr/85S/z17/+Nddee23e/e5354477sjee++dt771rV3tpk6dmgMPPDBTpkzJD37wg8yaNWuz9yyXyykUCps9P3/+/MydO7drv7m5WbgGAAAADLiW+S1d26W1pa6eaivnrUyxxvDPoW7Qg7Xa2trsueeeSZIDDzww9957bz7/+c/ny1/+8kZtJ06cmClTpuR3v/tdkmTChAlpa2vL6tWru/VaW7VqVQ455JDNfs+xY8dm7NixffwkAAAAAL2zubnTijVF86oNA4M+FPSlyuVyt/nPNvSXv/wlTz/9dCZOnJgkOeCAA1JTU5Nbb721q83y5cvz0EMPbTFYAwAAAIBtNag91s4///wcf/zxmTx5cp577rlcc801uf3223PzzTenpaUlF154Yd7ylrdk4sSJeeKJJ3L++edn1113zcknn5wkaWxszPve976cd9552WWXXbLzzjtn3rx52WeffbpWCQUAAACA/jCowdrKlSvzzne+M8uXL09jY2P23Xff3HzzzTn66KPT2tqaX//61/nGN76Rv/71r5k4cWIOP/zwfPe7380OO+zQdY9Fixaluro6p5xySlpbW3PkkUfm6quvzpgxYwbxyQAAAAB6p1hbtPrnMFMol8uj/r9Yc3NzGhsb09TUlIaGhsEuBwAAAIBB0pucaMjNsQYAAAAAw4FgDQAAAAAqIFgDAAAAgAoI1gAAAACgAoI1AAAAAKiAYA0AAAAAKiBYAwAAAIAKCNYAAAAAoAKCNQAAAACogGANAAAAACogWAMAAACACgjWAAAAYJQqtZVSuKiQwkWFlNpKg13OqOe/x/AjWAMAAACACgjWAAAAAKAC1YNdAAAAADBwNhxiWFq76e0kKdYWB6ym0cx/j+GtUC6Xy4NdxGBrbm5OY2Njmpqa0tDQMNjlAAAAQL8pXFToUbvyBaM+LhgQ/nsMPb3JiQwFBQAAAIAKGAoKAAAAo0jL/Jau7dLaUsZfPj5JsnLeyhRrDDccaP57DG+CNQAAABhFNjdXV7GmaB6vQeC/x/BmKCgAAAAAVECwBgAAAAAVMBQUAAAARqlibdFqk0OI/x7Djx5rAAAAAFABwRoAAAAAVECwBgAAAAAVEKwBAAAAvVJqK6VwUSGFiwoptZUGuxwYNII1AAAAAKiAYA0AAAAAKlA92AUAAAAAQ9+GQz5Laze9nSTF2uKA1QSDTbAGAAAAbFX9gvpNHh9/+fhu++ULygNRDgwJhoICAAAAQAX0WAMAAAC2qmV+S9d2aW2pq6faynkrU6wx/JPRSbAGAAAAbNXm5k4r1hTNq8aoZSgoAAAAAFRAsAYAAAAAFTAUFAAAAOiVYm1xWK/+WWorda1y2jK/xVBWKqbHGgAAAABUQLAGAAAAABUwFBQAAAAY8UptpRe31256O9n86qewKYI1AAAAYMRbP6faS42/fHy3/eE8dxwDz1BQAAAAAKiAHmsAAADAiNcyv6Vru7S21NVTbeW8lSnWGP5JZQRrAAAAwIi3ubnTijVF86pRMUNBAQAAAKACgjUAAAAAqIChoAAAAMCoUqwtWv2TPqHHGgAAAABUQLAGAAAAABUQrAEAAABABQRrAAAAAFABwRoAAAAAVECwBgAAAAAVEKwBAAAAQAUEawAAAABQAcEaAAAAAFRAsAYAAAAAFRCsAQAAAEAFBGsAAAAAUAHBGgAAAIxSpbZSChcVUriokFJbabDLgWFHsAYAAAAAFRCsAQAAAEAFqge7AAAAAGDgbDjks7R209tJUqwtDlhNMFwJ1gAAAGAUqV9Qv8nj4y8f322/fEF5IMqBYc1QUAAAAACogB5rAAAAMIq0zG/p2i6tLXX1VFs5b2WKNYZ/Qm8I1gAAAGAU2dzcacWaonnVoJcMBQUAAACACgjWAAAAAKAChoICAADAKFWsLVr9E7aBHmsAAAAAUAHBGgAAAABUQLAGAAAAABUQrAEAAABABQRrAAAAAFABwRoAAAAAVECwBgAAAAAVEKwBAAAAQAWqe9O4qakpS5cuzZ133pknnngizz//fHbbbbfsv//+OfbYY3PIIYf0V50AAAAAMKT0qMfa8uXL8//9f/9fJk6cmE984hMplUrZb7/9cuSRR2b33XfPT3/60xx99NHZe++9893vfre/awYAAACAQdejHmuve93r8q53vSv/9V//lalTp26yTWtra66//vosXLgwTz/9dObNm9enhQIAAADAUFIol8vlrTX605/+lN12263HN+1t+8HW3NycxsbGNDU1paGhYbDLAQAAAGCQ9CYn6tFQ0N6GZMMpVAMAAACASvR6VdCvf/3r+cEPftC1/8EPfjA77rhjDjnkkDz55JN9WhwAAAAADFW9DtYuvvji1NXVJUl+/vOf54tf/GIuu+yy7Lrrrjn33HP7vEAAAAAAGIp6tHjBhp5++unsueeeSZLrr78+//AP/5D/+3//b6ZNm5bDDjusr+sDAAAAgCGp1z3W6uvr85e//CVJcsstt+Soo45Kkmy33XZpbW3t2+oAAAAAYIjqdY+1o48+Ou9///uz//7757e//W3e9KY3JUkefvjhvPzlL+/r+gAAAABgSOp1j7UvfelLOfjgg/OnP/0p1157bXbZZZckyX333Ze3v/3tfV4gAAAAAAxFhXK5XB7sIgZbc3NzGhsb09TUlIaGhsEuBwAAAIBB0pucqNc91pLkzjvvzDve8Y4ccsgh+eMf/5gk+eY3v5lly5ZVcjsAAAAAGHZ6Haxde+21OfbYY1NXV5f7778/a9asSZI899xzufjii/u8QAAAAAAYinodrH3qU5/KFVdcka9+9aupqanpOn7IIYfk/vvv79PiAAAAAGCo6nWw9uijj2bGjBkbHW9oaMhf//rXvqgJAAAAAIa8XgdrEydOzGOPPbbR8WXLluUVr3hFnxQFAAAAAENdr4O1008/PWeffXb+8z//M4VCIc8880y+/e1vZ968eZk9e3Z/1AgAAAAAQ051by/44Ac/mKamphx++OF54YUXMmPGjIwdOzbz5s3LmWee2R81AgAAAMCQUyiXy+VKLnz++efzm9/8Jh0dHdl7771TX1/f17UNmObm5jQ2NqapqSkNDQ2DXQ4AAAAAg6Q3OVGvh4Ku98wzz+Qvf/lL9tlnn9TX16fCfA4AAAAAhqVeB2t/+ctfcuSRR+ZVr3pV/v7v/z7Lly9Pkrz//e/Peeed1+cFAgAAAMBQ1Otg7dxzz01NTU2eeuqpbL/99l3H3/rWt+bmm2/u0+IAAAAAYKjq9eIFt9xyS370ox9l991373Z8r732ypNPPtlnhQEAAADAUNbrHmulUqlbT7X1/vznP2fs2LF9UhQAAAAADHW9DtZmzJiRb3zjG137hUIhHR0d+cxnPpPDDz+8T4sDAAAAgKGq10NBP/OZz+Swww7LL37xi7S1teWDH/xgHn744Tz77LO56667+qNGAAAAABhyet1jbe+9986DDz6Y//N//k+OPvrolEqlzJo1Kw888EBe+cpX9keNAAAAADDkFMrlcnmwixhszc3NaWxsTFNTUxoaGga7HAAAAAAGSW9yol73WEuS1atX5/LLL8/73ve+vP/9789nP/vZPPvss72+z5IlS7LvvvumoaEhDQ0NOfjgg3PTTTd1nS+Xy7nwwgszadKk1NXV5bDDDsvDDz/c7R5r1qzJWWedlV133TXFYjEnnnhi/vCHP1TyWAAAAADQY70O1u64447sscce+cIXvpDVq1fn2WefzRe+8IXsscceueOOO3p1r9133z2XXHJJfvGLX+QXv/hFjjjiiMycObMrPLvsssuycOHCfPGLX8y9996bCRMm5Oijj85zzz3XdY9zzjknS5cuzTXXXJNly5alpaUlJ5xwQtrb23v7aAAAAADQY70eCjp16tQccsghWbJkScaMGZMkaW9vz+zZs3PXXXfloYce2qaCdt5553zmM5/Je9/73kyaNCnnnHNOPvShDyXp7J02fvz4XHrppTn99NPT1NSU3XbbLd/85jfz1re+NUnyzDPPZPLkyfnhD3+YY489tkff01BQAAAAAJJ+Hgr6+9//Puedd15XqJYkY8aMydy5c/P73/++99X+r/b29lxzzTUplUo5+OCD8/jjj2fFihU55phjutqMHTs2b3zjG3P33XcnSe67776sXbu2W5tJkyZl6tSpXW02Zc2aNWlubu72AQAAAIDe6HWw9vrXvz6PPPLIRscfeeSR7Lfffr0u4Ne//nXq6+szduzYnHHGGVm6dGn23nvvrFixIkkyfvz4bu3Hjx/fdW7FihWpra3NTjvttNk2m7JgwYI0NjZ2fSZPntzrugEAAAAY3ap7e8EHPvCBnH322Xnsscdy0EEHJUnuueeefOlLX8oll1ySBx98sKvtvvvuu9X7/e3f/m1++ctf5q9//WuuvfbavPvd7+42V1uhUOjWvlwub3TspbbWZv78+Zk7d27XfnNzs3ANAAAAgF7pdbD29re/PUnywQ9+cJPnCoVCV7DVkwUEamtrs+eeeyZJDjzwwNx77735/Oc/3zWv2ooVKzJx4sSu9qtWrerqxTZhwoS0tbVl9erV3XqtrVq1Kocccshmv+fYsWMzduzYHjwtAAAAAGxar4O1xx9/vD/q6FIul7NmzZrssccemTBhQm699dbsv//+SZK2trbccccdufTSS5MkBxxwQGpqanLrrbfmlFNOSZIsX748Dz30UC677LJ+rRMAAACA0a3XwdqUKVP67Juff/75Of744zN58uQ899xzueaaa3L77bfn5ptvTqFQyDnnnJOLL744e+21V/baa69cfPHF2X777XPqqacmSRobG/O+970v5513XnbZZZfsvPPOmTdvXvbZZ58cddRRfVYnAAAAALxUr4O1b3zjG1s8/653vavH91q5cmXe+c53Zvny5WlsbMy+++6bm2++OUcffXSSzuGmra2tmT17dlavXp03vOENueWWW7LDDjt03WPRokWprq7OKaecktbW1hx55JG5+uqru61aCgAAAAB9rVAul8u9ueClK3CuXbs2zz//fGpra7P99tvn2Wef7dMCB0Jzc3MaGxvT1NSUhoaGwS4HAAAAgEHSm5yoqrc3X716dbdPS0tLHn300UyfPj3/7//9v4qLBgAAAIDhpNfB2qbstddeueSSS3L22Wf3xe0AAAAAYMjrk2AtScaMGZNnnnmmr24HAAAAAENarxcv+P73v99tv1wuZ/ny5fniF7+YadOm9VlhAAAAADCU9TpYO+mkk7rtFwqF7LbbbjniiCPy2c9+tq/qAgAAAIAhrdfBWkdHR3/UAQAAAADDSp/NsXbddddl33337avbAQAAAMCQ1qtg7atf/Wr+8R//MaeeemruueeeJMltt92W/fffP+94xzty8MEH90uRAAAAADDU9DhYu/zyyzNnzpw8/vjjueGGG3LkkUfm4osvzimnnJKTTjopTz31VL785S/3Z60AAAAAMGT0eI61K6+8MldccUXe+9735vbbb88R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T/X03Rqqv88L1thIqVTK6173unzxi1/c6Nzzzz+f+++/Px/72Mdy//3357rrrstvf/vbnHjiid3anXPOOVm6dGmuueaaLFu2LC0tLTnhhBPS3t7e1ebUU0/NL3/5y9x88825+eab88tf/jLvfOc7+/35GDxberc2dP311+c///M/M2nSpI3OebfYlK29W7///e8zffr0vPrVr87tt9+eX/3qV/nYxz6W7bbbrquNd4tN2dq7de655+bmm2/Ot771rTzyyCM599xzc9ZZZ+WGG27oauPdYlPuuOOOzJkzJ/fcc09uvfXWrFu3Lsccc0xKpVJXm8suuywLFy7MF7/4xdx7772ZMGFCjj766Dz33HNdbbxfvNTW3i2/z1OpnvzcWs/v8/RGT96tIf37fBm2IEl56dKlW2zzX//1X+Uk5SeffLJcLpfLf/3rX8s1NTXla665pqvNH//4x3JVVVX55ptvLpfL5fJvfvObcpLyPffc09Xm5z//eTlJ+b//+7/7/kEYcjb3bv3hD38ov+xlLys/9NBD5SlTppQXLVrUdc67RU9s6t1661vfWn7HO96x2Wu8W/TEpt6t1772teVPfOIT3Y69/vWvL3/0ox8tl8veLXpu1apV5STlO+64o1wul8sdHR3lCRMmlC+55JKuNi+88EK5sbGxfMUVV5TLZe8XPfPSd2tT/D5PJTb3bvl9nm21qXdrKP8+r8ca26ypqSmFQiE77rhjkuS+++7L2rVrc8wxx3S1mTRpUqZOnZq77747SfLzn/88jY2NecMb3tDV5qCDDkpjY2NXG0afjo6OvPOd78y//Mu/5LWvfe1G571bVKKjoyM/+MEP8qpXvSrHHntsxo0blze84Q3dhvR5t6jU9OnT8/3vfz9//OMfUy6X89Of/jS//e1vc+yxxybxbtFzTU1NSZKdd945SfL4449nxYoV3d6dsWPH5o1vfGPXe+H9oide+m5tro3f5+mtTb1bfp+nL7z03Rrqv88L1tgmL7zwQj784Q/n1FNPTUNDQ5JkxYoVqa2tzU477dSt7fjx47NixYquNuPGjdvofuPGjetqw+hz6aWXprq6Oh/4wAc2ed67RSVWrVqVlpaWXHLJJTnuuONyyy235OSTT86sWbNyxx13JPFuUbkvfOEL2XvvvbP77runtrY2xx13XBYvXpzp06cn8W7RM+VyOXPnzs306dMzderUJOn6bz9+/PhubV/67ni/2JJNvVsv5fd5KrG5d8vv82yrTb1bQ/33+eqKr2TUW7t2bd72trelo6Mjixcv3mr7crmcQqHQtb/h9ubaMHrcd999+fznP5/777+/1++Ad4st6ejoSJLMnDkz5557bpJkv/32y913350rrrgib3zjGzd7rXeLrfnCF76Qe+65J9///vczZcqU/OxnP8vs2bMzceLEHHXUUZu9zrvFhs4888w8+OCDWbZs2UbnXvoO9OS98H6x3v/f3v3HVFX/fwB/XgHl5oWrAnp1IKAkcUmdgCU4QK2EXSUQKiw0yILIqdiMLGaWZuWmoM7GpHa9ptmCGro0NgaIgKmYCOYPRFPQahcxQkJR+XHf3z8+eeaFy6+jX3XwfGxn87zP+7zP+33Oa/je654f3cUWwPk8yWcptjifpwfBUmw97vN53rFGsrS2tuKVV15BdXU18vLypF+3AECj0aClpQUNDQ1m+9TV1Um/umo0Gly9erVTu9euXev0yywNDCUlJairq8PYsWNhbW0Na2trXL58GStWrICbmxsAxhbJ4+joCGtra2i1WrNyLy8v6StCjC2S49atW0hJSUFaWhrCwsIwadIkLFmyBNHR0di4cSMAxhb1bOnSpfjpp59QWFgIZ2dnqVyj0QBAp1/QO8YO44u60lVs3cX5PMnVVWxxPk/3q6vYetzn80ysUZ/d/U/4woULyM/Ph4ODg9l2X19f2NjYIC8vTyozGo04ffo0AgICAAD+/v5obGzEsWPHpDqlpaVobGyU6tDAsnDhQvz222+oqKiQljFjxiA5ORm5ubkAGFskz+DBgzF16tROn+w+f/48XF1dATC2SJ7W1la0trZi0CDz6ZSVlZX0yypji7oihMCSJUuQnZ2NAwcOwN3d3Wy7u7s7NBqNWey0tLSgqKhIigvGF1nSU2wBnM+TPD3FFufzJFdPsfXYz+dlf/aA+q2mpiZRXl4uysvLBQCRlpYmysvLxeXLl0Vra6t48cUXhbOzs6ioqBBGo1Fa7ty5I7WRmJgonJ2dRX5+vjhx4oSYNWuWmDx5smhra5PqhIaGikmTJokjR46II0eOiIkTJ4q5c+c+iiHTQ9JdbFnS8StCQjC2yLKeYis7O1vY2NiIr776Sly4cEFs3bpVWFlZiZKSEqkNxhZZ0lNsBQcHC29vb1FYWCguXbokDAaDsLW1Fenp6VIbjC2y5J133hFqtVocPHjQbD7V3Nws1Vm/fr1Qq9UiOztbnDp1Srz66qti9OjR4t9//5XqML6oo55ii/N5kqs3f7c64nyeeqM3sfU4z+eZWKNOCgsLBYBOS2xsrKiurra4DYAoLCyU2rh165ZYsmSJGDFihFAqlWLu3LniypUrZsepr68XMTExws7OTtjZ2YmYmBjR0NDwcAdLD1V3sWWJpf+IGVtkSW9iS6/XCw8PD2FraysmT54s9u7da9YGY4ss6Sm2jEajiIuLE2PGjBG2trbC09NTpKamCpPJJLXB2CJLuppPGQwGqY7JZBIff/yx0Gg0YsiQISIoKEicOnXKrB3GF3XUU2xxPk9y9ebvVkecz1Nv9Da2Htf5vOK/QRAREREREREREVEf8B1rREREREREREREMjCxRkREREREREREJAMTa0RERERERERERDIwsUZERERERERERCQDE2tEREREREREREQyMLFGREREREREREQkAxNrREREREREREREMjCxRkREREREREREJAMTa0REREQPkJubGzZv3vyou0FEREREDwETa0RERNQvKRSKbpe4uLge99+7d+8D79fNmzexcuVKjBs3Dra2tnBycsKMGTOwf//+B36sh6WmpsbiOV6wYMEDO0Zfr0dCQgKsrKzw/fffP7A+EBEREXVk/ag7QERERPT/wWg0Sv/OzMzE6tWrUVVVJZUplcpH0S0kJibi2LFj+PLLL6HValFfX4/Dhw+jvr7+kfTnXi0tLRg8eLDs/fPz8+Ht7S2tP6pz3NzcjMzMTCQnJ0Ov12P+/Pnd1r/fcRMREdHAxTvWiIiIqF/SaDTSolaroVAozMq+++47jB8/HoMHD4anpyd27dol7evm5gYAmDdvHhQKhbR+8eJFhIeHY9SoUVCpVJg6dSry8/P71K99+/YhJSUFOp0Obm5u8PX1xdKlSxEbGyvVqaurQ1hYGJRKJdzd3bF7926zR0zv3iFWUVEh7XP9+nUoFAocPHgQANDe3o4333wT7u7uUCqV8PT0xJYtW8z6EhcXh4iICHzxxRcYM2YMJkyYAAD466+/EB0djeHDh8PBwQHh4eGoqanpcWwODg6dzjsANDY2IiEhASNHjoS9vT1mzZqFkydPdjovvr6+sLW1xbhx47BmzRq0tbUB6Pp6dOWH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\n",
      "text/plain": [
       "<Figure size 1500x1000 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "matplotlib.rcParams[\"figure.figsize\"] = (20,10)\n",
    "def plot_scatter_chart(df,location):\n",
    "    bhk2 = df[(df.location==location) & (df.bhk==2)]\n",
    "    bhk3 = df[(df.location==location) & (df.bhk==3)]\n",
    "    matplotlib.rcParams['figure.figsize'] = (15,10)\n",
    "    plt.scatter(bhk2.total_sqft,bhk2.price,color='blue',label='2 BHK', s=50)\n",
    "    plt.scatter(bhk3.total_sqft,bhk3.price,marker='+', color='green',label='3 BHK', s=50)\n",
    "    plt.xlabel(\"Total Square Feet Area\")\n",
    "    plt.ylabel(\"Price (Lakh Indian Rupees)\")\n",
    "    plt.title(location)\n",
    "    plt.legend()\n",
    "    \n",
    "plot_scatter_chart(df7,\"Rajaji Nagar\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "id": "013b9b86",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(7317, 7)"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def remove_bhk_outliers(df):\n",
    "    exclude_indices = np.array([])\n",
    "    for location, location_df in df.groupby('location'):\n",
    "        bhk_stats = {}\n",
    "        for bhk, bhk_df in location_df.groupby('bhk'):\n",
    "            bhk_stats[bhk] = {\n",
    "                'mean': np.mean(bhk_df.price_per_sqft),\n",
    "                'std': np.std(bhk_df.price_per_sqft),\n",
    "                'count': bhk_df.shape[0]\n",
    "            }\n",
    "        for bhk, bhk_df in location_df.groupby('bhk'):\n",
    "            stats = bhk_stats.get(bhk-1)\n",
    "            if stats and stats['count']>5:\n",
    "                exclude_indices = np.append(exclude_indices, bhk_df[bhk_df.price_per_sqft<(stats['mean'])].index.values)\n",
    "    return df.drop(exclude_indices,axis='index')\n",
    "df8 = remove_bhk_outliers(df7)\n",
    "# df8 = df7.copy()\n",
    "df8.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "id": "534f884f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABNYAAANVCAYAAAC09nNHAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB0xUlEQVR4nOzdeXxddZ0//tfNVkvahM1utlNRYRRbBMERaKnsy4gU6gwo44LLfOm0oFA6anFBXNjEVv1pi9uA6+A4tCCjIiCLFGVklUVG0WFTuqjUhITQtMn9/ZEhELolp9nzfD4e93HvOedzTt6nPdTrK5+lVC6XywEAAAAAeqRioAsAAAAAgKFIsAYAAAAABQjWAAAAAKAAwRoAAAAAFCBYAwAAAIACBGsAAAAAUIBgDQAAAAAKEKwBAAAAQAGCNQAAAAAoQLAGANALLrvsspRKpc5XVVVVJk6cmLe85S156KGHCl/3pS99aU455ZReOfeRRx5JqVTKZZddttXznm1XKpVy+eWXb3L84x//eEqlUv785z8XqgsAYLioGugCAACGk0svvTSvfOUr88wzz+TWW2/Npz/96dx44435n//5n+y00049vt6KFStSV1dXqJYXnjtx4sT84he/yMtf/vJuX+PDH/5w3vzmN6e6urpQDQAAw5keawAAvWjatGnZf//9c/DBB+fDH/5wPvShD2Xt2rW58sorC11vn3326VEQtrVzR40alf333z8vfvGLu3X+Mccck//93//NJZdcUujnD6Snn356oEsAAEYAwRoAQB/ab7/9kiRr1qzp3PfMM8/krLPOyt577536+vrsvPPOOeCAA3LVVVdtcv4Lh3Nuz7ndHQr6rEMPPTRHHXVUPvnJT+app57aatvrrrsus2fPzuTJk/OiF70or3jFK3LqqadudrjoVVddlb322iujRo3Ky172snz+85/vHF76fF/60pcya9asjBs3LrW1tZk+fXouuuiibNiwoUu7gw8+ONOmTcvPfvazHHjggdlhhx3y7ne/u1v3CACwPQwFBQDoQw8//HCSZI899ujct379+jz55JNZuHBhXvKSl6S1tTXXX3995syZk0svvTTveMc7tni97Tm3iAsvvDD77LNPPvOZz+QTn/jEFtv9/ve/zwEHHJD3vve9qa+vzyOPPJLFixdn5syZue+++zqHkl5zzTWZM2dOZs2ale9973vZuHFjLr744i7B4/OvefLJJ2e33XZLTU1NfvWrX+XTn/50/ud//if/9m//1qXtqlWr8ra3vS0f+MAHct5556Wiwu+PAYC+J1gDAOhFbW1t2bhxY+cca5/61Kcya9asHHfccZ1t6uvrc+mll3Y557DDDsu6devyuc99bqvh2PacW8RrXvOanHzyyVm8eHHmzZuXCRMmbLbd3LlzOz+Xy+UceOCBOfjggzN16tT8+Mc/7rz/j33sY3nJS16Sn/zkJ6mpqUmSHH300XnpS1+6yTUXL17c+bm9vT0HHXRQdtlll7zrXe/KZz/72S5z1j355JP5/ve/n0MPPbQ3bhsAoFv8Kg8AoBftv//+qa6uztixY3P00Udnp512ylVXXZWqqq6/z/z+97+fGTNmZMyYMamqqkp1dXW+/vWv58EHH9zmz9iec4v41Kc+lQ0bNuTcc8/dYpu1a9dm7ty5mTJlSmdNU6dOTZLOupqbm3PHHXfk+OOP7wzVkmTMmDF505vetMk177777hx33HHZZZddUllZmerq6rzjHe9IW1tbfvvb33Zpu9NOOwnVAIB+J1gDAOhF3/zmN3P77bfnhhtuyKmnnpoHH3wwb33rW7u0Wb58eU488cS85CUvybe//e384he/yO233553v/vdeeaZZ7Z6/e05t6iXvvSlmTdvXr72ta/loYce2uR4e3t7jjzyyCxfvjwf+MAH8tOf/jS//OUvc9tttyVJWlpakiTr1q1LuVzO+PHjN7nGC/c99thjOeigg/LHP/4xn//853PLLbfk9ttvz5e+9KUu13zWxIkTe+VeAQB6wlBQAIBe9KpXvapzwYJDDjkkbW1t+drXvpb//M//zD/8wz8kSb797W9nt912y/e+970uE/avX79+m9ffnnO3x0c+8pH827/9W84+++y8+tWv7nLs/vvvz69+9atcdtlleec739m5/3e/+12XdjvttFNKpdJm51NbvXp1l+0rr7wyzc3NWb58eWfPtyS55557NlvfCxc+AADoD3qsAQD0oYsuuig77bRTPvaxj6W9vT1JRwhUU1PTJQxavXr1Zlf2fKHtOXd77LLLLvngBz+Y//zP/8wvf/nLTWpKklGjRnXZ/+Uvf7nLdm1tbfbbb79ceeWVaW1t7dzf1NSU//qv/9rmNcvlcr761a9u/80AAPQSwRoAQB/aaaedsmjRojz44IP57ne/myQ59thj85vf/Cbz5s3LDTfckG984xuZOXNmt4Yzbs+52+uMM87IpEmT8uMf/7jL/le+8pV5+ctfng996EP593//9/zkJz/Jaaedlh/84AebXOMTn/hE/vjHP+aoo47KlVdemSuuuCKHH354xowZ0yUsPOKII1JTU5O3vvWt+fGPf5wVK1bkqKOOyrp16/r8PgEAukuwBgDQx04//fT8zd/8TT7xiU+kra0t73rXu3LBBRfkxz/+cf7+7/8+F154YT70oQ/l5JNP3uz5zw+ctufc7bXDDjvk4x//+Cb7q6urc/XVV2ePPfbIqaeemre+9a1Zu3Ztrr/++k3aHn300bniiivyl7/8JSeddFIWLFiQE044IbNnz86OO+7Y2e6Vr3xlrrjiiqxbty5z5szJ6aefnr333jtf+MIXeu1+AAC2V6lcLpcHuggAADZv5513zrvf/e5cfPHF/Xpuf9qwYUP23nvvvOQlL8m111470OUAAHSbxQsAAAahe++9Nz/60Y+ybt26HHDAAf12bn94z3vekyOOOCITJ07M6tWrc8kll+TBBx/M5z//+YEuDQCgRwRrAACD0Pvf//78z//8TxYuXJg5c+b027n94amnnsrChQvzpz/9KdXV1Xnta1+bH/3oRzn88MMHujQAgB4xFBQAAAAACrB4AQAAAAAUIFgDAAAAgAIEawAAAABQgMULkrS3t+eJJ57I2LFjUyqVBrocAAAAAAZIuVzOU089lUmTJqWiYut90gRrSZ544olMmTJloMsAAAAAYJB4/PHHM3ny5K22EawlGTt2bJKOP7C6uroBrgYAAACAgdLY2JgpU6Z05kVbI1hLOod/1tXVCdYAAAAA6NZ0YRYvAAAAAIACBGsAAAAAUIBgDQAAAAAKMMdaN5XL5WzcuDFtbW0DXcqwVVlZmaqqqm6NYQYAAAAYaIK1bmhtbc2qVavy9NNPD3Qpw94OO+yQiRMnpqamZqBLAQAAANgqwdo2tLe35+GHH05lZWUmTZqUmpoaPar6QLlcTmtra/70pz/l4Ycfzu67756KCiOVAQAAgMFLsLYNra2taW9vz5QpU7LDDjsMdDnD2ujRo1NdXZ1HH300ra2tedGLXjTQJQEAAABskS5B3aT3VP/w5wwAAAAMFVIMAAAAAChAsAYAAAAABQjWAAAAAKAAwVo/amlJ1qzpeO9r559/fl73utdl7NixGTduXI4//vj85je/2eo5l112WUqlUudrzJgx2XfffbN8+fIu7Q4++OCcccYZmz1/xx133OJ2kjz44IOZPHly5syZk/Xr1xe9PQAAAIABJ1jrBytXJnPmJGPGJBMmdLzPmZPcemvf/cybb7458+fPz2233ZbrrrsuGzduzJFHHpnm5uatnldXV5dVq1Zl1apVufvuu3PUUUflxBNP3GYo1x233357DjrooBx11FH5/ve/n1GjRm33NQEAAAAGimCtjy1blsyalVx9ddLe3rGvvb1j+6CDkksu6Zufe8011+SUU07Jq1/96rzmNa/JpZdemsceeyx33nnnVs8rlUqZMGFCJkyYkN133z2f+tSnUlFRkXvvvXe76rnhhhty6KGH5l3vele+/vWvp7KycruuBwAAADDQBGt9aOXKZP78pFxONm7semzjxo798+b1bc+1ZzU0NCRJdt55526f09bWlm984xtJkte+9rWFf/aKFSvyxje+MWeffXY+85nPFL4OAAAAwGBSNdAFDGeLFyeVlZuGas9XWZksWZLMmNF3dZTL5SxYsCAzZ87MtGnTttq2oaEhY8aMSZK0tLSkuro6X/nKV/Lyl7+8S7ulS5fma1/7Wpd9GzduzIte9KIu+5qamvKP//iPOfvss7No0aJeuBsAAACAwUGw1kdaWpKrrnpu+OeWbNyYrFjR0X706L6p5bTTTsu9996blStXbrPt2LFjc9dddyVJnn766Vx//fU59dRTs8suu+RNb3pTZ7t/+qd/yoc//OEu5y5fvjznnXdel32jR4/OzJkz89WvfjVvfetb86pXvaoX7ggAAABg4AnW+khj47ZDtWe1t3e074tg7fTTT88PfvCD/OxnP8vkyZO32b6ioiKveMUrOrf32muvXHvttbnwwgu7BGv19fVd2iXJuHHjNrleZWVlrrzyyrz5zW/OIYcckhtuuCF77rnndtwRAAAAwOBgjrU+UleXVHTzT7eioqN9byqXyznttNOyfPny3HDDDdltt90KX6uysjItLS2Fzx81alSWL1+ev/u7v8shhxyS+++/v/C1AAAAAAYLwVofGT06mT07qdpGn8CqquSEE3q/t9r8+fPz7W9/O9/97nczduzYrF69OqtXr95mQFYulzvbPvzww/nKV76Sn/zkJ5k9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Vq3qfP3oRz/qco0zzjgjK1asyOWXX56VK1emqakpxx57bNra2vr7dgAAAAAYQaoG8oe/6U1v6rL96U9/OsuWLcttt92WV7/61UmSUaNGZcKECZs9v6GhIV//+tfzrW99K4cffniS5Nvf/namTJmS66+/PkcddVTf3gAAAADAdnj+kM/mDZv/nCS1NbX9VhPdN6DB2vO1tbXl+9//fpqbm3PAAQd07r/pppsybty47LjjjnnDG96QT3/60xk3blyS5M4778yGDRty5JFHdrafNGlSpk2blp///OdbDNbWr1+f9evXd243Njb20V0BAAAAbNmY88dsdv/4i8d32S6fU+6PcuihAV+84L777suYMWMyatSozJ07NytWrMiee+6ZJDnmmGPyne98JzfccEM++9nP5vbbb8+hhx7aGYqtXr06NTU12Wmnnbpcc/z48Vm9evUWf+b555+f+vr6zteUKVP67gYBAAAAGJYGvMfa3/7t3+aee+7JX//611xxxRV55zvfmZtvvjl77rlnTjrppM5206ZNy3777ZepU6fmhz/8YebMmbPFa5bL5ZRKpS0eX7RoURYsWNC53djYKFwDAAAA+l3ToqbOz80bmjt7qq1ZuCa11YZ/DnYDHqzV1NTkFa94RZJkv/32y+23357Pf/7z+fKXv7xJ24kTJ2bq1Kl56KGHkiQTJkxIa2tr1q1b16XX2tq1a3PggQdu8WeOGjUqo0aN6uU7AQAAAOiZLc2dVltda161IWDAh4K+ULlc7jL/2fP95S9/yeOPP56JEycmSfbdd99UV1fnuuuu62yzatWq3H///VsN1gAAAABgew1oj7Wzzz47xxxzTKZMmZKnnnoql19+eW666aZcc801aWpqysc//vG8+c1vzsSJE/PII4/k7LPPzq677poTTjghSVJfX5/3vOc9Oeuss7LLLrtk5513zsKFCzN9+vTOVUIBAAAAoC8MaLC2Zs2avP3tb8+qVatSX1+fvfbaK9dcc02OOOKItLS05L777ss3v/nN/PWvf83EiRNzyCGH5Hvf+17Gjh3beY0lS5akqqoqJ554YlpaWnLYYYflsssuS2Vl5QDeGQAAAEDP1NbUWv1ziCmVy+UR/zfW2NiY+vr6NDQ0pK6ubqDLAQAAAGCA9CQnGnRzrAEAAADAUCBYAwAAAIACBGsAAAAAUIBgDQAAAAAKEKwBAAAAQAGCNQAAAAAoQLAGAAAAAAUI1gAAAACgAMEaAAAAABQgWAMAAACAAgRrAAAAAFCAYA0AAABGqObW5pTOLaV0binNrc0DXc6I5+9j6BGsAQAAAEABgjUAAAAAKKBqoAsAAAAA+s/zhxg2b9j85ySprantt5pGMn8fQ1upXC6XB7qIgdbY2Jj6+vo0NDSkrq5uoMsBAACAPlM6t9StduVzRnxc0C/8fQw+PcmJDAUFAAAAgAIMBQUAAIARpGlRU+fn5g3NGX/x+CTJmoVrUlttuGF/8/cxtAnWAAAAYATZ0lxdtdW15vEaAP4+hjZDQQEAAACgAMEaAAAAABRgKCgAAACMULU1tVabHET8fQw9eqwBAAAAQAGCNQAAAAAoQLAGAAAAAAUI1gAAAIAeaW5tTuncUkrnltLc2jzQ5cCAEawBAAAAQAGCNQAAAAAooGqgCwAAAAAGv+cP+WzesPnPSVJbU9tvNcFAE6wBAAAA2zTm/DGb3T/+4vFdtsvnlPujHBgUDAUFAAAAgAL0WAMAAAC2qWlRU+fn5g3NnT3V1ixck9pqwz8ZmQRrAAAAwDZtae602upa86oxYhkKCgAAAAAFCNYAAAAAoABDQQEAAIAeqa2ptfonRI81AAAAAChEsAYAAAAABQjWAAAAAKAAwRoAAAAAFCBYAwAAAIACBGsAAAAAUIBgDQAAAAAKEKwBAAAAQAGCNQAAAAAoQLAGAAAAAAUI1gAAAACgAMEaAAAAABQgWAMAAACAAgRrAAAAAFCAYA0AAAAAChCsAQAAAEABgjUAAAAAKECwBgAAAAAFCNYAAAAAoADBGgAAAAAUIFgDAAAAgAIEawAAAABQgGANAAAAAAoQrAEAAABAAYI1AAAAAChAsAYAAAAABQjWAAAAAKAAwRoAAAAAFCBYAwAAAIACBGsAAAAAUIBgDQAAAAAKEKwBAAAAQAGCNQAAAAAoQLAGAAAAAAUI1gAAAACgAMEaAAAAABQgWAMAAACAAgRrAAAAAFCAYA0AAAAAChCsAQAAAEABgjUAAAAAKKCqJ40bGhqyYsWK3HLLLXnkkUfy9NNP58UvfnH22WefHHXUUTnwwAP7qk4AAAAAGFS61WNt1apV+ed//udMnDgxn/jEJ9Lc3Jy99947hx12WCZPnpwbb7wxRxxxRPbcc89873vf6+uaAQAAAGDAdavH2mte85q84x3vyC9/+ctMmzZts21aWlpy5ZVXZvHixXn88cezcOHCXi0UAAAAAAaTUrlcLm+r0Z/+9Ke8+MUv7vZFe9p+oDU2Nqa+vj4NDQ2pq6sb6HIAAAAAGCA9yYm6NRS0pyHZUArVAAAAAKCIHq8K+o1vfCM//OEPO7c/8IEPZMcdd8yBBx6YRx99tFeLAwAAAIDBqsfB2nnnnZfRo0cnSX7xi1/ki1/8Yi666KLsuuuuOfPMM3u9QAAAAAAYjLq1eMHzPf7443nFK16RJLnyyivzD//wD/l//+//ZcaMGTn44IN7uz4AAAAAGJR63GNtzJgx+ctf/pIkufbaa3P44YcnSV70ohelpaWld6sDAAAAgEGqxz3WjjjiiLz3ve/NPvvsk9/+9rd54xvfmCR54IEH8tKXvrS36wMAAACAQanHPda+9KUv5YADDsif/vSnXHHFFdlll12SJHfeeWfe+ta39nqBAAAAADAYlcrlcnmgixhojY2Nqa+vT0NDQ+rq6ga6HAAAAAAGSE9yoh73WEuSW265JW9729ty4IEH5o9//GOS5Fvf+lZWrlxZ5HIAAAAAMOT0OFi74oorctRRR2X06NG56667sn79+iTJU089lfPOO6/XCwQAAACAwajHwdqnPvWpXHLJJfnqV7+a6urqzv0HHnhg7rrrrl4tDgAAAAAGqx4Ha7/5zW8ya9asTfbX1dXlr3/9a2/UBAAAAACDXo+DtYkTJ+Z3v/vdJvtXrlyZl73sZb1SFAAAAAAMdj0O1k499dS8//3vz3//93+nVCrliSeeyHe+850sXLgw8+bN64saAQAAAGDQqerpCR/4wAfS0NCQQw45JM8880xmzZqVUaNGZeHChTnttNP6okYAAAAAGHRK5XK5XOTEp59+Or/+9a/T3t6ePffcM2PGjOnt2vpNY2Nj6uvr09DQkLq6uoEuBwAAAIAB0pOcqMdDQZ/1xBNP5C9/+UumT5+eMWPGpGA+BwAAAABDUo+Dtb/85S857LDDsscee+Tv//7vs2rVqiTJe9/73px11lm9XiAAAAAADEY9DtbOPPPMVFdX57HHHssOO+zQuf+kk07KNddc06vFAQAAAMBg1ePFC6699tr85Cc/yeTJk7vs33333fPoo4/2WmEAAAAAMJj1uMdac3Nzl55qz/rzn/+cUaNG9UpRAAAAADDY9ThYmzVrVr75zW92bpdKpbS3t+czn/lMDjnkkF4tDgAAAAAGqx4PBf3MZz6Tgw8+OHfccUdaW1vzgQ98IA888ECefPLJ3HrrrX1RIwAAAAAMOj3usbbnnnvm3nvvzd/93d/liCOOSHNzc+bMmZO77747L3/5y/uiRgAAAAAYdErlcrk80EUMtMbGxtTX16ehoSF1dXUDXQ4AAAAAA6QnOVGPe6wlybp163LxxRfnPe95T9773vfms5/9bJ588skeX2fZsmXZa6+9UldXl7q6uhxwwAH58Y9/3Hm8XC7n4x//eCZNmpTRo0fn4IMPzgMPPNDlGuvXr8/pp5+eXXfdNbW1tTnuuOPyhz/8ochtAQAAAEC39ThYu/nmm7PbbrvlC1/4QtatW5cnn3wyX/jCF7Lbbrvl5ptv7tG1Jk+enAsuuCB33HFH7rjjjhx66KGZPXt2Z3h20UUXZfHixfniF7+Y22+/PRMmTMgRRxyRp556qvMaZ5xxRlasWJHLL788K1euTFNTU4499ti0tbX19NYAAAAAoNt6PBR02rRpOfDAA7Ns2bJUVlYmSdra2jJv3rzceuutuf/++7eroJ133jmf+cxn8u53vzuTJk3KGWeckQ9+8INJOnqnjR8/PhdeeGFOPfXUNDQ05MUvfnG+9a1v5aSTTkqSPPHEE5kyZUp+9KMf5aijjurWzzQUFAAAAICkj4eC/v73v89ZZ53VGaolSWVlZRYsWJDf//73Pa/2/7S1teXyyy9Pc3NzDjjggDz88MNZvXp1jjzyyM42o0aNyhve8Ib8/Oc/T5Lceeed2bBhQ5c2kyZNyrRp0zrbbM769evT2NjY5QUAAAAAPdHjYO21r31tHnzwwU32P/jgg9l77717XMB9992XMWPGZNSoUZk7d25WrFiRPffcM6tXr06SjB8/vkv78ePHdx5bvXp1ampqstNOO22xzeacf/75qa+v73xNmTKlx3UDAAAAMLJV9fSE973vfXn/+9+f3/3ud9l///2TJLfddlu+9KUv5YILLsi9997b2Xavvfba5vX+9m//Nvfcc0/++te/5oorrsg73/nOLnO1lUqlLu3L5fIm+15oW20WLVqUBQsWdG43NjYK1wAAAADokR4Ha29961uTJB/4wAc2e6xUKnUGW91ZQKCmpiaveMUrkiT77bdfbr/99nz+85/vnFdt9erVmThxYmf7tWvXdvZimzBhQlpbW7Nu3bouvdbWrl2bAw88cIs/c9SoURk1alQ37hYAAAAANq/HwdrDDz/cF3V0KpfLWb9+fXbbbbdMmDAh1113XfbZZ58kSWtra26++eZceOGFSZJ999031dXVue6663LiiScmSVatWpX7778/F110UZ/WCQAAAMDI1uNgberUqb32w88+++wcc8wxmTJlSp566qlcfvnluemmm3LNNdekVCrljDPOyHnnnZfdd989u+++e84777zssMMOOfnkk5Mk9fX1ec973pOzzjoru+yyS3beeecsXLgw06dPz+GHH95rdQIAAADAC/U4WPvmN7+51ePveMc7un2tNWvW5O1vf3tWrVqV+vr67LXXXrnmmmtyxBFHJOkYbtrS0pJ58+Zl3bp1ef3rX59rr702Y8eO7bzGkiVLUlVVlRNPPDEtLS057LDDctlll3VZtRQAAAAAelupXC6Xe3LCC1fg3LBhQ55++unU1NRkhx12yJNPPtmrBfaHxsbG1NfXp6GhIXV1dQNdDgAAAAADpCc5UUVPL75u3bour6ampvzmN7/JzJkz8+///u+FiwYAAACAoaTHwdrm7L777rngggvy/ve/vzcuBwAAAACDXq8Ea0lSWVmZJ554orcuBwAAAACDWo8XL/jBD37QZbtcLmfVqlX54he/mBkzZvRaYQAAAAAwmPU4WDv++OO7bJdKpbz4xS/OoYcems9+9rO9VRcAAAAADGo9Dtba29v7og4AAAAAGFJ6bY615cuXZ6+99uqtywEAAADAoNajYO2rX/1q/vEf/zEnn3xybrvttiTJDTfckH322Sdve9vbcsABB/RJkQAAAAAw2HQ7WLv44oszf/78PPzww7nqqqty2GGH5bzzzsuJJ56Y448/Po899li+/OUv92WtAAAAADBodHuOta9//eu55JJL8u53vzs33XRTDj300Nxwww353e9+lx133LEPSwQAAACAwafbPdYeffTRHH744UmSgw8+ONXV1fn0pz8tVAMAAABgROp2sPbMM8/kRS96Ued2TU1NXvziF/dJUQAAAAAw2HV7KGiSfO1rX8uYMWOSJBs3bsxll12WXXfdtUub973vfb1XHQAAAAAMUqVyuVzuTsOXvvSlKZVKW79YqZT//d//7ZXC+lNjY2Pq6+vT0NCQurq6gS4HAAAAgAHS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cTn++OPzm9/8pkubU045JaVSqctr//3379Jm/fr1Of3007PrrrumtrY2xx13XP7whz/0560AwFaNOX9M52v8xeM794+/eHyXYwAAwNAxoMHazTffnPnz5+e2227Lddddl40bN+bII49Mc3PX394fffTRWbVqVefrRz/6UZfjZ5xxRlasWJHLL788K1euTFNTU4499ti0tbX15+0AAAAAMIIM6FDQa665psv2pZdemnHjxuXOO+/MrFmzOvePGjUqEyZM2Ow1Ghoa8vWvfz3f+ta3cvjhhydJvv3tb2fKlCm5/vrrc9RRR/XdDQBANzUtaur83LyhubPX2pqFa1JbbZjgcGC4LwDAyFM4WPvd736X3//+95k1a1ZGjx6dcrmcUqm0XcU0NDQkSXbeeecu+2+66aaMGzcuO+64Y97whjfk05/+dMaNG5ckufPOO7Nhw4YceeSRne0nTZqUadOm5ec///lmg7X169dn/fr1nduNjY3bVTcAbMuWwpTa6lpByzCxpaG8zx/6myTlc3q0IDsAAINYj4eC/uUvf8nhhx+ePfbYI3//93+fVatWJUne+9735qyzzipcSLlczoIFCzJz5sxMmzatc/8xxxyT73znO7nhhhvy2c9+NrfffnsOPfTQzmBs9erVqampyU477dTleuPHj8/q1as3+7POP//81NfXd76mTJlSuG4AAAAARqYe91g788wzU1VVlcceeyyvetWrOvefdNJJOfPMM/PZz362UCGnnXZa7r333qxcubLL/pNOOqnz87Rp07Lffvtl6tSp+eEPf5g5c+Zs8Xpb60G3aNGiLFiwoHO7sbFRuAYAbBfDfQEARp4eB2vXXnttfvKTn2Ty5Mld9u++++559NFHCxVx+umn5wc/+EF+9rOfbXLdF5o4cWKmTp2ahx56KEkyYcKEtLa2Zt26dV16ra1duzYHHnjgZq8xatSojBo1qlCtALC9amtqDQcchgz3BQAYeXo8FLS5uTk77LDDJvv//Oc/9zisKpfLOe2007J8+fLccMMN2W233bZ5zl/+8pc8/vjjmThxYpJk3333TXV1da677rrONqtWrcr999+/xWANAAAAALZXj4O1WbNm5Zvf/GbndqlUSnt7ez7zmc/kkEMO6dG15s+fn29/+9v57ne/m7Fjx2b16tVZvXp1WlpakiRNTU1ZuHBhfvGLX+SR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vjnz58/Pbbfdluuuuy4bN27MkUcemebm5s42F110URYvXpwvfvGLuf322zNhwoQcccQReeqppzrbnHHGGVmxYkUuv/zyrFy5Mk1NTTn22GPT1tY2ELc1oqxcmcyfn5TLycaNXY9t3Nixf948PdcAAACA4adULpfLA13Es/70pz9l3LhxufnmmzNr1qyUy+VMmjQpZ5xxRj74wQ8m6eidNn78+Fx44YU59dRT09DQkBe/+MX51re+lZNOOilJ8sQTT2TKlCn50Y9+lKOOOmqbP7exsTH19fVpaGhIXV1dn97jcDNnTkfPtBeGas9XVZXMnp3853/2X10AAAAARfQkJxpUc6w1NDQkSXbeeeckycMPP5zVq1fnyCOP7GwzatSovOENb8jPf/7zJMmdd96ZDRs2dGkzadKkTJs2rbPNC61fvz6NjY1dXvRcS0ty1VVbD9WSjuMrVljQAAAAABheBk2wVi6Xs2DBgsycOTPTpk1LkqxevTpJMn78+C5tx48f33ls9erVqampyU477bTFNi90/vnnp76+vvM1ZcqU3r6dEaGx8bk51balvb2jPQAAAMBwMWiCtdNOOy333ntv/v3f/32TY6VSqct2uVzeZN8Lba3NokWL0tDQ0Pl6/PHHixc+gtXVJRXdfIIqKjraAwAAAAwXgyJYO/300/ODH/wgN954YyZPnty5f8KECUmySc+ztWvXdvZimzBhQlpbW7Nu3bottnmhUaNGpa6ursuLnhs9umPutKqqrberqkpOOKGjPQAAAMBwMaDBWrlczmmnnZbly5fnhhtuyG677dbl+G677ZYJEybkuuuu69zX2tqam2++OQceeGCSZN999011dXWXNqtWrcr999/f2Ya+s2BBsq3FV9vakjPP7J96AAAAAPrLNvoa9a358+fnu9/9bq666qqMHTu2s2dafX19Ro8enVKplDPOOCPnnXdedt999+y+++4577zzssMOO+Tkk0/ubPue97wnZ511VnbZZZfsvPPOWbhwYaZPn57DDz98IG9vRJg5M1m6NJk3L6ms7LqQQVVVR6i2dGkyY8bA1QgAAADQFwY0WFu2bFmS5OCDD+6y/9JLL80pp5ySJPnABz6QlpaWzJs3L+vWrcvrX//6XHvttRk7dmxn+yVLlqSqqionnnhiWlpacthhh+Wyyy5LZWVlf93KiDZ3bjJ9erJk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rOl4BwAAABjOBGv0ipUrkzlzkjFjkgkTOt7nzEluvXWgKwMAAADoGwMarP3sZz/Lm970pkyaNCmlUilXXnlll+OnnHJKSqVSl9f+++/fpc369etz+umnZ9ddd01tbW2OO+64/OEPf+jHu2DZsmTWrOTqq5P29o597e0d2wcdlFxyycDWBwAAANAXBjRYa25uzmte85p88Ytf3GKbo48+OqtWrep8/ehHP+py/IwzzsiKFSty+eWXZ+XKlWlqasqxxx6btra2vi6fdPRUmz8/KZeTjRu7Htu4sWP/vHl6rgEAAADDT9VA/vBjjjkmxxxzzFbbjBo1KhMmTNjssYaGhnz961/Pt771rRx++OFJkm9/+9uZMmVKrr/++hx11FG9XjNdLV6cVFZuGqo9X2VlsmRJMmNG/9UFAAAA0NcG/RxrN910U8aNG5c99tgj//zP/5y1a9d2HrvzzjuzYcOGHHnkkZ37Jk2alGnTpuXnP//5Fq+5fv36NDY2dnnRcy0tyVVXbT1USzqOr1hhQQMAAABgeBnUwdoxxxyT73znO7nhhhvy2c9+NrfffnsOPfTQrF+/PkmyevXq1NTUZKeddupy3vjx47N69eotXvf8889PfX1952vKlCl9eh/DVWPjc3OqbUt7e0d7AAAAgOFiQIeCbstJJ53U+XnatGnZb7/9MnXq1Pzwhz/MnDlztnheuVxOqVTa4vFFixZlwYIFnduNjY3CtQLq6pKKiu6FaxUVHe0BAAAAhotB3WPthSZOnJipU6fmoYceSpJMmDAhra2tWbduXZd2a9euzfjx47d4nVGjRqWurq7Li54bPTqZPTup2kY8W1WVnHBCR3sAAACA4WJIBWt/+ctf8vjjj2fixIlJkn333TfV1dW57rrrOtusWrUq999/fw488MCBKnNEWbAg2dYCrG1tyZln9k89AAAAAP1lQIeCNjU15Xe/+13n9sMPP5x77rknO++8c3beeed8/OMfz5vf/OZMnDgxjzzySM4+++zsuuuuOeGEE5Ik9fX1ec973pOzzjoru+yyS3beeecsXLgw06dP71wllL41c2aydGkyb96mq4NWVXWEakuXWhEUAAAAGH4GNFi74447csghh3RuPzvv2Tvf+c4sW7Ys9913X775zW/mr3/9ayZOnJhDDjkk3/ve9zJ27NjOc5YsWZKqqqqceOKJaWlp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zc15zWteky9+8YubHHv66adz11135aMf/WjuuuuuLF++PL/97W9z3HHHdWl3xhlnZMWKFbn88suzcuXKNDU15dhjj01bW1tnm5NPPjn33HNPrrnmmlxzzTW555578va3v73P74+Bs7Vn6/muvPLK/Pd//3cmTZq0yTHPFpuzrWfr97//fWbOnJlXvvKVuemmm/KrX/0qH/3oR/OiF72os41ni83Z1rN15pln5pprrsm3v/3tPPjggznzzDNz+umn56qrrups49lic26++ebMnz8/t912W6677rps3LgxRx55ZJqbmzvbXHTRRVm8eHG++MUv5vbbb8+ECRNyxBFH5Kmnnups4/nihbb1bPk+T1Hd+XfrWb7P0xPdebYG9ff5MmxFkvKKFSu22uaXv/xlOUn50UcfLZfL5fJf//rXcnV1dfnyyy/vbPPHP/6xXFFRUb7mmmvK5XK5/Otf/7qcpHzbbbd1tvnFL35RTlL+n//5n96/EQadLT1bf/jDH8oveclLyvfff3956tSp5SVLlnQe82zRHZt7tk466aTy2972ti2e49miOzb3bL361a8uf+ITn+iy77WvfW35Ix/5SLlc9mzRfWvXri0nKd98883lcrlcbm9vL0+YMKF8wQUXdLZ55plnyvX19eVLLrmkXC57vuieFz5bm+P7PEVs6dnyfZ7ttblnazB/n9djje3W0NCQUqmUHXfcMUly5513ZsOGDTnyyCM720yaNCnTpk3Lz3/+8yTJL37xi9TX1+f1r399Z5v9998/9fX1nW0Yedrb2/P2t789//qv/5pXv/rVmxz3bFFEe3t7fvjDH2aPPfbIUUcdlXHjxuX1r399lyF9ni2KmjlzZn7wgx/kj3/8Y8rlcm688cb89re/zVFHHZXEs0X3NTQ0JEl23nnnJMnDDz+c1atXd3l2Ro0alTe84Q2dz4Xni+544bO1pTa+z9NTm3u2fJ+nN7zw2Rrs3+cFa2yXZ555Jh/60Idy8sknp66uLkmyevXq1NTUZKeddurSdvz48Vm9enVnm3Hjxm1yvXHjxnW2YeS58MILU1VVlfe9732bPe7Zooi1a9emqakpF1xwQY4++uhce+21OeGEEzJnzpzcfPPNSTxbFPeFL3whe+65ZyZPnpyampocffTRWbp0aWbOnJnEs0X3lMvlLFiwIDNnzsy0adOSpPPvfvz48V3avvDZ8XyxNZt7tl7I93mK2NKz5fs822tzz9Zg/z5fVfhMRrwNGzbkLW95S9rb27N06dJtti+XyymVSp3bz/+8pTaMHHfeeWc+//nP56677urxM+DZYmva29uTJLNnz86ZZ56ZJNl7773z85//PJdcckne8IY3bPFczxbb8oUvfCG33XZbfvCDH2Tq1Kn52c9+lnnz5mXixIk5/PDDt3ieZ4vnO+2003Lvvfdm5cqVmxx74TPQnefC88WztvZsJb7PU9zmni3f5+kNm3u2Bvv3eT3WKGTDhg058cQT8/DDD+e6667r/O1WkkyYMCGtra1Zt25dl3PWrl3b+VvXCRMmZM2aNZtc909/+tMmv5llZLjllluydu3a/M3f/E2qqqpSVVWVRx99NGeddVZe+tKXJvFsUcyuu+6aqqqq7Lnnnl32v+pVr+pcRcizRREtLS05++yzs3jx4rzpTW/KXnvtldNOOy0nnXRSLr744iSeLbbt9NNPzw9+8IPceOONmTx5cuf+CRMmJMkmv0F/4bPj+WJLtvRsPcv3eYra0rPl+zzba0vP1mD/Pi9Yo8ee/R/hhx56KNdff3122WWXLsf33XffVFdX57rrruvct2rVqtx///058MADkyQHHHBAGhoa8stf/rKzzX//93+noaGhsw0jy9vf/vbce++9ueeeezpfkyZNyr/+67/mJz/5SRLPFsXU1NTkda973SZLdv/2t7/N1KlTk3i2KGbDhg3ZsGFDKiq6fp2qrKzs/M2qZ4stKZfLOe2007J8+fLccMMN2W233boc32233TJhwoQuz05ra2tuvvnmzufC88XmbOvZSnyfp5htPVu+z1PUtp6tQf99vvCyBwxbTz31VPnuu+8u33333eUk5cWLF5fvvvvu8qOPPlresGFD+bjjjitPnjy5fM8995RXrVrV+Vq/fn3nNebOnVuePHly+frrry/fdddd5UMPPbT8mte8prxx48bONkcffXR5r732Kv/iF78o/+IXvyhPnz69fOyxxw7ELdNPtvZsbc4LVxEqlz1bbN62nq3ly5eXq6ury1/5ylfKDz30UPn/+//+v3JlZWX5/2/v/mOqLP8/jr9OinLywFERBSeJShJYcwKWP4Y/+iHumAOhpoUFWZq5/NHKLGaWZuVm+GM1J2vHY5otrKmbxsaUUDGnJf6YKWIpzGqYRlgqosK5vn988p5HQODkNxs+H9u9eV3nuq8f93UN77133fddVFRk1cHaQkOaWlvDhw83/fr1M4WFhebkyZPG4/GYwMBAs2LFCqsO1hYa8tJLLxmn02m2b9/ucz9VXV1tlVm0aJFxOp1mw4YN5vDhw+app54y4eHh5q+//rLKsL5wo6bWFvfz8Fdz/m7diPt5NEdz1tZ/+X6ewBrqKSwsNJLqHRkZGaasrKzB3ySZwsJCq45Lly6Zl19+2XTu3NnY7Xbz+OOPm1OnTvm0U1lZadLT001QUJAJCgoy6enppqqq6t8dLP5VN1tbDWnoP2LWFhrSnLXldrtNVFSUCQwMNP379zebNm3yqYO1hYY0tbYqKipMZmam6d69uwkMDDTR0dEmOzvbeL1eqw7WFhrS2P2Ux+Oxyni9XvP222+bsLAw0759ezNs2DBz+PBhn3pYX7hRU2uL+3n4qzl/t27E/Tyao7lr6796P2/7exAAAAAAAAAAWoB3rAEAAAAAAAB+ILAGAAAAAAAA+IHAGgAAAAAAAOAHAmsAAAAAAACAHwisAQAAAAAAAH4gsAYAAAAAAAD4gcAaAAAAAAAA4AcCawAAAAAAAIAfCKwBAADcQpGRkVq2bNnt7gYAAAD+BQTWAABAq2Sz2W56ZGZmNnn+pk2bbnm/Ll68qDlz5qh3794KDAxUaGioRowYoS1bttzytv4t5eXlDV7jiRMn3rI2WjofU6ZMUZs2bfTFF1/csj4AAADcqO3t7gAAAMD/h4qKCuvfubm5mjdvnkpLS608u91+O7qlqVOn6rvvvtPHH3+s2NhYVVZWavfu3aqsrLwt/bnelStX1K5dO7/P37Ztm/r162elb9c1rq6uVm5urmbPni23260JEybctPw/HTcAALhzsWMNAAC0SmFhYdbhdDpls9l88j7//HP16dNH7dq1U3R0tNauXWudGxkZKUkaN26cbDablT5x4oSSk5PVrVs3ORwODRw4UNu2bWtRvzZv3qysrCy5XC5FRkYqPj5e06dPV0ZGhlXmzJkzGjt2rOx2u3r16qV169b5PGJ6bYfYwYMHrXPOnTsnm82m7du3S5Lq6ur0/PPPq1evXrLb7YqOjtby5ct9+pKZmamUlBR98MEH6t69u/r27StJ+vXXXzV+/Hh16tRJISEhSk5OVnl5eZNjCwkJqXfdJenPP//UlClT1LVrVwUHB+vhhx/WoUOH6l2X+Ph4BQYGqnfv3po/f75qa2slNT4fjfnyyy8VGxurN998U99++229vvs77u+//16PPfaYunTpIqfTqeHDh2v//v1NXhcAANB6EVgDAAB3nI0bN2rmzJl69dVX9cMPP+jFF1/Uc889p8LCQkn/C6BIksfjUUVFhZW+cOGCXC6Xtm3bpgMHDigpKUljx47VqVOnmt12WFiY8vLydP78+UbLZGZmqry8XN98842++uorrVixQmfOnGnRGL1er3r06KH169fr6NGjmjdvnrKysrR+/XqfcgUFBSopKdHWrVu1ZcsWVVdXa+TIkXI4HNq5c6d27dolh8Oh0aNH68qVKy3qgyQZYzRmzBidPn1aeXl5Ki4uVlxcnB555BH98ccfkqT8/HxNnDhRM2bM0NGjR5WTk6PVq1frvffek9T4fDTG7XZr4sSJcjqdcrlc8ng89cr4M+7z588rIyNDRUVF2rNnj+699165XK6bziUAAGjlDAAAQCvn8XiM0+m00kOGDDGTJ0/2KfPkk08al8tlpSWZjRs3Nll3bGys+eijj6x0z549zdKlSxstv2PHDtOjRw8TEBBgEhISzKxZs8yuXbus30tLS40ks2fPHiuvpKTESLLqLSsrM5LMgQMHrDJVVVVGkiksLGy07WnTppm0tDQrnZGRYbp162YuX75s5bndbhMdHW28Xq+Vd/nyZWO3201+fn6D9V7rj91uNx06dLCO/fv3m4KCAhMcHGxqamp8zunTp4/JyckxxhiTmJho3n//fZ/f165da8LDw610c+fj+PHjJiAgwJw9e9YYY8zGjRtNRESEqauru+Xjrq2tNUFBQWbz5s1N9gsAALRO7FgDAAB3nJKSEg0dOtQnb+jQoSopKbnpeRcvXtTrr7+u2NhYdezYUQ6HQ8eOHWvRjrVhw4bp5MmTKigoUFpamo4cOaLExES9++67Vt/atm2rhIQE65z77rtPHTt2bP4A/7Zy5UolJCQoNDRUDodDn3zySb2+PvDAAz7vFysuLtZPP/2koKAgORwOORwOde7cWTU1NTpx4sRN28vNzdXBgwetIzY2VsXFxbpw4YJCQkKs+hwOh8rKyqz6iouLtWDBAp/fJ0+erIqKClVXV7dozG63W0lJSerSpYskyeVy6eLFi/Ue2fVn3GfOnNHUqVPVt29fOZ1OOZ1OXbhwoUXzDwAAWhc+XgAAAO5INpvNJ22MqZd3o9mzZys/P18ffvihoqKiZLfb9cQTT7T4EcmAgAAlJiYqMTFRb7zxhhYuXKgFCxZozpw5MsY02L/r3XXXXVafr7l69apPmfXr1+uVV15Rdna2Bg8erKCgIC1evFh79+71KdehQweftNfrVXx8vNatW1ev3dDQ0JuOKyIiQlFRUfXqCw8Pt979dr1rwUKv16v58+crNTW1XpnAwMCbtnm9uro6rVmzRqdPn1bbtm198t1ut0aNGmXl+TPuzMxMnT17VsuWLVPPnj3Vvn17DR482K9HZAEAQOtAYA0AANxxYmJitGvXLj377LNW3u7duxUTE2OlAwICVFdX53NeUVGRMjMzNW7cOEn/e+dac17q35TY2FjV1taqpqZGMTExqq2t1b59+/Tggw9KkkpLS3Xu3Dmr/LVAT0VFhQYMGCBJPh8yuNbXIUOGaNq0aVZeUzvOJCkuLk65ubnWhwb+qbi4OCvQ1dhHB+Li4lRaWlovKHe9hubjRtfeXXfgwAG1adPGyj927JjS09NVWVmpkJCQRvvQ1LiLioq0YsUKuVwuSdLPP/+s33///aZ9AgAArRuPggIAgDvO7NmztXr1aq1cuVI//vijlixZog0bNui1116zykRGRqqgoECnT59WVVWVJCkqKkobNmzQwYMHdejQIT399NPyer0tanvEiBHKyclRcXGxysvLlZeXp6ysLI0cOVLBwcGKjo7W6NGjNXnyZO3du1fFxcV64YUXZLfbrTrsdrsGDRqkRYsW6ejRo9q5c6fmzp3r005UVJT27dun/Px8HT9+XG+99VaTL/2XpPT0dHXp0kXJyckqKipSWVmZduzYoZkzZ+qXX35p0Vgl6dFHH9XgwYOVkpKi/Px8lZeXa/fu3Zo7d6727dsnSZo3b57WrFmjd955R0eOHFFJSYlyc3N9xtTQfNzI7XZrzJgx6t+/v+6//37rSEtLU2hoqD777LN/NO6oqCitXbtWJSUl2rt3r9LT033mBQAA3HkIrAEAgDtOSkqKli9frsWLF6tfv37KycmRx+PRiBEjrDLZ2dnaunWrIiIirF1hS5cuVadOnTRkyBCNHTtWSUlJiouLa1HbSUlJ+vTTTzVq1CjFxMRo+vTpSkpK8vlap8fjUUREhIYPH67U1FRNmTJFXbt29aln1apVunr1qhISEjRz5kwtXLjQ5/epU6cqNTVV48eP10MPPaTKykqf3WuNufvuu7Vz507dc889Sk1NVUxMjCZNmqRLly75tYPNZrMpLy9Pw4YN06RJk9S3b19NmDBB5eXl6tatm3VNtmzZoq1bt2rgwIEaNGiQlixZop49e1r1NDQf1/vtt9/09ddfKy0trcE+pKamyu12/6Nxr1q1SlVVVRowYICeeeYZzZgxo968AACAO4vNXP9yDgAAAPwnRUZGatasWZo1a9bt7goAAAD+xo41AAAAAAAAwA8E1gAAAAAAAAA/8CgoAAAAAAAA4Ad2rAEAAAAAAAB+ILAGAAAAAAAA+IHAGgAAAAAAAOAHAmsAAAAAAACAHwisAQAAAAAAAH4gsAYAAAAAAAD4gcAaAAAAAAAA4AcCawAAAAAAAIAf/g94x7Hzziss8gAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 1500x1000 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_scatter_chart(df8,\"Rajaji Nagar\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "ee8e044e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Count')"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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1lm58MILs99++2XgwIG56KKLMnLkyIwZMyZJcsghh2T8+PGZMmVK7Sqbs88+OxMnTszw4cN77NgBAAAAAIDdX4+GmJUrV6alpSUrVqxIpVLJYYcdltbW1px44onZsGFDHnnkkXzrW9/KmjVrMmTIkBx33HG59dZb069fv9o+rr766vTq1SunnXZaNmzYkBNOOCE33nhj9t5779rMLbfckvPPPz9jx45NkkyaNCkzZszY4ccLAAAAAADsWeqq1Wq1pxexK+jo6EilUkl7e3v69+/f08uB3cZBn7ijp5dAN1l2+Uk9vQQAAAAA2GFeajfY6X4jBgAAAAAAYHchxAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQi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ABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABTSoyHmsssuy1vf+tb069cvDQ0Nede73pXHHnusy0y1Ws306dPT1NSUffbZJ8cee2weffTRLjOdnZ2ZOnVqBg0alL59+2bSpEl54oknusysXr06LS0tqVQqqVQqaWlpyZo1a0ofIgAAAAAAsAfr0RAzZ86cnHvuuVmwYEFmz56dZ555JmPHjs369etrM1dccUWuuuqqzJgxIw8++GAaGxtz4oknZu3atbWZadOmZdasWZk5c2bmzp2bdevWZeLEidm8eXNtZvLkyVm0aFFaW1vT2tqaRYsWpaWlZYceLwAAAAAAsGepq1ar1Z5exLOeeuqpNDQ0ZM6cOXnnO9+ZarWapqamTJs2LR//+MeT/O3ql8GDB+cLX/hCzjnnnLS3t2f//ffPzTffnNNPPz1J8uSTT6a5uTl33nlnxo0blyVLluTQQw/NggULMmrUqCTJggULMnr06PzmN7/J8OHDX3RtHR0dqVQqaW9vT//+/cv9EWAPc9An7ujpJdBNll1+0g5/Te+f3UdPvH8AAAAAXomX2g12qt+IaW9vT5IMHDgwSbJ06dK0tbVl7NixtZn6+vocc8wxmTdvXpJk4cKF2bRpU5eZpqamjBgxojYzf/78VCqVWoRJkqOOOiqVSqU281ydnZ3p6OjocgMAAAAAANgeO02IqVarueCCC/L2t789I0aMSJK0tbUlSQYPHtxldvDgwbVtbW1t6dOnTwYMGPCCMw0NDVu9ZkNDQ23muS677LLa78lUKpU0Nze/sgMEAAAAAAD2ODtNiDnvvPPy8MMP57vf/e5W2+rq6rrcr1arWz32XM+deb75F9rPxRdfnPb29tpt+fLlL+UwAAAAAAAAanaKEDN16tT86Ec/yj333JMDDjig9nhjY2OSbHXVyqpVq2pXyTQ2Nmbjxo1ZvXr1C86sXLlyq9d96qmntrra5ln19fXp379/lxsAAAAAAMD26NEQU61Wc9555+W2227L3XffnWHDhnXZPmzYsDQ2Nmb27Nm1xzZu3Jg5c+bk6KOPTpIcccQR6d27d5eZFStWZPHixbWZ0aNHp729PQ888EBt5v777097e3ttBgAAAAAAoLv16skXP/fcc/Od73wnP/zhD9OvX7/alS+VSiX77LNP6urqMm3atFx66aU5+OCDc/DBB+fSSy/Nq1/96kyePLk2e9ZZZ+XCCy/Mfvvtl4EDB+aiiy7KyJEjM2bMmCTJIYcckvHjx2fKlCm57rrrkiRnn312Jk6cmOHDh/fMwQMAAAAAALu9Hg0x1157bZLk2GOP7fL4DTfckDPPPDNJ8rGPfSwbNmzIRz7ykaxevTqjRo3KT37yk/Tr1682f/XVV6dXr1457bTTsmHDhpxwwgm58cYbs/fee9dmbrnllpx//vkZO3ZskmTSpEmZMWNG2QMEAAAAAAD2aHXVarXa04vYFXR0dKRSqaS9vd3vxUA3OugTd/T0Eugmyy4/aYe/pvfP7qMn3j8AAAAAr8RL7QYv6zdiXve61+Xpp5/e6vE1a9bkda973cvZJQAAAAAAwG7nZYWYZcuWZfPmzVs93tnZmT/96U+veFEAAAAAAAC7g+36jZgf/ehHtX//+Mc/TqVSqd3fvHlzfvrTn+aggw7qtsUBAAAAAADsyrYrxLzrXe9KktTV1eWMM87osq1379456KCDcuWVV3bb4gAAAAAAAHZl2xVitmzZkiQZNmxYHnzwwQwaNKjIogAAAAAAAHYH2xVinrV06dLuXgcAAAAAAMBu52WFmCT56U9/mp/+9KdZtWpV7UqZZ33zm998xQsDAAAAAADY1b2sEPOZz3wmn/3sZ3PkkUdmyJAhqaur6+51AQAAAAAA7PJeVoj52te+lhtvvDEtLS3dvR4AAAAAAIDdxl4v50kbN27M0Ucf3d1rAQAAAAAA2K28rBDzwQ9+MN/5zne6ey0AAAAAAAC7lZf11WR//etf85//+Z+56667cthhh6V3795dtl911VXdsjgAAAAAAIBd2csKMQ8//HDe9KY3JUkWL17cZVtdXd0rXhQAAAAAAMDu4GWFmHvuuae71wEAAAAAALDbeVm/EQMAAAAAAMCLe1lXxBx33HEv+BVkd99998teEAAAAAAAwO7iZYWYZ38f5lmbNm3KokWLsnjx4pxxxhndsS4AAAAAAIBd3ssKMVdfffXzPj59+vSsW7fuFS0IAAAAAABgd9GtvxHzz//8z/nmN7/ZnbsEAAAAAADYZXVriJk/f35e9apXdecuAQAAAAAAdlkv66vJTj311C73q9VqVqxYkYceeiiXXHJJtywMAAAAAABgV/eyQkylUulyf6+99srw4cPz2c9+NmPHju2WhQEAAAAAAOzqXlaIueGGG7p7HQAAAAAAALudlxVinrVw4cIsWbIkdXV1OfTQQ/PmN7+5u9YFAAAAAACwy3tZIWbVqlV573vfm3vvvTevec1rUq1W097enuOOOy4zZ87M/vvv393rBAAAAAAA2OXs9XKeNHXq1HR0dOTRRx/Nn//856xevTqLFy9OR0dHzj///O5eIwAAAAAAwC7pZV0R09ramrvuuiuHHHJI7bFDDz00//Ef/5GxY8d22+IAAAAAAAB2ZS/ripgtW7akd+/eWz3eu3fvbNmy5RUvCgAAAAAAYHfwskLM8ccfn49+9KN58skna4/96U9/yv/7f/8vJ5xwQrctDgAAAAAAYFf2skLMjBkzsnbt2hx00EH5h3/4h7z+9a/PsGHDsnbt2nzlK1/p7jUCAAAAAADskl7Wb8Q0NzfnF7/4RWbPnp3f/OY3qVarOfTQQzNmzJjuXh8AAAAAAMAua7uuiLn77rtz6KGHpqOjI0ly4oknZurUqTn//PPz1re+NW984xtz3333FVkoAAAAAADArma7Qsw111yTKVOmpH///lttq1QqOeecc3LVVVd12+IAAAAAAAB2ZdsVYn71q19l/Pjx29w+duzYLFy48BUvCgAAAAAAYHewXSFm5cqV6d279za39+rVK0899dQrXhQAAAAAAMDuYLtCzGtf+9o88sgj29z+8MMPZ8iQIa94UQAAAAAAALuD7Qox//RP/5R/+7d/y1//+tettm3YsCGf/vSnM3HixG5bHAAAAAAAwK6s1/YM/+u//mtuu+22vOENb8h5552X4cOHp66uLkuWLMl//Md/ZPPmzfnUpz5Vaq0AAAAAAAC7lO0KMYMHD868efPy4Q9/OBdffHGq1WqSpK6uLuPGjctXv/rVDB48uMhCAQAAAAAAdjXbFWKSZOjQobnzzjuzevXq/O53v0u1Ws3BBx+cAQMGlFgfAAAAAADALmu7Q8yzBgwYkLe+9a3duRYAAAAAAIDdyl49vQAAAAAAAIDdlRADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQSI+GmJ/97Gc5+eST09TUlLq6utx+++1dtp955pmpq6vrcjvqqKO6zHR2dmbq1KkZNGhQ+vbtm0mTJuWJJ57oMrN69eq0tLSkUqmkUqmkpaUla9asKXx0AAAAAADAnq5HQ8z69etz+OGHZ8aMGducGT9+fFasWFG73XnnnV22T5s2LbNmzcrMmTMzd+7crFu3LhMnTszmzZtrM5MnT86iRYvS2tqa1tbWLFq0KC0tLcWOCwAAAAAAIEl69eSLT5gwIRMmTHjBmfr6+jQ2Nj7vtvb29nzjG9/IzTffnDFjxiRJvv3tb6e5uTl33XVXxo0blyVLlqS1tTULFizIqFGjkiTXX399Ro8encceeyzDhw/v3oMCAAAAAAD4/+z0vxFz7733pqGhIW94wxsyZcqUrFq1qrZt4cKF2bRpU8aOHVt7rKmpKSNGjMi8efOSJPPnz0+lUqlFmCQ56qijUqlUajPPp7OzMx0dHV1uAAAAAAAA22OnDjETJkzILbfckrvvvjtXXnllHnzwwRx//PHp7OxMkrS1taVPnz4ZMGBAl+cNHjw4bW1ttZmGhoat9t3Q0FCbeT6XXXZZ7TdlKpVKmpubu/HIAAAAAACAPUGPfjXZizn99NNr/x4xYkSOPPLIDB06NHfccUdOPfXUbT6vWq2mrq6udv/v/72tmee6+OKLc8EFF9Tud3R0iDEAAAAAAMB22amviHmuIUOGZOjQoXn88ceTJI2Njdm4cWNWr17dZW7VqlUZPHhwbWblypVb7eupp56qzTyf+vr69O/fv8sNAAAAAABge+xSIebpp5/O8uXLM2TIkCTJEUcckd69e2f27Nm1mRUrVmTx4sU5+uijkySjR49Oe3t7HnjggdrM/fffn/b29toMAAAAAABACT361WTr1q3L7373u9r9pUuXZtGiRRk4cGAGDhyY6dOn5z3veU+GDBmSZcuW5ZOf/GQGDRqUd7/73UmSSqWSs846KxdeeGH222+/DBw4MBdddFFGjhyZMWPGJEkOOeSQjB8/PlOmTMl1112XJDn77LMzceLEDB8+fMcfNAAAAAAAsMfo0RDz0EMP5bjjjqvdf/Y3Wc4444xce+21eeSRR/Ktb30ra9asyZAhQ3Lcccfl1ltvTb9+/WrPufrqq9OrV6+cdtpp2bBhQ0444YTceOON2XvvvWszt9xyS84///yMHTs2STJp0qTMmDFjBx0lAAAAAACwp6qrVqvVnl7ErqCjoyOVSiXt7e1+Lwa60UGfuKOnl0A3WXb5STv8Nb1/dh898f4BAAAAeCVeajfYpX4jBgAAAAAAYFcixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABTSoyHmZz/7WU4++eQ0NTWlrq4ut99+e5ft1Wo106dPT1NTU/bZZ58ce+yxefTRR7vMdHZ2ZurUqRk0aFD69u2bSZMm5Yknnugys3r16rS0tKRSqaRSqaSlpSVr1qwpfHQAAAAAAMCerkdDzPr163P44YdnxowZz7v9iiuuyFVXXZUZM2bkwQcfTGNjY0488cSsXbu2NjNt2rTMmjUrM2fOzNy5c7Nu3bpMnDgxmzdvrs1Mnjw5ixYtSmtra1pbW7No0aK0tLQUPz4AAAAAAGDP1qsnX3zChAmZMGHC826rVqu55ppr8qlPfSqnnnpqkuSmm27K4MGD853vfCfnnHNO2tvb841vfCM333xzxowZkyT59re/nebm5tx1110ZN25clixZktbW1ixYsCCjRo1Kklx//fUZPXp0HnvssQwfPnzHHCwAAAAAALDH2Wl/I2bp0qVpa2vL2LFja4/V19fnmGOOybx585IkCxcuzKZNm7rMNDU1ZcSIEbWZ+fPnp1Kp1CJMkhx11FGpVCq1mefT2dmZjo6OLjcAAAAAAIDtsdOGmLa2tiTJ4MGDuzw+ePDg2ra2trb06dMnAwYMeMGZhoaGrfbf0NBQm3k+l112We03ZSqVSpqbm1/R8QAAAAAAAHuenTbEPKuurq7L/Wq1utVjz/Xcmeebf7H9XHzxxWlvb6/dli9fvp0rBwAAAAAA9nQ7bYhpbGxMkq2uWlm1alXtKpnGxsZs3Lgxq1evfsGZlStXbrX/p556aqurbf5efX19+vfv3+UGAAAAAACwPXbaEDNs2LA0NjZm9uzZtcc2btyYOXPm5Oijj06SHHHEEendu3eXmRUrVmTx4sW1mdGjR6e9vT0PPPBAbeb+++9Pe3t7bQYAAAAAAKCEXj354uvWrcvvfve72v2lS5dm0aJFGThwYA488MBMmzYtl156aQ4++OAcfPDBufTSS/PqV786kydPTpJUKpWcddZZufDCC7Pffvtl4MCBueiiizJy5MiMGTMmSXLIIYdk/PjxmTJlSq677rokydlnn52JEydm+PDhO/6gAQAAAACAPUaPhpiHHnooxx13XO3+BRdckCQ544wzcuONN+ZjH/tYNmzYkI985CNZvXp1Ro0alZ/85Cfp169f7TlXX311evXqldNOOy0bNmzICSeckBtvvDF77713beaWW27J+eefn7FjxyZJJk2alBkzZuygowQAAAAAAPZUddVqtdrTi9gVdHR0pFKppL293e/FQDc66BN39PQS6CbLLj9ph7+m98/uoyfePwAAAACvxEvtBjvtb8QAAAAAAADs6oQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQnr19ALY9R30iTt6egl0k2WXn9TTSwAAAAAA2K24IgYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKCQnTrETJ8+PXV1dV1ujY2Nte3VajXTp09PU1NT9tlnnxx77LF59NFHu+yjs7MzU6dOzaBBg9K3b99MmjQpTzzxxI4+FAAAAAAAYA+0U4eYJHnjG9+YFStW1G6PPPJIbdsVV1yRq666KjNmzMiDDz6YxsbGnHjiiVm7dm1tZtq0aZk1a1ZmzpyZuXPnZt26dZk4cWI2b97cE4cDAAAAAADsQXr19AJeTK9evbpcBfOsarWaa665Jp/61Kdy6qmnJkluuummDB48ON/5zndyzjnnpL29Pd/4xjdy8803Z8yYMUmSb3/722lubs5dd92VcePG7dBjAQAAAAAA9iw7/RUxjz/+eJqamjJs2LC8973vze9///skydKlS9PW1paxY8fWZuvr63PMMcdk3rx5SZKFCxdm06ZNXWaampoyYsSI2sy2dHZ2pqOjo8sNAAAAAABge+zUIWbUqFH51re+lR//+Me5/vrr09bWlqOPPjpPP/102trakiSDBw/u8pzBgwfXtrW1taVPnz4ZMGDANme25bLLLkulUqndmpubu/HIAAAAAACAPcFOHWImTJiQ97znPRk5cmTGjBmTO+64I8nfvoLsWXV1dV2eU61Wt3rsuV7KzMUXX5z29vbabfny5S/zKAAAAAAAgD3VTh1inqtv374ZOXJkHn/88drvxjz3ypZVq1bVrpJpbGzMxo0bs3r16m3ObEt9fX369+/f5QYAAAAAALA9dqkQ09nZmSVLlmTIkCEZNmxYGhsbM3v27Nr2jRs3Zs6cOTn66KOTJEcccUR69+7dZWbFihVZvHhxbQYAAAAAAKCUXj29gBdy0UUX5eSTT86BBx6YVatW5XOf+1w6OjpyxhlnpK6uLtOmTcull16agw8+OAcffHAuvfTSvPrVr87kyZOTJJVKJWeddVYuvPDC7Lfffhk4cGAuuuii2ledAQAAAAAAlLRTh5gnnngi73vf+/K///u/2X///XPUUUdlwYIFGTp0aJLkYx/7WDZs2JCPfOQjWb16dUaNGpWf/OQn6devX20fV199dXr16pXTTjstGzZsyAknnJAbb7wxe++9d08dFgAAAAAAsIfYqUPMzJkzX3B7XV1dpk+fnunTp29z5lWvelW+8pWv5Ctf+Uo3rw4AAAAAAOCF7VK/EQMAAAAAALArEWIAAAAAAAAK2am/mgwAoJSDPnFHTy+BbrLs8pN6egkAAACwTa6IAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAA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YMGCzJ49O88880zGjh2b9evX12Z8XgN2JS/lvJbswp/XqgB0u09/+tPVww8//Hm3bdmypdrY2Fi9/PLLa4/99a9/rVYqlerXvva1arVara5Zs6bau3fv6syZM2szf/rTn6p77bVXtbW1tVqtVqu//vWvq0mqCxYsqM3Mnz+/mqT6m9/8psBRAXuqJNVZs2bV7u/I89idd95Z3Wuvvap/+tOfajPf/e53q/X19dX29vYixwvs/p57XqtWq9Uzzjijesopp2zzOc5rwM5s1apV1STVOXPmVKtVn9eAXd9zz2vV6q79ec0VMQCFPP7442lqasqwYcPy3ve+N7///e+TJEuXLk1bW1vGjh1bm62vr88xxxyTefPmJUkWLlyYTZs2dZlpamrKiBEjajPz589PpVLJqFGjajNHHXVUKpVKbQaghB15Hps/f35GjBiRpqam2sy4cePS2dmZhQsXFj1OYM9z7733pqGhIW94wxsyZcqUrFq1qrbNeQ3YmbW3tydJBg4cmMTnNWDX99zz2rN21c9rQgxAAaNGjcq3vvWt/PjHP87111+ftra2HH300Xn66afT1taWJBk8eHCX5wwePLi2ra2tLX369MmAAQNecKahoWGr125oaKjNAJSwI89jbW1tW73OgAED0qdPH+c6oFtNmDAht9xyS+6+++5ceeWVefDBB3P88cens7MzifMasPOqVqu54IIL8va3vz0jRoxI4vMasGt7vvNasmt/Xuv1sp4FwAuaMGFC7d8jR47M6NGj8w//8A+56aabaj8iVldX1+U51Wp1q8ee67kzzzf/UvYD0B121HnMuQ7YEU4//fTav0eMGJEjjzwyQ4cOzR133JFTTz11m89zXgN62nnnnZeHH344c+fO3Wqbz2vArmhb57Vd+fOaK2IAdoC+fftm5MiRefzxx9PY2JgkWxX0VatW1Wp7Y2NjNm7cmNWrV7/gzMqVK7d6raeeemqrag/QnXbkeayxsXGr11m9enU2bdrkXAcUNWTIkAwdOjSPP/54Euc1YOc0derU/OhHP8o999yTAw44oPa4z2vArmpb57Xnsyt9XhNiAHaAzs7OLFmyJEOGDMmwYcPS2NiY2bNn17Zv3Lgxc+bMydFHH50kOeKII9K7d+8uMytWrMjixYtrM6NHj057e3seeOCB2sz999+f9vb22gxACTvyPDZ69OgsXrw4K1asqM385Cc/SX19fY444oiixwns2Z5++uksX748Q4YMSeK8BuxcqtVqzjvvvNx22225++67M2zYsC7bfV4DdjUvdl57PrvU57UqAN3uwgsvrN57773V3//+99UFCxZUJ06cWO3Xr1912bJl1Wq1Wr388surlUqletttt1UfeeSR6vve977qkCFDqh0dHbV9fOhDH6oecMAB1bvuuqv6i1/8onr88cdXDz/88OozzzxTmxk/fnz1sMMOq86fP786f/786siRI6sTJ07c4ccL7H7Wrl1b/eUvf1n95S9/WU1Sveqqq6q//OUvq3/4wx+q1eqOO48988wz1REjRlRPOOGE6i9+8YvqXXfdVT3ggAOq55133o77YwC7hRc6r61du7Z64YUXVufNm1ddunRp9Z577qmOHj26+trXvtZ5DdgpffjDH65WKpXqvffeW12xYkXt9pe//KU24/MasCt5sfParv55TYgBKOD000+vDhkypNq7d+9qU1NT9dRTT60++uijte1btmypfvrTn642NjZW6+vrq+985zurjzzySJd9bNiwoXreeedVBw4cWN1nn32qEydOrP7xj3/sMvP0009X3//+91f79etX7devX/X9739/dfXq1TviEIHd3D333FNNstXtjDPOqFarO/Y89oc//KF60kknVffZZ5/qwIEDq+edd171r3/9a8nDB3ZDL3Re+8tf/lIdO3Zsdf/996/27t27euCBB1bPOOOMrc5ZzmvAzuL5zmdJqjfccENtxuc1YFfyYue1Xf3zWt3/d5AAAAAAAAB0M78RAwAAAAAAUIgQAwAAAAAAUIgQAwAAAAAAUIgQAwAAAAAAUIgQAwAAAAAAUIgQAwAAAAAAUIgQAwAAAAAAUIgQAwAAdItjjz0206ZN6+llAAAA7FSEGAAAoIszzzwzdXV1qaurS+/evfO6170uF110UdavX/+Cz7vtttvy7//+78XWde+999bWVVdXl/333z8TJkzIr371q25/rVWrVuWcc87JgQcemPr6+jQ2NmbcuHGZP39+t7/WjvLcv9+zt3/913/tlv0vW7YsdXV1WbRoUbfsDwAAdhe9enoBAADAzmf8+PG54YYbsmnTptx333354Ac/mPXr1+faa6/danbTpk3p3bt3Bg4cuEPW9thjj6V///754x//mPPPPz/jx4/Pb37zm1Qqle3e18aNG9OnT5+tHn/Pe96TTZs25aabbsrrXve6rFy5Mj/96U/z5z//uTsO4RXZ1ppfqmf/fs/ad999u2NZAADANrgiBgAA2MqzV4E0Nzdn8uTJef/735/bb789STJ9+vS86U1vyje/+c287nWvS319farV6lZfTdbZ2ZmPfexjaW5uTn19fQ4++OB84xvfqG3/9a9/nX/6p3/Kvvvum8GDB6elpSX/+7//+6Jra2hoSGNjY972trflyiuvTFtbWxYsWJAkmTdvXt75zndmn332SXNzc84///wuV/IcdNBB+dznPpczzzwzlUolU6ZM2Wr/a9asydy5c/OFL3whxx13XIYOHZq3ve1tufjii3PSSSfV5h5//PG8853vzKte9aoceuihmT17durq6mp/p2evQFmzZk3tOYsWLUpdXV2WLVuWJHn66afzvve9LwcccEBe/epXZ+TIkfnud7/bZT3HHntszjvvvFxwwQUZNGhQTjzxxG75+z17ezbE/OlPf8rpp5+eAQMGZL/99sspp5xSW+ezbrjhhhxyyCF51atelX/8x3/MV7/61dq2YcOGJUne/OY3p66uLscee+yLrgUAAPYEQgwAAPCi9tlnn2zatKl2/3e/+12+973v5Qc/+ME2v4rqX/7lXzJz5sx8+ctfzpIlS/K1r32t9j/9V6xYkWOOOSZvetOb8tBDD6W1tTUrV67Maaedtt3rSv52Vc4jjzyScePG5dRTT83DDz+cW2+9NXPnzs15553X5Tlf/OIXM2LEiCxcuDCXXHLJVvvcd999s+++++b2229PZ2fn877uli1bcuqpp2bvvffOggUL8rWvfS0f//jHt2vtSfLXv/41RxxxRP7rv/4rixcvztlnn52Wlpbcf//9XeZuuumm9OrVKz//+c9z3XXXddvf71l/+ctfctxxx2XffffNz372s8ydOzf77rtvxo8fn40bNyZJrr/++nzqU5/K5z//+SxZsiSXXnppLrnkktx0001JkgceeCBJctddd2XFihW57bbbXtZaAABgd+OryQAAgBf0wAMP5Dvf+U5OOOGE2mMbN27MzTffnP333/95n/Pb3/423/ve9zJ79uyMGTMmSfK6172utv3aa6/NW97yllx66aW1x775zW+mubk5v/3tb/OGN7zhRdf19NNP5zOf+Uz69euXt73tbbnooosyefLk2lU5Bx98cL785S/nmGOOybXXXptXvepVSZLjjz8+F1100Tb326tXr9x4442ZMmVKvva1r+Utb3lLjjnmmLz3ve/NYYcdluRvsWHJkiVZtmxZDjjggCTJpZdemgkTJrzouv/ea1/72i5rmTp1alpbW/P9738/o0aNqj3++te/PldccUXt/r/927+97L/fs+t91h/+8If88Ic/zF577ZWvf/3rqaurS/K3q19e85rX5N57783YsWPz7//+77nyyitz6qmnJvnbFTC//vWvc9111+WMM86ovRf222+/NDY2btffAQAAdmdCDAAAsJX/+q//yr777ptnnnkmmzZtyimnnJKvfOUrte1Dhw7dZoRJ/vYVXHvvvXeOOeaY592+cOHC3HPPPc/7+yT/8z//85JCwvr163PwwQfn+9//fhoaGrJw4cL87ne/yy233FKbrVar2bJlS5YuXZpDDjkkSXLkkUe+8MHnb78Rc9JJJ+W+++7L/Pnz09ramiuuuCJf//rXc+aZZ2bJkiU58MADu0SN0aNHv+h+n2vz5s25/PLLc+utt+ZPf/pTOjs709nZmb59+3aZe+6aX8nf77777ku/fv1q9wcMGFD72/3948nfrtj5n//5nzz11FNZvnx5zjrrrC5f5/bMM8+8rN/mAQCAPYkQAwAAbOW4447Ltddem969e6epqSm9e/fusv25oeC5nv3KsG3ZsmVLTj755HzhC1/YatuQIUNe8Ln33Xdf+vfvn/3337/Lj85v2bIl55xzTs4///ytnnPggQe+5LU/61WvelVOPPHEnHjiifm3f/u3fPCDH8ynP/3pnHnmmalWq1vNP3slybP22utv3wT997N///VuSXLllVfm6quvzjXXXJORI0emb9++mTZtWu3rwLa15lfy9xs2bFhe85rXbLW/I444okvEetb++++fv/71r0n+9vVkf3+lTpLsvffeL/h6AACwpxNiAACArfTt2zevf/3rX/bzR44cmS1btmTOnDm1ryb7e295y1vygx/8IAcddFB69dq+/yx5vpDw7D4fffTRV7TuF3LooYfm9ttvr/37j3/8Y5588sk0NTUlSebPn99l/tkrhlasWJEBAwYkyVa/p3PffffllFNOyT//8z8n+VsQefzxx2tX72zLK/n7bWt/t956axoaGrrErWdVKpW89rWvze9///u8//3vf9599OnTJ8nfrvIBAAD+//bq6QUAAAC7n4MOOihnnHFGPvCBD+T222/P0qVLc++99+Z73/tekuTcc8/Nn//857zvfe/LAw88kN///vf5yU9+kg984AMv+3/kf/zjH8/8+fNz7rnnZtGiRXn88cfzox/9KFOnTt2u/Tz99NM5/vjj8+1vfzsPP/xwli5dmu9///u54oorcsoppyRJxowZk+HDh+df/uVf8qtf/Sr33XdfPvWpT3XZz+tf//o0Nzdn+vTp+e1vf5s77rgjV1555VYzs2fPzrx587JkyZKcc845aWtre9E1dvff7/3vf38GDRqUU045Jffdd1+WLl2aOXPm5KMf/WieeOKJJMn06dNz2WWX5Utf+lJ++9vf5pFHHskNN9yQq666KknS0NCQffbZJ62trVm5cmXa29u3ex0AALA7EmIAAIAirr322vyf//N/8pGPfCT/+I//mClTpmT9+vVJkqampvz85z/P5s2bM27cuIwYMSIf/ehHU6lUal/ptb0OO+ywzJkzJ48//nje8Y535M1vfnMuueSSF/2qrufad999M2rUqFx99dV55zvfmREjRuSSSy7JlClTMmPGjCR/+9qxWbNmpbOzM29729vywQ9+MJ///Oe77Kd379757ne/m9/85jc5/PDD84UvfCGf+9znusxccsklectb3pJx48bl2GOPTWNjY971rne96Bq7++/36le/Oj/72c9y4IEH5tRTT80hhxySD3zgA9mwYUPtCpkPfvCD+frXv54bb7wxI0eOzDHHHJMbb7wxw4YNS5L06tUrX/7yl3PdddelqampFq0AAGBPV1d9vi83BgAAYLvV1dVl1qxZLymmAAAAewZXxAAAAAAAABQixAAAAAAAABTSq6cXAAAAsLvwzc8AAMBzuSIGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgkP8fIW2B0LkHgAcAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 2000x1000 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib\n",
    "matplotlib.rcParams[\"figure.figsize\"] = (20,10)\n",
    "plt.hist(df8.price_per_sqft,rwidth=0.8)\n",
    "plt.xlabel(\"Price Per Square Feet\")\n",
    "plt.ylabel(\"Count\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "id": "a26184e1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 4.,  3.,  2.,  5.,  8.,  1.,  6.,  7.,  9., 12., 16., 13.])"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df8.bath.unique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "id": "38bc530e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Count')"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABmIAAANBCAYAAADzwKFIAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAABGOklEQVR4nO3de7TVdb3v/9eSm4iwFIy1WlsU3BGCeNvqRtAEtwiWhJ7OSYs2abq95HUlXne5RdtxsS1q4n1ndrxk45wTZjeSTEnDK0bekMwwMUWscAFGgDB/fzScv5Z4A/kwhfV4jDHHaH6/nznn+wvfsUbLJ9/5ratUKpUAAAAAAACwwW1R6wEAAAAAAAA2V0IMAAAAAABAIUIMAAAAAABAIUIMAAAAAABAIUIMAAAAAABAIUIMAAAAAABAIUIMAAAAAABAIUIMAAAAAABAIe1rPcCmYs2aNXnxxRfTtWvX1NXV1XocAAAAAACghiqVSpYuXZqmpqZsscXbX/cixLxHL774Ynr16lXrMQAAAAAAgA+QBQsWZPvtt3/b/ULMe9S1a9ckf/sD7datW42nAQAAAAAAamnJkiXp1atXtR+8HSHmPXrj68i6desmxAAAAAAAAEnyrrczefsvLQMAAAAAAOB9EWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKaV/rAdj09T73R7UegQ3kuUmH1noEAAAAAIDNiitiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAACvnAhJiJEyemrq4uzc3N1W2VSiXjx49PU1NTOnfunGHDhuXJJ59s9boVK1bk1FNPzXbbbZcuXbpk9OjReeGFF1qtWbx4ccaOHZv6+vrU19dn7NixefXVVzfCUQEAAAAAAG3ZByLEPPzww7nuuuuy2267tdp+8cUXZ8qUKZk6dWoefvjhNDY25uCDD87SpUura5qbmzNt2rTcdtttue+++7Js2bKMGjUqq1evrq4ZM2ZM5syZk+nTp2f69OmZM2dOxo4du9GODwAAAAAAaJtqHmKWLVuWz33uc7n++uuz7bbbVrdXKpVcdtll+fKXv5xPfepTGThwYL797W/nL3/5S2699dYkSUtLS775zW/mkksuyfDhw7Pnnnvm5ptvzuOPP56f/exnSZK5c+dm+vTp+e///u8MHjw4gwcPzvXXX58f/vCHmTdvXk2OGQAAAAAAaBtqHmJOPvnkHHrooRk+fHir7fPnz8/ChQszYsSI6rZOnTpl6NChmTVrVpJk9uzZWbVqVas1TU1NGThwYHXN/fffn/r6+gwaNKi6Zt999019fX11zVtZsWJFlixZ0uoBAAAAAACwLtrX8sNvu+22zJ49O4888sha+xYuXJgkaWhoaLW9oaEhv//976trOnbs2OpKmjfWvPH6hQsXpmfPnmu9f8+ePatr3srEiRNz4YUXrtsBAQAAAAAA/J2aXRGzYMGCnH766bnllluy5ZZbvu26urq6Vs8rlcpa297szWveav27vc95552XlpaW6mPBggXv+JkAAAAAAABvVrMQM3v27CxatCh77bVX2rdvn/bt22fmzJn5xje+kfbt21evhHnzVSuLFi2q7mtsbMzKlSuzePHid1zz8ssvr/X5r7zyylpX2/y9Tp06pVu3bq0eAAAAAAAA66JmIeaggw7K448/njlz5lQfe++9dz73uc9lzpw52WmnndLY2JgZM2ZUX7Ny5crMnDkzQ4YMSZLstdde6dChQ6s1L730Up544onqmsGDB6elpSUPPfRQdc2DDz6YlpaW6hoAAAAAAIASanaPmK5du2bgwIGttnXp0iU9evSobm9ubs6ECRPSt2/f9O3bNxMmTMhWW22VMWPGJEnq6+tz7LHHZty4cenRo0e6d++eM888M7vuumuGDx+eJOnfv38OOeSQHHfccbn22muTJMcff3xGjRqVfv36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AAAAAGCTtUFDzP33358tt9xyQ74lAAAAAADAJmu9vprsU5/6VKvnlUolL730Uh555JGcf/75G2QwAAAAAACATd16hZj6+vpWz7fYYov069cvF110UUaMGLFBBgMAAAAAANjUrVeI+da3vrWh5wAAAAAAANjsrFeIecPs2bMzd+7c1NXVZcCAAdlzzz031FwAAAAAAACbvPUKMYsWLcpnPvOZ3HPPPdlmm21SqVTS0tKSAw88MLfddls+9KEPbeg5AQAAAAAANjlbrM+LTj311CxZsiRPPvlk/vznP2fx4sV54oknsmTJkpx22mkbekYAAAAAAIBN0npdETN9+vT87Gc/S//+/avbBgwYkCuvvDIjRozYYMMBAAAAAABsytbripg1a9akQ4cOa23v0KFD1qxZ876HAgAAAAAA2BysV4j5l3/5l5x++ul58cUXq9v+8Ic/5Etf+lIOOuigDTYcAAAAAADApmy9QszUqVOzdOnS9O7dO//4j/+Yj3zkI+nTp0+WLl2aK664YkPPCAAAAAAAsElar3vE9OrVK48++mhmzJiRp59+OpVKJQMGDMjw4cM39HwAAAAAAACbrHW6IubnP/95BgwYkCVLliRJDj744Jx66qk57bTTss8++2SXXXbJvffeW2RQAAAAAACATc06hZjLLrssxx13XLp167bWvvr6+pxwwgmZMmXKBhsOAAAAAABgU7ZOIebXv/51DjnkkLfdP2LEiMyePft9DwUAAAAAALA5WKcQ8/LLL6dDhw5vu799+/Z55ZVX3vdQAAAAAAAAm4N1CjH/8A//kMcff/xt9z/22GP58Ic//L6HAgAAAAAA2BysU4j5xCc+kf/4j//IX//617X2LV++PBdccEFGjRq1wYYDAAAAAADYlLVfl8Vf+cpX8r3vfS8f/ehHc8opp6Rfv36pq6vL3Llzc+WVV2b16tX58pe/XGpWAAAAAACATco6hZiGhobMmjUrX/ziF3PeeeelUqkkSerq6jJy5MhcddVVaWhoKDIoAAAAAADApmadQkyS7Ljjjvnxj3+cxYsX57e//W0qlUr69u2bbbfdtsR8AAAAAAAAm6x1DjFv2HbbbbPPPvtsyFkAAAAAAAA2K1vUegAAAAAAAIDNlRADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQSE1DzMSJE7PPPvuka9eu6dmzZw4//PDMmzev1ZpKpZLx48enqakpnTt3zrBhw/Lkk0+2WrNixYqceuqp2W677dKlS5eMHj06L7zwQqs1ixcvztixY1NfX5/6+vqMHTs2r776aulDBAAAAAAA2rCahpiZM2fm5JNPzgMPPJAZM2bk9ddfz4gRI/Laa69V11x88cWZMmVKpk6dmocffjiNjY05+OCDs3Tp0uqa5ubmTJs2Lbfddlvuu+++LFu2LKNGjcrq1aura8aMGZM5c+Zk+vTpmT59eubMmZOxY8du1OMFAAAAAADalrpKpVKp9RBveOWVV9KzZ8/MnDkzBxxwQCqVSpqamtLc3Jxzzjknyd+ufmloaMjkyZNzwgknpKWlJR/60Idy00035cgjj0ySvPjii+nVq1d+/OMfZ+TIkZk7d24GDBiQBx54IIMGDUqSPPDAAxk8eHCefvrp9OvX711nW7JkSerr69PS0pJu3bqV+0PYBPU+90e1HoEN5LlJh9Z6BAAAAACATcJ77QYfqHvEtLS0JEm6d++eJJk/f34WLlyYESNGVNd06tQpQ4cOzaxZs5Iks2fPzqpVq1qtaWpqysCBA6tr7r///tTX11cjTJLsu+++qa+vr655sxUrVmTJkiWtHgAAAAAAAOviAxNiKpVKzjjjjOy///4ZOHBgkmThwoVJkoaGhlZrGxoaqvsWLlyYjh07Ztttt33HNT179lzrM3v27Fld82YTJ06s3k+mvr4+vXr1en8HCAAAAAAAtDkfmBBzyimn5LHHHst3vvOdtfbV1dW1el6pVNba9mZvXvNW69/pfc4777y0tLRUHwsWLHgvhwEAAAAAAFD1gQgxp556au64447cfffd2X777avbGxsbk2Stq1YWLVpUvUqmsbExK1euzOLFi99xzcsvv7zW577yyitrXW3zhk6dOqVbt26tHgAAAAAAAOuipiGmUqnklFNOyfe+9738/Oc/T58+fVrt79OnTxobGzNjxozqtpUrV2bmzJkZMmRIkmSvvfZKhw4dWq156aWX8sQTT1TXDB48OC0tLXnooYeqax588MG0tLRU1wAAAAAAAGxo7Wv54SeffHJuvfXWfP/730/Xrl2rV77U19enc+fOqaurS3NzcyZMmJC+ffumb9++mTBhQrbaaquMGTOmuvbYY4/NuHHj0qNHj3Tv3j1nnnlmdt111wwfPjxJ0r9//xxyyCE57rjjcu211yZJjj/++IwaNSr9+vWrzcEDAAAAAACbvZqGmKuvvjpJMmzYsFbbv/Wtb+Xoo49Okpx99tlZvnx5TjrppCxevDiDBg3KnXfema5du1bXX3rppWnfvn2OOOKILF++PAcddFBuvPHGtGvXrrrmlltuyWmnnZYRI0YkSUaPHp2pU6eWPUAAAAAAAKBNq6tUKpVaD7EpWLJkSerr69PS0uJ+MW/S+9wf1XoENpDnJh1a6xEAAAAAADYJ77Ub1PQeMQAAAAAAAJszIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKCQ9rUeAGjbep/7o1qPwAby3KRDaz0CAAAAAHzguCIGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgkJqGmF/84hf55Cc/maamptTV1eX2229vtb9SqWT8+PFpampK586dM2zYsDz55JOt1qxYsSKnnnpqtttuu3Tp0iWjR4/OCy+80GrN4sWLM3bs2NTX16e+vj5jx47Nq6++WvjoAAAAAACAtq6mIea1117L7rvvnqlTp77l/osvvjhTpkzJ1KlT8/DDD6exsTEHH3xwli5dWl3T3NycadOm5bbbbst9992XZcuWZdSoUVm9enV1zZgxYzJnzpxMnz4906dPz5w5czJ27NjixwcAAAAAALRt7Wv54R//+Mfz8Y9//C33VSqVXHbZZfnyl7+cT33qU0mSb3/722loaMitt96aE044IS0tLfnmN7+Zm266KcOHD0+S3HzzzenVq1d+9rOfZeTIkZk7d26mT5+eBx54IIMGDUqSXH/99Rk8eHDmzZuXfv36bZyDBQAAAAAA2pwP7D1i5s+fn4ULF2bEiBHVbZ06dcrQoUMza9asJMns2bOzatWqVmuampoycODA6pr7778/9fX11QiTJPvuu2/q6+urawAAAAAAAEqo6RUx72ThwoVJkoaGhlbbGxoa8vvf/766pmPHjtl2223XWvPG6xcuXJiePXuu9f49e/asrnkrK1asyIoVK6rPlyxZsn4HAgAAAAAAtFkf2Cti3lBXV9fqeaVSWWvbm715zVutf7f3mThxYurr66uPXr16rePkAAAAAABAW/eBDTGNjY1JstZVK4sWLapeJdPY2JiVK1dm8eLF77jm5ZdfXuv9X3nllbWutvl75513XlpaWqqPBQsWvK/jAQAAAAAA2p4PbIjp06dPGhsbM2PGjOq2lStXZubMmRkyZEiSZK+99kqHDh1arXnppZfyxBNPVNcMHjw4LS0teeihh6prHnzwwbS0tFTXvJVOnTqlW7durR4AAAAAAADroqb3iFm2bFl++9vfVp/Pnz8/c+bMSffu3bPDDjukubk5EyZMSN++fdO3b99MmDAhW221VcaMGZMkqa+vz7HHHptx48alR48e6d69e84888zsuuuuGT58eJKkf//+OeSQQ3Lcccfl2muvTZIcf/zxGTVqVPr167fxDxoAAAAAAGgzahpiHnnkkRx44IHV52eccUaS5KijjsqNN96Ys88+O8uXL89JJ52UxYsXZ9CgQbnzzjvTtWvX6msuvfTStG/fPkcccUSWL1+egw46KDfeeGPatWtXXXPLLbfktNNOy4gRI5Iko0ePztSpUzfSUQIAAAAAAG1VXaVSqdR6iE3BkiVLUl9fn5aWFl9T9ia9z/1RrUdgA3lu0qEb/TOdP5uPWpw/AAAAAFAr77UbfGDvEQMAAAAAALCpE2IAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKEWIAAAAAAAAKaV/rAQBgffU+90e1HoEN5LlJh9Z6BAAAAIAiXBEDAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQSPtaDwAAUAu9z/1RrUdgA3lu0qG1HgEAAADelitiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAACmlf6wEAAGBT0vvcH9V6BDaQ5yYdWusRAACANqBNXRFz1VVXpU+fPtlyyy2z11575d577631SAAAAAAAwGaszYSY7373u2lubs6Xv/zl/OpXv8rHPvaxfPzjH8/zzz9f69EAAAAAAIDNVJsJMVOmTMmxxx6bf/u3f0v//v1z2WWXpVevXrn66qtrPRoAAAAAALCZahP3iFm5cmVmz56dc889t9X2ESNGZNasWW/5mhUrVmTFihXV5y0tLUmSJUuWlBt0E7VmxV9qPQIbSC3Ob+fP5sP5w/vh/OH92Njnj3Nn81GLnz0DL/jpRv9MynjiwpG1HgHWiZ8/mw8/fwA+ON74naJSqbzjujYRYv74xz9m9erVaWhoaLW9oaEhCxcufMvXTJw4MRdeeOFa23v16lVkRvggqL+s1hOwKXP+8H44f3g/nD+sL+cO74fzB6gVP38APniWLl2a+vr6t93fJkLMG+rq6lo9r1Qqa217w3nnnZczzjij+nzNmjX585//nB49erzta2B9LVmyJL169cqCBQvSrVu3Wo8DG41zn7bM+U9b5vynLXP+01Y592nLnP+0ZZv7+V+pVLJ06dI0NTW947o2EWK22267tGvXbq2rXxYtWrTWVTJv6NSpUzp16tRq2zbbbFNqREiSdOvWbbP8gQTvxrlPW+b8py1z/tOWOf9pq5z7tGXOf9qyzfn8f6crYd6wxUaYo+Y6duyYvfbaKzNmzGi1fcaMGRkyZEiNpgIAAAAAADZ3beKKmCQ544wzMnbs2Oy9994ZPHhwrrvuujz//PM58cQTaz0aAAAAAACwmWozIebII4/Mn/70p1x00UV56aWXMnDgwPz4xz/OjjvuWOvRIJ06dcoFF1yw1tfhwebOuU9b5vynLXP+05Y5/2mrnPu0Zc5/2jLn/9/UVSqVSq2HAAAAAAAA2By1iXvEAAAAAAAA1IIQAwAAAAAAUIgQAwAAAAAAUIgQAwAAAAAAUIgQAzUyceLE7LPPPunatWt69uyZww8/PPPmzav1WFATEydOTF1dXZqbm2s9CmwUf/jDH/Kv//qv6dGjR7baaqvssccemT17dq3HgqJef/31fOUrX0mfPn3SuXPn7LTTTrnooouyZs2aWo8GG9wvfvGLfPKTn0xTU1Pq6upy++23t9pfqVQyfvz4NDU1pXPnzhk2bFiefPLJ2gwLG9g7nf+rVq3KOeeck1133TVdunRJU1NTPv/5z+fFF1+s3cCwAb3bz/+/d8IJJ6Suri6XXXbZRpsPSnkv5/7cuXMzevTo1NfXp2vXrtl3333z/PPPb/xha0SIgRqZOXNmTj755DzwwAOZMWNGXn/99YwYMSKvvfZarUeDjerhhx/Oddddl912263Wo8BGsXjx4uy3337p0KFDfvKTn+Spp57KJZdckm222abWo0FRkydPzjXXXJOpU6dm7ty5ufjii/P1r389V1xxRa1Hgw3utddey+67756pU6e+5f6LL744U6ZMydSpU/Pwww+nsbExBx98cJYuXbqRJ4UN753O/7/85S959NFHc/755+fRRx/N9773vfzmN7/J6NGjazApbHjv9vP/DbfffnsefPDBNDU1baTJoKx3O/efffbZ7L///tl5551zzz335Ne//nXOP//8bLnllht50tqpq1QqlVoPASSvvPJKevbsmZkzZ+aAAw6o9TiwUSxbtiz/9E//lKuuuir/+Z//mT322MO/BmKzd+655+aXv/xl7r333lqPAhvVqFGj0tDQkG9+85vVbf/zf/7PbLXVVrnppptqOBmUVVdXl2nTpuXwww9P8rerYZqamtLc3JxzzjknSbJixYo0NDRk8uTJOeGEE2o4LWxYbz7/38rDDz+cf/7nf87vf//77LDDDhtvOCjs7c7/P/zhDxk0aFB++tOf5tBDD01zc7Nvh2Cz8lbn/mc+85l06NChTf//flfEwAdES0tLkqR79+41ngQ2npNPPjmHHnpohg8fXutRYKO54447svfee+fTn/50evbsmT333DPXX399rceC4vbff//cdddd+c1vfpMk+fWvf5377rsvn/jEJ2o8GWxc8+fPz8KFCzNixIjqtk6dOmXo0KGZNWtWDSeD2mhpaUldXZ2rg2kT1qxZk7Fjx+ass87KLrvsUutxYKNYs2ZNfvSjH+WjH/1oRo4cmZ49e2bQoEHv+NV9myMhBj4AKpVKzjjjjOy///4ZOHBgrceBjeK2227L7NmzM3HixFqPAhvV7373u1x99dXp27dvfvrTn+bEE0/Maaedlv/9v/93rUeDos4555x89rOfzc4775wOHTpkzz33THNzcz772c/WejTYqBYuXJgkaWhoaLW9oaGhug/air/+9a8599xzM2bMmHTr1q3W40BxkydPTvv27XPaaafVehTYaBYtWpRly5Zl0qRJOeSQQ3LnnXfmf/yP/5FPfepTmTlzZq3H22ja13oAIDnllFPy2GOP5b777qv1KLBRLFiwIKeffnruvPPONvV9oJD87V8D7b333pkwYUKSZM8998yTTz6Zq6++Op///OdrPB2U893vfjc333xzbr311uyyyy6ZM2dOmpub09TUlKOOOqrW48FGV1dX1+p5pVJZaxtszlatWpXPfOYzWbNmTa666qpajwPFzZ49O5dffnkeffRRP+9pU9asWZMkOeyww/KlL30pSbLHHntk1qxZueaaazJ06NBajrfRuCIGauzUU0/NHXfckbvvvjvbb799rceBjWL27NlZtGhR9tprr7Rv3z7t27fPzJkz841vfCPt27fP6tWraz0iFPPhD384AwYMaLWtf//+ef7552s0EWwcZ511Vs4999x85jOfya677pqxY8fmS1/6kisjaXMaGxuTZK2rXxYtWrTWVTKwuVq1alWOOOKIzJ8/PzNmzHA1DG3Cvffem0WLFmWHHXao/h78+9//PuPGjUvv3r1rPR4Us91226V9+/Zt/vdgV8RAjVQqlZx66qmZNm1a7rnnnvTp06fWI8FGc9BBB+Xxxx9vte0LX/hCdt5555xzzjlp165djSaD8vbbb7/Mmzev1bbf/OY32XHHHWs0EWwcf/nLX7LFFq3/HVi7du2q/0IO2oo+ffqksbExM2bMyJ577pkkWblyZWbOnJnJkyfXeDoo740I88wzz+Tuu+9Ojx49aj0SbBRjx45d6/6oI0eOzNixY/OFL3yhRlNBeR07dsw+++zT5n8PFmKgRk4++eTceuut+f73v5+uXbtW/0VcfX19OnfuXOPpoKyuXbuudT+kLl26pEePHu6TxGbvS1/6UoYMGZIJEybkiCOOyEMPPZTrrrsu1113Xa1Hg6I++clP5mtf+1p22GGH7LLLLvnVr36VKVOm5Jhjjqn1aLDBLVu2LL/97W+rz+fPn585c+ake/fu2WGHHdLc3JwJEyakb9++6du3byZMmJCtttoqY8aMqeHUsGG80/nf1NSU//W//lceffTR/PCHP8zq1aurvwt37949HTt2rNXYsEG828//N4fHDh06pLGxMf369dvYo8IG9W7n/llnnZUjjzwyBxxwQA488MBMnz49P/jBD3LPPffUbuiNrK5SqVRqPQS0RW/3faDf+ta3cvTRR2/cYeADYNiwYdljjz1y2WWX1XoUKO6HP/xhzjvvvDzzzDPp06dPzjjjjBx33HG1HguKWrp0ac4///xMmzYtixYtSlNTUz772c/mP/7jP/yHNzY799xzTw488MC1th911FG58cYbU6lUcuGFF+baa6/N4sWLM2jQoFx55ZX+QQqbhXc6/8ePH/+23wZx9913Z9iwYYWng7Le7ef/m/Xu3TvNzc1pbm4uPxwU9F7O/RtuuCETJ07MCy+8kH79+uXCCy/MYYcdtpEnrR0hBgAAAAAAoJAt3n0JAAAAAAAA60OIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAau65555LXV1d5syZU+tRqp5++unsu+++2XLLLbPHHnu85Zphw4alubm5yOeXfG8AAGDjEWIAAIAcffTRqaury6RJk1ptv/3221NXV1ejqWrrggsuSJcuXTJv3rzcddddxT7nnnvuSV1dXV599dVinwEAANSOEAMAACRJttxyy0yePDmLFy+u9SgbzMqVK9f7tc8++2z233//7LjjjunRo8cGnKqcVatW1XoEAADgTYQYAAAgSTJ8+PA0NjZm4sSJb7tm/Pjxa31N12WXXZbevXtXnx999NE5/PDDM2HChDQ0NGSbbbbJhRdemNdffz1nnXVWunfvnu233z433HDDWu//9NNPZ8iQIdlyyy2zyy675J577mm1/6mnnsonPvGJbL311mloaMjYsWPzxz/+sbp/2LBhOeWUU3LGGWdku+22y8EHH/yWx7FmzZpcdNFF2X777dOpU6fssccemT59enV/XV1dZs+enYsuuih1dXUZP3782/6ZvP766znllFOyzTbbpEePHvnKV76SSqVS3X/zzTdn7733TteuXdPY2JgxY8Zk0aJFSf72lWwHHnhgkmTbbbdNXV1djj766FZznn322enevXsaGxvXmqOuri7XXHNNDjvssHTp0iX/+Z//mSS5+uqr84//+I/p2LFj+vXrl5tuuqnV655//vkcdthh2XrrrdOtW7ccccQRefnll6v73/h7vuGGG7LDDjtk6623zhe/+MWsXr06F198cRobG9OzZ8987Wtfa/W+48ePzw477JBOnTqlqakpp5122tv+uQEAQFshxAAAAEmSdu3aZcKECbniiivywgsvvK/3+vnPf54XX3wxv/jFLzJlypSMHz8+o0aNyrbbbpsHH3wwJ554Yk488cQsWLCg1evOOuusjBs3Lr/61a8yZMiQjB49On/605+SJC+99FKGDh2aPfbYI4888kimT5+el19+OUcccUSr9/j2t7+d9u3b55e//GWuvfbat5zv8ssvzyWXXJL/+q//ymOPPZaRI0dm9OjReeaZZ6qftcsuu2TcuHF56aWXcuaZZ77tsb7xeQ8++GC+8Y1v5NJLL81///d/V/evXLkyX/3qV/PrX/86t99+e+bPn1+NLb169cr/+3//L0kyb968vPTSS7n88stbvXeXLl3y4IMP5uKLL85FF12UGTNmtPr8Cy64IIcddlgef/zxHHPMMZk2bVpOP/30jBs3Lk888UROOOGEfOELX8jdd9+dJKlUKjn88MPz5z//OTNnzsyMGTPy7LPP5sgjj2z1vs8++2x+8pOfZPr06fnOd76TG264IYceemheeOGFzJw5M5MnT85XvvKVPPDAA0mS//t//28uvfTSXHvttXnmmWdy++23Z9ddd33bPzcAAGgzKgAAQJt31FFHVQ477LBKpVKp7LvvvpVjjjmmUqlUKtOmTav8/a8NF1xwQWX33Xdv9dpLL720suOOO7Z6rx133LGyevXq6rZ+/fpVPvaxj1Wfv/7665UuXbpUvvOd71QqlUpl/vz5lSSVSZMmVdesWrWqsv3221cmT55cqVQqlfPPP78yYsSIVp+9YMGCSpLKvHnzKpVKpTJ06NDKHnvs8a7H29TUVPna177Wats+++xTOemkk6rPd99998oFF1zwju8zdOjQSv/+/Str1qypbjvnnHMq/fv3f9vXPPTQQ5UklaVLl1YqlUrl7rvvriSpLF68eK333n///dea8Zxzzqk+T1Jpbm5utWbIkCGV4447rtW2T3/605VPfOITlUqlUrnzzjsr7dq1qzz//PPV/U8++WQlSeWhhx6qVCp/+3veaqutKkuWLKmuGTlyZKV3795r/b1OnDixUqlUKpdccknlox/9aGXlypVve+wAANAWuSIGAABoZfLkyfn2t7+dp556ar3fY5dddskWW/z/v240NDS0ujqiXbt26dGjR/Urut4wePDg6v9u37599t5778ydOzdJMnv27Nx9993Zeuutq4+dd945yd+u3njD3nvv/Y6zLVmyJC+++GL222+/Vtv322+/6meti3333Td1dXWtjuGZZ57J6tWrkyS/+tWvcthhh2XHHXdM165dM2zYsCR/+3qwd7Pbbru1ev7hD394rT+zNx/v3Llz3/HY5s6dm169eqVXr17V/QMGDMg222zT6vh79+6drl27Vp83NDRkwIABa/29vjHPpz/96Sxfvjw77bRTjjvuuEybNi2vv/76ux4jAABs7oQYAACglQMOOCAjR47Mv//7v6+1b4sttmh1/5PkrW8Q36FDh1bP6+rq3nLbmjVr3nWeNyLHmjVr8slPfjJz5sxp9XjmmWdywAEHVNd36dLlXd/z79/3DZVKZa1t79drr72WESNGZOutt87NN9+chx9+ONOmTUvyt68sezfv5c/srY73nY7t7Y7zzdvX9e+wV69emTdvXq688sp07tw5J510Ug444IC3PD8AAKAtEWIAAIC1TJw4MT/4wQ8ya9asVts/9KEPZeHCha1izJw5czbY575xv5Ekef311zN79uzqVS//9E//lCeffDK9e/fORz7ykVaP9xpfkqRbt25pamrKfffd12r7rFmz0r9///c18xvP+/btm3bt2uXpp5/OH//4x0yaNCkf+9jHsvPOO691RUvHjh2TpHoFzfvVv3//dzy2AQMG5Pnnn291f56nnnoqLS0t63X8f69z584ZPXp0vvGNb+See+7J/fffn8cff/x9vScAAGzqhBgAAGAtu+22Wz73uc/liiuuaLV92LBheeWVV3LxxRfn2WefzZVXXpmf/OQnG+xzr7zyykybNi1PP/10Tj755CxevDjHHHNMkuTkk0/On//853z2s5/NQw89lN/97ne58847c8wxx6xzxDjrrLMyefLkfPe73828efNy7rnnZs6cOTn99NPXeeYFCxbkjDPOyLx58/Kd73wnV1xxRfV9dthhh3Ts2DFXXHFFfve73+WOO+7IV7/61Vav33HHHVNXV5cf/vCHeeWVV7Js2bJ1nuHNx3bjjTfmmmuuyTPPPJMpU6bke9/7Xs4888wkyfDhw6t/v48++mgeeuihfP7zn8/QoUPf9Wvd3smNN96Yb37zm3niiSfyu9/9LjfddFM6d+6cHXfc8X0dDwAAbOqEGAAA4C199atfXetryPr375+rrroqV155ZXbfffc89NBD1f/AvyFMmjQpkydPzu67755777033//+97PddtslSZqamvLLX/4yq1evzsiRIzNw4MCcfvrpqa+vb3XfkvfitNNOy7hx4zJu3LjsuuuumT59eu6444707dt3nWf+/Oc/n+XLl+ef//mfc/LJJ+fUU0/N8ccfn+RvVxDdeOON+T//5/9kwIABmTRpUv7rv/6r1ev/4R/+IRdeeGHOPffcNDQ05JRTTlnnGf7e4Ycfnssvvzxf//rXs8suu+Taa6/Nt771req9aerq6nL77bdn2223zQEHHJDhw4dnp512yne/+9339bnbbLNNrr/++uy3337Zbbfdctddd+UHP/hBevTo8b7eFwAANnV1lTf/ZgUAAAAAAMAG4YoYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQoQYAAAAAACAQv4/FhGqDfSkAcwAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 2000x1000 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.hist(df8.bath,rwidth=0.8)\n",
    "plt.xlabel(\"Number of bathrooms\")\n",
    "plt.ylabel(\"Count\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "id": "65fd495f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>location</th>\n",
       "      <th>size</th>\n",
       "      <th>total_sqft</th>\n",
       "      <th>bath</th>\n",
       "      <th>price</th>\n",
       "      <th>bhk</th>\n",
       "      <th>price_per_sqft</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>5277</th>\n",
       "      <td>Neeladri Nagar</td>\n",
       "      <td>10 BHK</td>\n",
       "      <td>4000.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>160.0</td>\n",
       "      <td>10</td>\n",
       "      <td>4000.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8483</th>\n",
       "      <td>other</td>\n",
       "      <td>10 BHK</td>\n",
       "      <td>12000.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>525.0</td>\n",
       "      <td>10</td>\n",
       "      <td>4375.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8572</th>\n",
       "      <td>other</td>\n",
       "      <td>16 BHK</td>\n",
       "      <td>10000.0</td>\n",
       "      <td>16.0</td>\n",
       "      <td>550.0</td>\n",
       "      <td>16</td>\n",
       "      <td>5500.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9306</th>\n",
       "      <td>other</td>\n",
       "      <td>11 BHK</td>\n",
       "      <td>6000.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>150.0</td>\n",
       "      <td>11</td>\n",
       "      <td>2500.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9637</th>\n",
       "      <td>other</td>\n",
       "      <td>13 BHK</td>\n",
       "      <td>5425.0</td>\n",
       "      <td>13.0</td>\n",
       "      <td>275.0</td>\n",
       "      <td>13</td>\n",
       "      <td>5069.124424</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            location    size  total_sqft  bath  price  bhk  price_per_sqft\n",
       "5277  Neeladri Nagar  10 BHK      4000.0  12.0  160.0   10     4000.000000\n",
       "8483           other  10 BHK     12000.0  12.0  525.0   10     4375.000000\n",
       "8572           other  16 BHK     10000.0  16.0  550.0   16     5500.000000\n",
       "9306           other  11 BHK      6000.0  12.0  150.0   11     2500.000000\n",
       "9637           other  13 BHK      5425.0  13.0  275.0   13     5069.124424"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df8[df8.bath>10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "id": "07bd7517",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>location</th>\n",
       "      <th>size</th>\n",
       "      <th>total_sqft</th>\n",
       "      <th>bath</th>\n",
       "      <th>price</th>\n",
       "      <th>bhk</th>\n",
       "      <th>price_per_sqft</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1626</th>\n",
       "      <td>Chikkabanavar</td>\n",
       "      <td>4 Bedroom</td>\n",
       "      <td>2460.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>80.0</td>\n",
       "      <td>4</td>\n",
       "      <td>3252.032520</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5238</th>\n",
       "      <td>Nagasandra</td>\n",
       "      <td>4 Bedroom</td>\n",
       "      <td>7000.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>450.0</td>\n",
       "      <td>4</td>\n",
       "      <td>6428.571429</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6711</th>\n",
       "      <td>Thanisandra</td>\n",
       "      <td>3 BHK</td>\n",
       "      <td>1806.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>116.0</td>\n",
       "      <td>3</td>\n",
       "      <td>6423.034330</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8408</th>\n",
       "      <td>other</td>\n",
       "      <td>6 BHK</td>\n",
       "      <td>11338.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>1000.0</td>\n",
       "      <td>6</td>\n",
       "      <td>8819.897689</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           location       size  total_sqft  bath   price  bhk  price_per_sqft\n",
       "1626  Chikkabanavar  4 Bedroom      2460.0   7.0    80.0    4     3252.032520\n",
       "5238     Nagasandra  4 Bedroom      7000.0   8.0   450.0    4     6428.571429\n",
       "6711    Thanisandra      3 BHK      1806.0   6.0   116.0    3     6423.034330\n",
       "8408          other      6 BHK     11338.0   9.0  1000.0    6     8819.897689"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df8[df8.bath>df8.bhk+2]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "id": "0b16203c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(7239, 7)"
      ]
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df9 = df8[df8.bath<df8.bhk+2]\n",
    "df9.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "id": "243d9c3d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>location</th>\n",
       "      <th>size</th>\n",
       "      <th>total_sqft</th>\n",
       "      <th>bath</th>\n",
       "      <th>price</th>\n",
       "      <th>bhk</th>\n",
       "      <th>price_per_sqft</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1st Block Jayanagar</td>\n",
       "      <td>4 BHK</td>\n",
       "      <td>2850.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>428.0</td>\n",
       "      <td>4</td>\n",
       "      <td>15017.543860</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1st Block Jayanagar</td>\n",
       "      <td>3 BHK</td>\n",
       "      <td>1630.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>194.0</td>\n",
       "      <td>3</td>\n",
       "      <td>11901.840491</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "              location   size  total_sqft  bath  price  bhk  price_per_sqft\n",
       "0  1st Block Jayanagar  4 BHK      2850.0   4.0  428.0    4    15017.543860\n",
       "1  1st Block Jayanagar  3 BHK      1630.0   3.0  194.0    3    11901.840491"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df9.head(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "id": "d61cfae3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>location</th>\n",
       "      <th>total_sqft</th>\n",
       "      <th>bath</th>\n",
       "      <th>price</th>\n",
       "      <th>bhk</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1st Block Jayanagar</td>\n",
       "      <td>2850.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>428.0</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1st Block Jayanagar</td>\n",
       "      <td>1630.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>194.0</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1st Block Jayanagar</td>\n",
       "      <td>1875.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>235.0</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "              location  total_sqft  bath  price  bhk\n",
       "0  1st Block Jayanagar      2850.0   4.0  428.0    4\n",
       "1  1st Block Jayanagar      1630.0   3.0  194.0    3\n",
       "2  1st Block Jayanagar      1875.0   2.0  235.0    3"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df10 = df9.drop(['size','price_per_sqft'],axis='columns')\n",
    "df10.head(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "id": "7da53193",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>1st Block Jayanagar</th>\n",
       "      <th>1st Phase JP Nagar</th>\n",
       "      <th>2nd Phase Judicial Layout</th>\n",
       "      <th>2nd Stage Nagarbhavi</th>\n",
       "      <th>5th Block Hbr Layout</th>\n",
       "      <th>5th Phase JP Nagar</th>\n",
       "      <th>6th Phase JP Nagar</th>\n",
       "      <th>7th Phase JP Nagar</th>\n",
       "      <th>8th Phase JP Nagar</th>\n",
       "      <th>9th Phase JP Nagar</th>\n",
       "      <th>...</th>\n",
       "      <th>Vishveshwarya Layout</th>\n",
       "      <th>Vishwapriya Layout</th>\n",
       "      <th>Vittasandra</th>\n",
       "      <th>Whitefield</th>\n",
       "      <th>Yelachenahalli</th>\n",
       "      <th>Yelahanka</th>\n",
       "      <th>Yelahanka New Town</th>\n",
       "      <th>Yelenahalli</th>\n",
       "      <th>Yeshwanthpur</th>\n",
       "      <th>other</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>3 rows × 241 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   1st Block Jayanagar  1st Phase JP Nagar  2nd Phase Judicial Layout  \\\n",
       "0                    1                   0                          0   \n",
       "1                    1                   0                          0   \n",
       "2                    1                   0                          0   \n",
       "\n",
       "   2nd Stage Nagarbhavi  5th Block Hbr Layout  5th Phase JP Nagar  \\\n",
       "0                     0                     0                   0   \n",
       "1                     0                     0                   0   \n",
       "2                     0                     0                   0   \n",
       "\n",
       "   6th Phase JP Nagar  7th Phase JP Nagar  8th Phase JP Nagar  \\\n",
       "0                   0                   0                   0   \n",
       "1                   0                   0                   0   \n",
       "2                   0                   0                   0   \n",
       "\n",
       "   9th Phase JP Nagar  ...  Vishveshwarya Layout  Vishwapriya Layout  \\\n",
       "0                   0  ...                     0                   0   \n",
       "1                   0  ...                     0                   0   \n",
       "2                   0  ...                     0                   0   \n",
       "\n",
       "   Vittasandra  Whitefield  Yelachenahalli  Yelahanka  Yelahanka New Town  \\\n",
       "0            0           0               0          0                   0   \n",
       "1            0           0               0          0                   0   \n",
       "2            0           0               0          0                   0   \n",
       "\n",
       "   Yelenahalli  Yeshwanthpur  other  \n",
       "0            0             0      0  \n",
       "1            0             0      0  \n",
       "2            0             0      0  \n",
       "\n",
       "[3 rows x 241 columns]"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dummies = pd.get_dummies(df10.location)\n",
    "dummies.head(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "id": "f6b6d2bf",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>location</th>\n",
       "      <th>total_sqft</th>\n",
       "      <th>bath</th>\n",
       "      <th>price</th>\n",
       "      <th>bhk</th>\n",
       "      <th>1st Block Jayanagar</th>\n",
       "      <th>1st Phase JP Nagar</th>\n",
       "      <th>2nd Phase Judicial Layout</th>\n",
       "      <th>2nd Stage Nagarbhavi</th>\n",
       "      <th>5th Block Hbr Layout</th>\n",
       "      <th>...</th>\n",
       "      <th>Vijayanagar</th>\n",
       "      <th>Vishveshwarya Layout</th>\n",
       "      <th>Vishwapriya Layout</th>\n",
       "      <th>Vittasandra</th>\n",
       "      <th>Whitefield</th>\n",
       "      <th>Yelachenahalli</th>\n",
       "      <th>Yelahanka</th>\n",
       "      <th>Yelahanka New Town</th>\n",
       "      <th>Yelenahalli</th>\n",
       "      <th>Yeshwanthpur</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1st Block Jayanagar</td>\n",
       "      <td>2850.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>428.0</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1st Block Jayanagar</td>\n",
       "      <td>1630.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>194.0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1st Block Jayanagar</td>\n",
       "      <td>1875.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>235.0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1st Block Jayanagar</td>\n",
       "      <td>1200.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>130.0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1st Block Jayanagar</td>\n",
       "      <td>1235.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>148.0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 245 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "              location  total_sqft  bath  price  bhk  1st Block Jayanagar  \\\n",
       "0  1st Block Jayanagar      2850.0   4.0  428.0    4                    1   \n",
       "1  1st Block Jayanagar      1630.0   3.0  194.0    3                    1   \n",
       "2  1st Block Jayanagar      1875.0   2.0  235.0    3                    1   \n",
       "3  1st Block Jayanagar      1200.0   2.0  130.0    3                    1   \n",
       "4  1st Block Jayanagar      1235.0   2.0  148.0    2                    1   \n",
       "\n",
       "   1st Phase JP Nagar  2nd Phase Judicial Layout  2nd Stage Nagarbhavi  \\\n",
       "0                   0                          0                     0   \n",
       "1                   0                          0                     0   \n",
       "2                   0                          0                     0   \n",
       "3                   0                          0                     0   \n",
       "4                   0                          0                     0   \n",
       "\n",
       "   5th Block Hbr Layout  ...  Vijayanagar  Vishveshwarya Layout  \\\n",
       "0                     0  ...            0                     0   \n",
       "1                     0  ...            0                     0   \n",
       "2                     0  ...            0                     0   \n",
       "3                     0  ...            0                     0   \n",
       "4                     0  ...            0                     0   \n",
       "\n",
       "   Vishwapriya Layout  Vittasandra  Whitefield  Yelachenahalli  Yelahanka  \\\n",
       "0                   0            0           0               0          0   \n",
       "1                   0            0           0               0          0   \n",
       "2                   0            0           0               0          0   \n",
       "3                   0            0           0               0          0   \n",
       "4                   0            0           0               0          0   \n",
       "\n",
       "   Yelahanka New Town  Yelenahalli  Yeshwanthpur  \n",
       "0                   0            0             0  \n",
       "1                   0            0             0  \n",
       "2                   0            0             0  \n",
       "3                   0            0             0  \n",
       "4                   0            0             0  \n",
       "\n",
       "[5 rows x 245 columns]"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df11 = pd.concat([df10,dummies.drop('other',axis='columns')],axis='columns')\n",
    "df11.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "id": "b57187c1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>total_sqft</th>\n",
       "      <th>bath</th>\n",
       "      <th>price</th>\n",
       "      <th>bhk</th>\n",
       "      <th>1st Block Jayanagar</th>\n",
       "      <th>1st Phase JP Nagar</th>\n",
       "      <th>2nd Phase Judicial Layout</th>\n",
       "      <th>2nd Stage Nagarbhavi</th>\n",
       "      <th>5th Block Hbr Layout</th>\n",
       "      <th>5th Phase JP Nagar</th>\n",
       "      <th>...</th>\n",
       "      <th>Vijayanagar</th>\n",
       "      <th>Vishveshwarya Layout</th>\n",
       "      <th>Vishwapriya Layout</th>\n",
       "      <th>Vittasandra</th>\n",
       "      <th>Whitefield</th>\n",
       "      <th>Yelachenahalli</th>\n",
       "      <th>Yelahanka</th>\n",
       "      <th>Yelahanka New Town</th>\n",
       "      <th>Yelenahalli</th>\n",
       "      <th>Yeshwanthpur</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2850.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>428.0</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1630.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>194.0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>2 rows × 244 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   total_sqft  bath  price  bhk  1st Block Jayanagar  1st Phase JP Nagar  \\\n",
       "0      2850.0   4.0  428.0    4                    1                   0   \n",
       "1      1630.0   3.0  194.0    3                    1                   0   \n",
       "\n",
       "   2nd Phase Judicial Layout  2nd Stage Nagarbhavi  5th Block Hbr Layout  \\\n",
       "0                          0                     0                     0   \n",
       "1                          0                     0                     0   \n",
       "\n",
       "   5th Phase JP Nagar  ...  Vijayanagar  Vishveshwarya Layout  \\\n",
       "0                   0  ...            0                     0   \n",
       "1                   0  ...            0                     0   \n",
       "\n",
       "   Vishwapriya Layout  Vittasandra  Whitefield  Yelachenahalli  Yelahanka  \\\n",
       "0                   0            0           0               0          0   \n",
       "1                   0            0           0               0          0   \n",
       "\n",
       "   Yelahanka New Town  Yelenahalli  Yeshwanthpur  \n",
       "0                   0            0             0  \n",
       "1                   0            0             0  \n",
       "\n",
       "[2 rows x 244 columns]"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df12 = df11.drop('location',axis='columns')\n",
    "df12.head(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "id": "954b49f6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(7239, 244)"
      ]
     },
     "execution_count": 69,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df12.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "id": "e4835adf",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>total_sqft</th>\n",
       "      <th>bath</th>\n",
       "      <th>bhk</th>\n",
       "      <th>1st Block Jayanagar</th>\n",
       "      <th>1st Phase JP Nagar</th>\n",
       "      <th>2nd Phase Judicial Layout</th>\n",
       "      <th>2nd Stage Nagarbhavi</th>\n",
       "      <th>5th Block Hbr Layout</th>\n",
       "      <th>5th Phase JP Nagar</th>\n",
       "      <th>6th Phase JP Nagar</th>\n",
       "      <th>...</th>\n",
       "      <th>Vijayanagar</th>\n",
       "      <th>Vishveshwarya Layout</th>\n",
       "      <th>Vishwapriya Layout</th>\n",
       "      <th>Vittasandra</th>\n",
       "      <th>Whitefield</th>\n",
       "      <th>Yelachenahalli</th>\n",
       "      <th>Yelahanka</th>\n",
       "      <th>Yelahanka New Town</th>\n",
       "      <th>Yelenahalli</th>\n",
       "      <th>Yeshwanthpur</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2850.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1630.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1875.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>3 rows × 243 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   total_sqft  bath  bhk  1st Block Jayanagar  1st Phase JP Nagar  \\\n",
       "0      2850.0   4.0    4                    1                   0   \n",
       "1      1630.0   3.0    3                    1                   0   \n",
       "2      1875.0   2.0    3                    1                   0   \n",
       "\n",
       "   2nd Phase Judicial Layout  2nd Stage Nagarbhavi  5th Block Hbr Layout  \\\n",
       "0                          0                     0                     0   \n",
       "1                          0                     0                     0   \n",
       "2                          0                     0                     0   \n",
       "\n",
       "   5th Phase JP Nagar  6th Phase JP Nagar  ...  Vijayanagar  \\\n",
       "0                   0                   0  ...            0   \n",
       "1                   0                   0  ...            0   \n",
       "2                   0                   0  ...            0   \n",
       "\n",
       "   Vishveshwarya Layout  Vishwapriya Layout  Vittasandra  Whitefield  \\\n",
       "0                     0                   0            0           0   \n",
       "1                     0                   0            0           0   \n",
       "2                     0                   0            0           0   \n",
       "\n",
       "   Yelachenahalli  Yelahanka  Yelahanka New Town  Yelenahalli  Yeshwanthpur  \n",
       "0               0          0                   0            0             0  \n",
       "1               0          0                   0            0             0  \n",
       "2               0          0                   0            0             0  \n",
       "\n",
       "[3 rows x 243 columns]"
      ]
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X = df12.drop(['price'],axis='columns')\n",
    "X.head(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "id": "f803bc44",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(7239, 243)"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "id": "3f722430",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    428.0\n",
       "1    194.0\n",
       "2    235.0\n",
       "Name: price, dtype: float64"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y = df12.price\n",
    "y.head(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "id": "3d6fddb3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "7239"
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "id": "26df7c7c",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "X_train,X_test,y_train,y_test=train_test_split(X,y,train_size=0.8,random_state=13)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "id": "ca73765a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8588660477968386"
      ]
     },
     "execution_count": 83,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.linear_model import LinearRegression\n",
    "lr_clf = LinearRegression()\n",
    "lr_clf.fit(X_train,y_train)\n",
    "lr_clf.score(X_test,y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "id": "ee5f5b93",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.82702546, 0.86027005, 0.85322178, 0.8436466 , 0.85481502])"
      ]
     },
     "execution_count": 86,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.model_selection import ShuffleSplit\n",
    "from sklearn.model_selection import cross_val_score\n",
    "cv=ShuffleSplit(n_splits=5,test_size=0.2,random_state=0)\n",
    "cross_val_score(LinearRegression(),X,y,cv=cv)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "id": "41bd8610",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>model</th>\n",
       "      <th>best_score</th>\n",
       "      <th>best_params</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>linear_regression</td>\n",
       "      <td>0.847796</td>\n",
       "      <td>{'normalize': False}</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>lasso</td>\n",
       "      <td>0.726861</td>\n",
       "      <td>{'alpha': 2, 'selection': 'random'}</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>decision_tree</td>\n",
       "      <td>0.718810</td>\n",
       "      <td>{'criterion': 'mse', 'splitter': 'random'}</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "               model  best_score                                 best_params\n",
       "0  linear_regression    0.847796                        {'normalize': False}\n",
       "1              lasso    0.726861         {'alpha': 2, 'selection': 'random'}\n",
       "2      decision_tree    0.718810  {'criterion': 'mse', 'splitter': 'random'}"
      ]
     },
     "execution_count": 90,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.linear_model import Lasso\n",
    "from sklearn.tree import DecisionTreeRegressor\n",
    "def find_best_model_using_gridsearchcv(X,y):\n",
    "    algos = {\n",
    "        'linear_regression' : {\n",
    "            'model': LinearRegression(),\n",
    "            'params': {\n",
    "                'normalize': [True, False]\n",
    "            }\n",
    "        },\n",
    "        'lasso': {\n",
    "            'model': Lasso(),\n",
    "            'params': {\n",
    "                'alpha': [1,2],\n",
    "                'selection': ['random', 'cyclic']\n",
    "            }\n",
    "        },\n",
    "        'decision_tree': {\n",
    "            'model': DecisionTreeRegressor(),\n",
    "            'params': {\n",
    "                'criterion' : ['mse','friedman_mse'],\n",
    "                'splitter': ['best','random']\n",
    "            }\n",
    "        }\n",
    "    }\n",
    "    scores = []\n",
    "    cv = ShuffleSplit(n_splits=5, test_size=0.2, random_state=0)\n",
    "    for algo_name, config in algos.items():\n",
    "        gs =  GridSearchCV(config['model'], config['params'], cv=cv, return_train_score=False)\n",
    "        gs.fit(X,y)\n",
    "        scores.append({\n",
    "            'model': algo_name,\n",
    "            'best_score': gs.best_score_,\n",
    "            'best_params': gs.best_params_\n",
    "        })\n",
    "\n",
    "    return pd.DataFrame(scores,columns=['model','best_score','best_params'])\n",
    "\n",
    "find_best_model_using_gridsearchcv(X,y)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "id": "1e2267ce",
   "metadata": {},
   "outputs": [],
   "source": [
    "def predict_price(location,sqft,bath,bhk):    \n",
    "    loc_index = np.where(X.columns==location)[0][0]\n",
    "\n",
    "    x = np.zeros(len(X.columns))\n",
    "    x[0] = sqft\n",
    "    x[1] = bath\n",
    "    x[2] = bhk\n",
    "    if loc_index >= 0:\n",
    "        x[loc_index] = 1\n",
    "\n",
    "    return lr_clf.predict([x])[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "id": "92132555",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "90.56832868368073"
      ]
     },
     "execution_count": 92,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "predict_price('1st Phase JP Nagar',1000, 2, 2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "id": "93e6427d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "93.52384203792523"
      ]
     },
     "execution_count": 93,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "predict_price('1st Phase JP Nagar',1000, 3, 3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "id": "d2c3bee7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "184.177406050691"
      ]
     },
     "execution_count": 94,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "predict_price('Indira Nagar',1000, 3, 3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "id": "afae9289",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "181.2218926964465"
      ]
     },
     "execution_count": 95,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "predict_price('Indira Nagar',1000, 2, 2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "id": "c3eee16b",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pickle\n",
    "with open('banglore_home_prices_model.pickle','wb') as f:\n",
    "    pickle.dump(lr_clf,f)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "id": "f5757ab7",
   "metadata": {},
   "outputs": [],
   "source": [
    "import json\n",
    "columns={\n",
    "    'data_columns':[col.lower() for col in X.columns]\n",
    "}\n",
    "with open('columns.json','w') as f:\n",
    "    f.write(json.dumps(columns))"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}