06_dataset_analysis_exploratory.ipynb 194 KB
Newer Older
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
{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "975fa498-1cba-4a76-a3ce-f3e818cf9ac6",
   "metadata": {},
   "source": [
    "# Data Analysis\n",
    "\n",
    "Lecture Data Engineering and Analytics<br>\n",
    "Eva Zangerle"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "01df2e3a-ba55-4e8b-9170-ae3e9ebf993b",
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "from scipy.stats import shapiro\n",
    "import stemgraphic\n",
    "\n",
    "# set seaborn style\n",
    "sns.set_style('darkgrid')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "2803cb89-5c14-4f24-9f22-016a61fdfafb",
   "metadata": {},
   "outputs": [],
   "source": [
    "data_dir='../data'"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "deae3b75-2eab-4f22-9ac9-2d5613588b9a",
   "metadata": {},
   "source": [
    "## Exploratory Data Analysis\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "052c3ebf-436f-449f-89a0-15d6669482d6",
   "metadata": {},
   "source": [
    "These examples make use of the hetrec2011-movielens-2k dataset (https://grouplens.org/datasets/hetrec-2011/). This dataset is based on the [MovieLens 10m dataset](https://grouplens.org/datasets/movielens/10m/) and extends it with further metadata from imdb on movies and movie reviews from rottentomatoe. \n",
    "\n",
    "Find the dataset's readme [here](https://files.grouplens.org/datasets/hetrec2011/hetrec2011-movielens-readme.txt)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "63fa331a-c219-417f-bcb3-748a13bc3226",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Int64Index: 20809 entries, 1 to 65133\n",
      "Data columns (total 1 columns):\n",
      " #   Column  Non-Null Count  Dtype \n",
      "---  ------  --------------  ----- \n",
      " 0   genre   20809 non-null  object\n",
      "dtypes: object(1)\n",
      "memory usage: 1.4 MB\n"
     ]
    }
   ],
   "source": [
    "# read in genre data\n",
    "genres = pd.read_csv(os.path.join(data_dir, 'hetrec/movie_genres.dat'), delimiter='\\t', index_col='movieID')\n",
    "genres.info(memory_usage='deep')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "9b9412b5-f3c4-4fe4-be5b-38ca26b80f01",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 855598 entries, 0 to 855597\n",
      "Data columns (total 9 columns):\n",
      " #   Column       Non-Null Count   Dtype  \n",
      "---  ------       --------------   -----  \n",
      " 0   userID       855598 non-null  int64  \n",
      " 1   movieID      855598 non-null  int64  \n",
      " 2   rating       855598 non-null  float64\n",
      " 3   date_day     855598 non-null  int64  \n",
      " 4   date_month   855598 non-null  int64  \n",
      " 5   date_year    855598 non-null  int64  \n",
      " 6   date_hour    855598 non-null  int64  \n",
      " 7   date_minute  855598 non-null  int64  \n",
      " 8   date_second  855598 non-null  int64  \n",
      "dtypes: float64(1), int64(8)\n",
      "memory usage: 58.7 MB\n"
     ]
    }
   ],
   "source": [
    "# read in rating data\n",
    "ratings = pd.read_csv(os.path.join(data_dir, 'hetrec/user_ratedmovies.dat'), delimiter='\\t')\n",
    "ratings.info(memory_usage='deep')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "df11f9a4-dab6-456c-93d7-6eab4600500d",
   "metadata": {},
   "source": [
    "### Univariate Non-Graphical EDA"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "9f8c82dc-7300-49c0-b467-9ed94e5182f7",
   "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>genre</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>movieID</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Adventure</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Animation</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Children</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Comedy</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Fantasy</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             genre\n",
       "movieID           \n",
       "1        Adventure\n",
       "1        Animation\n",
       "1         Children\n",
       "1           Comedy\n",
       "1          Fantasy"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "20809"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# simple exploration\n",
    "genres.head()\n",
    "len(genres)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "9f85dc2e-572d-416c-a1f6-1f3127bf8cb9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['Adventure', 'Animation', 'Children', 'Comedy', 'Fantasy',\n",
       "       'Romance', 'Drama', 'Action', 'Crime', 'Thriller', 'Horror',\n",
       "       'Mystery', 'Sci-Fi', 'IMAX', 'Documentary', 'War', 'Musical',\n",
       "       'Film-Noir', 'Western', 'Short'], dtype=object)"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# which genres are contained?\n",
    "genres['genre'].unique()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ad0bab35-d8c3-49d8-91b9-acfbd5589b4e",
   "metadata": {},
   "source": [
    "#### Tabulation for Categorical Data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "e03f89b3-fca8-404f-9136-7b92de976715",
   "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>count</th>\n",
       "      <th>share</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Drama</th>\n",
       "      <td>5076</td>\n",
       "      <td>0.243933</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Comedy</th>\n",
       "      <td>3566</td>\n",
       "      <td>0.171368</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Thriller</th>\n",
       "      <td>1664</td>\n",
       "      <td>0.079965</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Romance</th>\n",
       "      <td>1644</td>\n",
       "      <td>0.079004</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Action</th>\n",
       "      <td>1445</td>\n",
       "      <td>0.069441</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Crime</th>\n",
       "      <td>1086</td>\n",
       "      <td>0.052189</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Adventure</th>\n",
       "      <td>1003</td>\n",
       "      <td>0.048200</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Horror</th>\n",
       "      <td>978</td>\n",
       "      <td>0.046999</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Sci-Fi</th>\n",
       "      <td>740</td>\n",
       "      <td>0.035562</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Fantasy</th>\n",
       "      <td>535</td>\n",
       "      <td>0.025710</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Children</th>\n",
       "      <td>519</td>\n",
       "      <td>0.024941</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mystery</th>\n",
       "      <td>497</td>\n",
       "      <td>0.023884</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>War</th>\n",
       "      <td>494</td>\n",
       "      <td>0.023740</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Documentary</th>\n",
       "      <td>430</td>\n",
       "      <td>0.020664</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Musical</th>\n",
       "      <td>421</td>\n",
       "      <td>0.020232</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Animation</th>\n",
       "      <td>279</td>\n",
       "      <td>0.013408</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Western</th>\n",
       "      <td>261</td>\n",
       "      <td>0.012543</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Film-Noir</th>\n",
       "      <td>145</td>\n",
       "      <td>0.006968</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>IMAX</th>\n",
       "      <td>25</td>\n",
       "      <td>0.001201</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Short</th>\n",
       "      <td>1</td>\n",
       "      <td>0.000048</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             count     share\n",
       "Drama         5076  0.243933\n",
       "Comedy        3566  0.171368\n",
       "Thriller      1664  0.079965\n",
       "Romance       1644  0.079004\n",
       "Action        1445  0.069441\n",
       "Crime         1086  0.052189\n",
       "Adventure     1003  0.048200\n",
       "Horror         978  0.046999\n",
       "Sci-Fi         740  0.035562\n",
       "Fantasy        535  0.025710\n",
       "Children       519  0.024941\n",
       "Mystery        497  0.023884\n",
       "War            494  0.023740\n",
       "Documentary    430  0.020664\n",
       "Musical        421  0.020232\n",
       "Animation      279  0.013408\n",
       "Western        261  0.012543\n",
       "Film-Noir      145  0.006968\n",
       "IMAX            25  0.001201\n",
       "Short            1  0.000048"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# combine counts and relative frequency in a dataframe to prettify output\n",
    "pd.DataFrame({'count': genres['genre'].value_counts(), 'share': genres['genre'].value_counts(normalize=True)})\n",
    "# pd.concat([genres['genre'].value_counts(), genres['genre'].value_counts(normalize=True)], axis=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f43e3750-d441-4144-9a98-8c01cbbb2002",
   "metadata": {},
   "source": [
    "#### Location"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "f0e61052-ddd0-49bc-a709-c89fba59908f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    1.0\n",
       "1    4.5\n",
       "2    4.0\n",
       "3    2.0\n",
       "4    4.0\n",
       "Name: rating, dtype: float64"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "855593    4.0\n",
       "855594    4.0\n",
       "855595    4.5\n",
       "855596    5.0\n",
       "855597    4.5\n",
       "Name: rating, dtype: float64"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ratings['rating'].head()\n",
    "ratings['rating'].tail()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "d809ecd1-c278-426c-b512-2f75c6a0871c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.hist(ratings['rating']);\n",
    "plt.xlabel('Rating');\n",
    "plt.ylabel('Frequency');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "d36d867a-263c-4741-8bfc-ddb4a6a7a4bf",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3.437945156487042"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "3.5"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "0    4.0\n",
       "dtype: float64"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# mean \n",
    "ratings['rating'].mean()\n",
    "# median\n",
    "ratings['rating'].median()\n",
    "# mode\n",
    "ratings['rating'].mode()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "ac5bea93-9af4-4205-bd6c-dbc00405cbe6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# symmetric distribution\n",
    "normal_distribution = pd.Series(np.random.randn(20000) + 100)\n",
    "plt.hist(normal_distribution, bins=50);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "669e4fc1-3270-4912-8c53-22ef4bfe6427",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "100.00435960453909"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "99.9985846545506"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "normal_distribution.mean()\n",
    "normal_distribution.median()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "id": "358e93e2-1060-4575-bcf3-92c8d51fc366",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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gL+ZNGmSt0sAcIVWLYJ164xcb5chSSpanKoqbxcBNJBpaPzss8+asw4AAAJGYmKit0sAAMBtXN6nEQAANMyPfvQj51VTL168qLq6OoWFhXGUDgDALxEaAQBwsyNHjjh/NgxDeXl5+uijj7xXEAAATRDk7QIAAAhkFotFd999twoKCrxdCgAAjcKeRgAA3GzHjh3Ony9duqSjR4+qZcuWXqwIAIDGIzQCAOBme/bscf4cHByszp0768UXX/RiRQB8ha/c/uN8TR23/sANIzQCAOBmixYt8nYJAHyUr9z+g1t/oCEIjQAAuMnKlStNn7NYLMrOzm7GagAAcA9CIwAAbtK6deurxqqrq7Vx40aVl5cTGgEAfonQCACAm4wfP975c1VVlXJycrRp0yYNHz683nMAAPgTQiMAAG5UXl6udevWadu2bcrIyNDmzZvVrl07b5cFAECjERoBAHCTJUuWaOfOnRozZoy2bdumNm3aeLskAACajNAIAICbrFu3TqGhoVq1apVeeukl57hhGLJYLDp8+LAXqwMAoHEIjQAAuMlnn33m7RIAAHC7IG8XAAAAAADwXYRGAAAAAIApQiMAAAAAwBShEQAAAABgitAIAAAAADBFaAQAAAAAmCI0AgAAAABMERoBAAAAAKYIjQAAAAAAU4RGAAAAAIApQiMAAAAAwBShEQAAAABgKsRTE3/99df67W9/qzNnzshisWjMmDG67777VF5erscee0xfffWVOnfurOXLl6tdu3YyDEMLFizQ3r171apVKy1evFjx8fGSpM2bN2vVqlWSpIkTJyojI8NTZQMAAAAB78JFh6KiIpo8jzvmOF9Tp6qK802eB57jsdAYHBysGTNmKD4+XlVVVRo9erT69++vTZs2qV+/fnrwwQe1Zs0arVmzRk888YT27dunoqIi7dixQx9//LGefvppvfHGGyovL9fKlSu1ceNGWSwWjRo1SjabTe3atfNU6QAAAEBAa9UiWLfOyPV2GZKkosWpqvJ2Ebgujx2eGh0d7dxTGB4erq5du8putysvL0/p6emSpPT0dO3atUuSnOMWi0W33367KioqdPr0aRUUFKh///6KjIxUu3bt1L9/f+3fv99TZQMAAAAArtAs5zSWlJTo2LFj6t27t86cOaPo6GhJUlRUlM6cOSNJstvtiomJcb4mJiZGdrv9qnGr1Sq7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\n",
      "text/plain": [
       "<Figure size 1080x360 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# asymmetric, skewed distribution\n",
    "# number of ratings per movie\n",
    "rating_counts = ratings.groupby('movieID')['rating'].agg('count')\n",
    "fig, axes = plt.subplots(1, 2, figsize=(15,5))\n",
    "axes[0].hist(rating_counts);\n",
    "axes[0].set_ylabel('Number of Ratings');\n",
    "axes[0].set_xlabel('Movie');\n",
    "axes[1].hist(rating_counts, log=True);\n",
    "axes[1].set_ylabel('Number of Ratings (log)');\n",
    "axes[1].set_xlabel('Movie');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "e68666c9-0fa6-493e-9f6c-b190315811b9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "8710.179402008887"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "3249.0"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ratings['movieID'].mean()\n",
    "ratings['movieID'].median()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "d7374509-6104-40fb-9463-f1ee6768c3ac",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1080x360 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# slightly different way of getting overview of ratings per movie\n",
    "# plot distribution of binned count values\n",
    "count_histogram = rating_counts.value_counts()\n",
    "fig, axes = plt.subplots(1, 2, figsize=(15,5));\n",
    "axes[0].scatter(count_histogram.index, count_histogram);\n",
    "axes[0].set_xlabel('Number of Ratings');\n",
    "axes[0].set_ylabel('Number of Movies');\n",
    "axes[1].scatter(count_histogram.index, count_histogram);\n",
    "axes[1].set_xlabel('Number of Ratings (log)');\n",
    "axes[1].set_ylabel('Number of Movies (log)');\n",
    "axes[1].set_xscale('log');\n",
    "axes[1].set_yscale('log');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "eb52beb5-4f94-4cce-81e2-6e95c166de3c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count    855598.000000\n",
       "mean          3.437945\n",
       "std           1.002561\n",
       "min           0.500000\n",
       "25%           3.000000\n",
       "50%           3.500000\n",
       "75%           4.000000\n",
       "max           5.000000\n",
       "Name: rating, dtype: float64"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# use describe function for summary\n",
    "ratings['rating'].describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "15364d28-75aa-4f9b-90a6-382c904b2705",
   "metadata": {},
   "source": [
    "#### Spread"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "1d4f957e-30ed-4995-9ecb-0228ed41ddab",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.002560872161038"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "1.005128302388301"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ratings['rating'].std()\n",
    "ratings['rating'].var()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "f6f1f866-7659-4e76-a80a-8b48d8785df8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x7f7ca8252880>"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0.5, 0, 'Rating')"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'movieID')"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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OhYRERllhtUSaWtro76+nokTJyaNifz3f/93xgITEZGRb1hJ5PHHH890HCIiMgoNK4lMnDgx03GIiMgopJWDIiKSMiURERFJmZKIiIikTElERERSpiQiIiIpUxIREZGUKYmIiEjKlERERCRlGUsinZ2dfOELX+DGG29k0aJFPPnkkwD09PTQ0NBAXV0dDQ0N9Pb2AmCaJhs2bKC2tpbFixfz5ptvJq7V2NhIXV0ddXV1NDY2Jsr379/P4sWLqa2tZcOGDZimmanbERGR08hYErHb7axevZpnn32Wn/3sZ/zkJz+hvb2dLVu2MHv2bJqampg9ezZbtmwBoKWlhY6ODpqamli/fj3r1q0D4kln8+bNPP3002zdupXNmzcnEs+6detYv349TU1NdHR00NLSkqnbERGR08hYEikvL+fSSy8FoLCwkKlTp+L1emlubqa+vh6A+vp6XnjhBYBEuWEYzJw5E7/fj8/no7W1lTlz5uB2uykuLmbOnDns3bsXn89HIBBg5syZGIZBfX09zc3NmbodERE5jWHtnfVRHT58mLfeeosZM2bQ3d1NeXk5AGVlZXR3dwPg9XqpqDh5FnNFRQVer/cD5R6P57TlQ48/F7vdwO0el65bywq73Tbq7yFdVBfJVB/JVB8nZaouMp5E+vv7WbFiBd/+9rcpLEw+NtMwDAzDyHQISaJRk56eAUtfM93c7nGj/h7SRXWRTPWRTPVx0kepi7KyojP+LqOzs8LhMCtWrGDx4sWJo3RLS0vx+XwA+Hw+SkpKgHgLo6urK/Hcrq4uPB7PB8q9Xu9py4ceLyIi1slYEjFNk/vuu4+pU6fS0NCQKK+pqWH79u0AbN++neuuuy6p3DRN2traKCoqory8nLlz59La2kpvby+9vb20trYyd+5cysvLKSwspK2tDdM0k64lIiLWyFh31uuvv86OHTu46KKLWLJkCQD33nsvd999NytXrmTbtm1MmDCBTZs2ATBv3jz27NlDbW0t+fn5bNy4EQC3280999zD0qVLAVi+fDlutxuABx54gDVr1hAMBqmurqa6ujpTtyMiIqdhmGNscUU4HB31faTq5z1JdZFM9ZFM9XHSqBwTERGR85uSiIiIpExJREREUqYkIiIiKVMSERGRlCmJiIhIypREREQkZUoiIiKSMiURERFJmZKIiIikTElERERSpiQiIiIp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vvSlbIeVFYODg9x+++2EQiGi0SgLFixgxYoV2Q4r64Z29vZ4PDz22GPZDierampqKCgowGazYbfb+fnPf562ayuJjCK33HILd9xxB9/61reyHUrW2e12Vq9ezaWXXkogEODWW29lzpw5TJ8+PduhWS43N5cnn3ySgoICwuEwt912G9XV1cycOTPboWXVj370I6ZNm0YgEMh2KCPCk08+SUlJSdqvq+6sUeTqq6+muLg422GMCOXl5Vx66aUAFBYWMnXqVLxeb5ajyg7DMCgoKADiB7VFIhEMwzjHs85vXV1dvPjiiyxdujTboZz3lERk1Dt8+DBvvfUWM2bMyHYoWRONRlmyZAmf+cxn+MxnPjOm6wJg48aNrFq1CptNH3FDvvzlL3PLLbfws5/9LK3XVQ3LqNbf38+KFSv49re/TWGhtWebjyR2u50dO3awZ88e9u3bxx//+Mdsh5Q1u3fvpqSkhMsuuyzboYwYP/3pT2lsbOTf//3f+fGPf8yvf/3rtF1bSURGrXA4zIoVK1i8eDF1dXXZDmdEcLlczJo1i71792Y7lKx544032LVrFzU1Ndx777288sorfOMb38h2WFnl8XgAKC0tpba2ln379qXt2koiMiqZpsl9993H1KlTaWhoyHY4WXX06FH8fj8AwWCQl156ialTp2Y5quz5+te/TktLC7t27eKRRx7hmmuu4eGHH852WFkzMDCQmFwwMDDAL3/5S6qqqtJ2fc3OGkXuvfdeXn31VY4dO0Z1dTVf/epXWbZsWbbDyorXX3+dHTt2cNFFF7FkyRIgXj/z5s3LcmTW8/l8rF69mmg0immaLFy4kPnz52c7LBkhuru7Wb58ORAfO7vpppuorq5O2/V1noiIiKRM3VkiIpIyJREREUmZkoiIiKRMSURERFKmJCIiIinTFF+RNLrkkku46KKLiEajTJo0ie9973u4XK4zPv6tt97C5/MlpiY3Nzfzpz/9ibvvvtuqkEU+ErVERNLI6XSyY8cOnnnmGYqLi/nxj3981se/9dZb7NmzJ/HzddddpwQio4paIiIZMnPmTP7whz8AsG/fPh566CEGBwdxOp1s3LiRSZMm8S//8i8Eg0Fef/11vvKVrxAMBtm/fz9r165l9erVFBYWsn//fo4cOcKqVatYuHAhsViMBx98kFdeeYXKykocDge33norCxcuzPIdy1iklohIBkSjUV5++WVqamoAmDp1Kj/+8Y/Zvn07K1as4NFHHyU3N5cVK1Zw4403smPHDm688cYPXMfn8/GTn/yExx57jO9///sANDU18e677/Lss8/yve99j7a2NitvTSSJWiIiaRQMBlmyZAler5dp06YxZ84cAPr6+vjWt77FX/7yFwzDIBwOD+t6119/PTabjenTp/Pee+8B8S1fFi5ciM1mo6ysjFmzZmXsfkTORS0RkTQaGhPZvXs3pmkmxkT++Z//mVmzZvHMM8/wb//2b4RCoWFdLzc3N5PhinxkSiIiGZCfn893vvMdnnjiCSKRCH19fYntuBsbGxOPKygooL+//0Nd+8orr6SpqYlYLMZ7773Hq6++mtbYRT4MJRGRDPnkJz/JJz7xCZ555hnuuusuHnnkEerr64lEIonHzJo1i/b2dpYsWcKzzz47rOsuWLAAj8fDjTfeyKpVq/jkJz9JUVFRpm5D5Ky0i6/IKNTf309BQQHHjh1j2bJl/PSnP6WsrCzbYckYpIF1kVHob//2b/H7/YTDYe655x4lEMkatURERCRlGhMREZGUKYmIiEjKlERERCRlSiIiIpIyJREREUnZ/wc1cgany3O4zQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# sample ratings, plot scatter\n",
    "sample_ratings = ratings.sample(n=100, random_state=3)\n",
    "plt.scatter(sample_ratings['rating'], sample_ratings['movieID'], alpha=0.5)\n",
    "plt.xlabel('Rating')\n",
    "plt.ylabel('movieID')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "27c4f7c8-6f0c-4b86-8b7b-68eb5c4d7462",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXAAAAD4CAYAAAD1jb0+AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAQf0lEQVR4nO3dX2xTdR/H8c/ZmcP9casb24xk0RRGNMPgBQtuxBFG2EgY2RwOVDCwzBAjYZGpUCDhgkQhhhAIV05uZoIEHwIdAaO4IX8CIRgIGReAIUoCBtbHQt0zxp+t9rlQwYU/7drTnf3g/bqCw9bzPT/ad5bT0zMrEolEBAAwTorbAwAA4kPAAcBQBBwADEXAAcBQBBwADJU6nDv7888/FQ6bfdGLbVvGH4OTWI97WIvBWI/BElmPp56yH7h9WAMeDkcUCvUN5y4d5/FkGH8MTmI97mEtBmM9BktkPfLzn3ngdk6hAIChCDgAGIqAA4ChCDgAGIqAA4ChCDgAGIqAA4ChCDgAGIqAA4ChhvWTmABGjqzsdKWPSm4CHvYJwpu3B9TbczOp+34SEHDgCZU+KlUv+va5su+L62ep15U9P144hQIAhiLgAGAoAg4AhiLgAGAoAg4AhiLgAGAoAg4Ahop6Hfjt27c1f/583blzR+FwWNXV1WpubtalS5fU0tKiUCikkpISff7550pLSxuOmQEAiuEn8LS0NLW1tWnPnj3y+/06cuSITp8+rQ0bNmjRokX64YcflJ2drZ07dw7HvACAv0UNuGVZyszMlCQNDAxoYGBAlmXp+PHjqq6uliS98cYb6uzsTO6kAIBBYjoHHg6HVVtbq/LycpWXl6uoqEjZ2dlKTf3rDMxzzz2n7u7upA4KABgspnuh2Lat9vZ29fT0aMmSJfrll1/i2pltW/J4MuL63pHCtlOMPwYnsR73sBZD86StVTKeH0O6mVV2drYmT56s06dPq6enRwMDA0pNTdXVq1dVWFgY9fvD4YhCob64hx0JPJ4M44/BSazHPaatxcPuFDhcTForJyTy/HjY/1XUUyjXrl1TT0+PJOnWrVs6duyYxo4dq8mTJ+v777+XJO3evVuVlZVxDQYAiE/Un8ADgYB8Pp/C4bAikYhmzpypadOmady4cVq2bJk2bdqkl19+WQ0NDcMxLwDgb1ED/tJLL8nv99+3vaioiEsHAcBFfBITAAxFwAHAUAQcAAxFwAHAUAQcAAxFwAHAUAQcAAxFwAHAUAQcAAxFwAHAUAQcAAxFwAHAUAQcAAxFwAHAUAQcAAxFwAHAUAQcAAxFwAHAUAQcAAxFwAHAUAQcAAxFwAHAUAQcAAxFwAHAUKnRvuDKlStavny5gsGgLMvS3LlztXDhQm3ZskXffPONcnNzJUktLS2aOnVq0gcGAPwlasBt25bP51NJSYl6e3s1Z84cTZkyRZK0aNEiNTU1JX1IAMD9oga8oKBABQUFkqSsrCx5vV51d3cnfTAAwKNFDfi/Xb58WWfPntXEiRN16tQpbdu2TX6/XxMmTJDP51NOTs4jv9+2LXk8GQkN7DbbTjH+GJzEetzDWgzNk7ZWyXh+WJFIJBLLF964cUPvvvuu3n//fVVVVen333/Xs88+K8uytHnzZgUCAa1bt+6Rj9HfH1Yo1OfI4G7xeDKMPwYnsR73mLYW+fnP6EXfPlf2fXH9LP33v/9zZd9uSeT5kZ//zAO3x3QVSn9/v5qbmzV79mxVVVVJkkaPHi3btpWSkqKGhgadOXMmrsEAAPGJGvBIJKLVq1fL6/WqsbHx7vZAIHD3zx0dHSouLk7OhACAB4p6DvzkyZNqb2/X+PHjVVtbK+mvSwb37t2rc+fOSZLGjBmjtWvXJndSAMAgUQM+adIknT9//r7tXPMNAO7ik5gAYCgCDgCGIuAAYCgCDgCGIuAAYCgCDgCGIuAAYCgCDgCGIuAAYCgCDgCGIuAAYCgCDgCGIuAAYCgCDgCGIuAAYCgCDgCGIuAAYCgCDgCGIuAAYCgCDgCGIuAAYCgCDgCGIuAAYKjUaF9w5coVLV++XMFgUJZlae7cuVq4cKFCoZCWLVum3377TWPGjNGmTZuUk5MzHDMDABTDT+C2bcvn8+nbb7/Vjh079PXXX+vChQtqbW1VWVmZ9u/fr7KyMrW2tg7HvACAv0UNeEFBgUpKSiRJWVlZ8nq96u7uVmdnp+rq6iRJdXV16ujoSOqgAIDBop5C+bfLly/r7NmzmjhxooLBoAoKCiRJ+fn5CgaDUb/fti15PBnxTTpC2HaK8cfgJNbjHtZiaJ60tUrG8yPmgN+4cUPNzc1atWqVsrKyBv2bZVmyLCvqY4TDEYVCfUOfcgTxeDKMPwYnsR73mLYW+fnPuLp/k9bKCYk8Px72fxXTVSj9/f1qbm7W7NmzVVVVJUnKy8tTIBCQJAUCAeXm5sY1GAAgPlEDHolEtHr1anm9XjU2Nt7dXllZKb/fL0ny+/2aPn160oYEANwv6imUkydPqr29XePHj1dtba0kqaWlRYsXL9aHH36onTt36vnnn9emTZuSPSsA4F+iBnzSpEk6f/78A/+tra3N8YEAALHhk5gAYCgCDgCGIuAAYCgCDgCGIuAAYCgCDgCGIuAAYKgh3cwKeFxlZacrfVTiL4d47i9y8/aAentuJrxvPHkIOCApfVSqXvTtc2XfF9fPUq8re4bpOIUCAIYi4ABgKAIOAIYi4ABgKAIOAIYi4ABgKAIOAIYi4ABgKAIOAIYi4ABgKAIOAIbiXiiAy271h+O6CRZAwAGXPf2U7cqNtC6unzXs+4SzOIUCAIYi4ABgqKgBX7lypcrKylRTU3N325YtW/T666+rtrZWtbW1OnToUFKHBADcL+o58Pr6ei1YsEArVqwYtH3RokVqampK2mAAgEeL+hN4aWmpcnJyhmMWAMAQxH0VyrZt2+T3+zVhwgT5fL6YIm/bljyejHh3OSLYdorxx+Ak1gPxetKeN8l4rcQV8LffflsffPCBLMvS5s2btX79eq1bty7q94XDEYVCffHscsTweDKMPwYnPS7rwXXYw+9xeN4MRSKvlYc9P+O6CmX06NGybVspKSlqaGjQmTNn4hoKABC/uAIeCATu/rmjo0PFxcWODQQAiE3UUygtLS06ceKErl+/roqKCi1dulQnTpzQuXPnJEljxozR2rVrkz4oAGCwqAHfuHHjfdsaGhqSMgwAIHZ8EhMADEXAAcBQBBwADEXAAcBQBBwADEXAAcBQBBwADEXAAcBQBBwADEXAAcBQBBwADEXAAcBQBBwADEXAAcBQBBwADEXAAcBQBBwADEXAAcBQBBwADEXAAcBQUX+pMTCcsrLTlT6KpyUQC14pGFHSR6XqRd++Yd/vxfWzhn2fQKI4hQIAhooa8JUrV6qsrEw1NTV3t4VCITU2NqqqqkqNjY36448/kjokAOB+UQNeX1+vrVu3DtrW2tqqsrIy7d+/X2VlZWptbU3agACAB4sa8NLSUuXk5Aza1tnZqbq6OklSXV2dOjo6kjIcAODh4noTMxgMqqCgQJKUn5+vYDAY0/fZtiWPJyOeXY4Ytp1i/DE4ifVAvJ60500yXisJX4ViWZYsy4rpa8PhiEKhvkR36SqPJ8P4Y3CS0+uRn/+MY4+Fke1Jex0l8lp52OsirqtQ8vLyFAgEJEmBQEC5ublxDQUAiF9cAa+srJTf75ck+f1+TZ8+3cmZAAAxiBrwlpYWvfXWW/r1119VUVGh//znP1q8eLGOHj2qqqoqHTt2TIsXLx6OWQEA/xL1HPjGjRsfuL2trc3xYQAAseOTmABgKAIOAIYi4ABgKAIOAIYi4ABgKAIOAIYi4ABgKH4jD4Bhd6s/7Mp9b271h/X0U/aw7/effTuNgAMYdk8/Zbv2q/Pc2O8/+/6fw4/JKRQAMBQBBwBDEXAAMBQBBwBDEXAAMBQBBwBDEXAAMBQBBwBDEXAAMBQBBwBDEXAAMBQBBwBDEXAAMBQBBwBDJXQ72crKSmVmZiolJUW2bWvXrl1OzQUAiCLh+4G3tbUpNzfXiVkAAEPAKRQAMFTCP4E3NTXJsizNmzdP8+bNe+TX2rYljycj0V26yrZTjD8GJ7EeQOycfq0kFPDt27ersLBQwWBQjY2N8nq9Ki0tfejXh8MRhUJ9iezSdR5PhvHH4CSn18ON35MIDJd4XysPe10kdAqlsLBQkpSXl6cZM2aoq6srkYcDAAxB3AHv6+tTb2/v3T8fPXpUxcXFjg0GAHi0uE+hBINBLVmyRJIUDodVU1OjiooKxwYDADxa3AEvKirSnj17nJwFADAEXEYIAIYi4ABgKAIOAIYi4ABgKAIOAIYi4ABgKAIOAIZK+GZWePxkZacrfVTsTw3uXwK4g4DjPumjUvWib58r+764fpYr+wVMxCkUADAUAQcAQxFwADAUAQcAQxFwADCUMVehDPXSNifdvD2g3p6bw75fN48ZwMhnTB3cvrSt14X9unXMXMoHmIFTKABgKAIOAIYi4ABgKAIOAIYi4ABgKAIOAIYi4ABgKAIOAIZKKOCHDx9WdXW1ZsyYodbWVqdmAgDEIO6Ah8NhrV27Vlu3btW+ffu0d+9eXbhwwcnZAACPEHfAu7q69MILL6ioqEhpaWmaNWuWOjs7nZwNAPAIViQSicTzjd99952OHDmiTz/9VJLk9/vV1dWlNWvWODogAODBeBMTAAwVd8ALCwt19erVu3/v7u5WYWGhI0MBAKKLO+CvvPKKLl68qEuXLunOnTvat2+fKisrnZwNAPAIcd8PPDU1VWvWrNF7772ncDisOXPmqLi42MnZAACPEPebmAAAd/EmJgAYioADgKGM+Z2Yblu5cqUOHjyovLw87d271+1xXHXlyhUtX75cwWBQlmVp7ty5Wrhwodtjueb27duaP3++7ty5o3A4rOrqajU3N7s9lqv+eV+ssLBQX3zxhdvjuKqyslKZmZlKSUmRbdvatWuXY49NwGNUX1+vBQsWaMWKFW6P4jrbtuXz+VRSUqLe3l7NmTNHU6ZM0bhx49wezRVpaWlqa2tTZmam+vv79c4776iiokKvvvqq26O55quvvtLYsWPV2+vGrwMfedra2pSbm+v443IKJUalpaXKyclxe4wRoaCgQCUlJZKkrKwseb1edXd3uzyVeyzLUmZmpiRpYGBAAwMDsizL5ancc/XqVR08eFBvvvmm26M89gg4EnL58mWdPXtWEydOdHsUV4XDYdXW1qq8vFzl5eVP9Hp89tln+uSTT5SSQl7+0dTUpPr6eu3YscPRx2WFEbcbN26oublZq1atUlZWltvjuMq2bbW3t+vQoUPq6urSzz//7PZIrvjxxx+Vm5urCRMmuD3KiLF9+3bt3r1bX375pbZt26affvrJsccm4IhLf3+/mpubNXv2bFVVVbk9zoiRnZ2tyZMn68iRI26P4opTp07pwIEDqqysVEtLi44fP66PP/7Y7bFc9c8tRvLy8jRjxgx1dXU59tgEHEMWiUS0evVqeb1eNTY2uj2O665du6aenh5J0q1bt3Ts2DF5vV6Xp3LHRx99pMOHD+vAgQPauHGjXnvtNW3YsMHtsVzT19d3943cvr4+HT161NFPrHMVSoxaWlp04sQJXb9+XRUVFVq6dKkaGhrcHssVJ0+eVHt7u8aPH6/a2lpJf63P1KlTXZ7MHYFAQD6fT+FwWJFIRDNnztS0adPcHgsjQDAY1JIlSyT99T5JTU2NKioqHHt8PkoPAIbiFAoAGIqAA4ChCDgAGIqAA4ChCDgAGIqAA4ChCDgAGOr/ntb8WYjHsRkAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.hist(sample_ratings['rating']);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "5b563560-e01f-4ee8-978a-81906341629e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3.515"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "0.9113620620153157"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sample_ratings['rating'].mean()\n",
    "sample_ratings['rating'].std()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "529f94c2-a440-4a5a-b639-dd8200a39e90",
   "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>userID</th>\n",
       "      <th>movieID</th>\n",
       "      <th>rating</th>\n",
       "      <th>date_day</th>\n",
       "      <th>date_month</th>\n",
       "      <th>date_year</th>\n",
       "      <th>date_hour</th>\n",
       "      <th>date_minute</th>\n",
       "      <th>date_second</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>618259</th>\n",
       "      <td>50670</td>\n",
       "      <td>517</td>\n",
       "      <td>4.0</td>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>2001</td>\n",
       "      <td>21</td>\n",
       "      <td>49</td>\n",
       "      <td>46</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>122393</th>\n",
       "      <td>10132</td>\n",
       "      <td>60753</td>\n",
       "      <td>4.0</td>\n",
       "      <td>23</td>\n",
       "      <td>8</td>\n",
       "      <td>2008</td>\n",
       "      <td>17</td>\n",
       "      <td>5</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>653376</th>\n",
       "      <td>52834</td>\n",
       "      <td>147</td>\n",
       "      <td>3.0</td>\n",
       "      <td>13</td>\n",
       "      <td>12</td>\n",
       "      <td>1999</td>\n",
       "      <td>17</td>\n",
       "      <td>40</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>147297</th>\n",
       "      <td>12296</td>\n",
       "      <td>1094</td>\n",
       "      <td>4.0</td>\n",
       "      <td>27</td>\n",
       "      <td>5</td>\n",
       "      <td>1998</td>\n",
       "      <td>15</td>\n",
       "      <td>19</td>\n",
       "      <td>49</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24877</th>\n",
       "      <td>2471</td>\n",
       "      <td>1704</td>\n",
       "      <td>3.0</td>\n",
       "      <td>15</td>\n",
       "      <td>7</td>\n",
       "      <td>2008</td>\n",
       "      <td>9</td>\n",
       "      <td>40</td>\n",
       "      <td>36</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>740700</th>\n",
       "      <td>61968</td>\n",
       "      <td>1</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>2009</td>\n",
       "      <td>10</td>\n",
       "      <td>59</td>\n",
       "      <td>50</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>127747</th>\n",
       "      <td>10791</td>\n",
       "      <td>2692</td>\n",
       "      <td>3.0</td>\n",
       "      <td>5</td>\n",
       "      <td>8</td>\n",
       "      <td>2002</td>\n",
       "      <td>23</td>\n",
       "      <td>24</td>\n",
       "      <td>21</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>313423</th>\n",
       "      <td>25712</td>\n",
       "      <td>345</td>\n",
       "      <td>3.5</td>\n",
       "      <td>12</td>\n",
       "      <td>2</td>\n",
       "      <td>2007</td>\n",
       "      <td>14</td>\n",
       "      <td>7</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>659069</th>\n",
       "      <td>53315</td>\n",
       "      <td>3107</td>\n",
       "      <td>4.0</td>\n",
       "      <td>16</td>\n",
       "      <td>2</td>\n",
       "      <td>2005</td>\n",
       "      <td>21</td>\n",
       "      <td>11</td>\n",
       "      <td>41</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>448872</th>\n",
       "      <td>35373</td>\n",
       "      <td>7022</td>\n",
       "      <td>4.0</td>\n",
       "      <td>18</td>\n",
       "      <td>6</td>\n",
       "      <td>2005</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>34</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>66 rows × 9 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "        userID  movieID  rating  date_day  date_month  date_year  date_hour  \\\n",
       "618259   50670      517     4.0         1           6       2001         21   \n",
       "122393   10132    60753     4.0        23           8       2008         17   \n",
       "653376   52834      147     3.0        13          12       1999         17   \n",
       "147297   12296     1094     4.0        27           5       1998         15   \n",
       "24877     2471     1704     3.0        15           7       2008          9   \n",
       "...        ...      ...     ...       ...         ...        ...        ...   \n",
       "740700   61968        1     3.0         2           1       2009         10   \n",
       "127747   10791     2692     3.0         5           8       2002         23   \n",
       "313423   25712      345     3.5        12           2       2007         14   \n",
       "659069   53315     3107     4.0        16           2       2005         21   \n",
       "448872   35373     7022     4.0        18           6       2005          3   \n",
       "\n",
       "        date_minute  date_second  \n",
       "618259           49           46  \n",
       "122393            5           45  \n",
       "653376           40           45  \n",
       "147297           19           49  \n",
       "24877            40           36  \n",
       "...             ...          ...  \n",
       "740700           59           50  \n",
       "127747           24           21  \n",
       "313423            7           45  \n",
       "659069           11           41  \n",
       "448872            1           34  \n",
       "\n",
       "[66 rows x 9 columns]"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sample_ratings[(sample_ratings['rating'] > (sample_ratings['rating'].mean() - sample_ratings['rating'].std())) \\\n",
    "       & (sample_ratings['rating'] < (sample_ratings['rating'].mean() + sample_ratings['rating'].std()))]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "dfc7d9a3-4b1b-41c0-88cb-390e3b2b9240",
   "metadata": {},
   "source": [
    "Side note - for normal distributions:  \n",
    "68% of all observations fall within +/- 1 standard deviation  \n",
    "95% of all observations fall within +/- 2 standard deviations  \n",
    "99.7% of all observations fall within +/- 3 standard deviations"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "adf25d75-1f21-4e37-9911-a82110647781",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.9266459345817566 3.2272484531858936e-05\n"
     ]
    }
   ],
   "source": [
    "# use shapiro-wilk test to test for normal distribution (usually quite suited for smaller samples)\n",
    "# here, non-normal distribution is already clear from the histogram\n",
    "stat, p = shapiro(sample_ratings['rating'])\n",
    "print(stat, p)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "eaddb47c-7b83-4c78-abab-139b08e07235",
   "metadata": {},
   "source": [
    "#### Shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "9470ef42-f954-461b-94ba-792a5e467d9b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-0.7009990282814003"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "0.33623508094406773"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# skewness\n",
    "ratings['rating'].skew()\n",
    "ratings['rating'].kurtosis()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "69654f99-9ce3-4a14-a660-46b29207eae0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.hist(ratings['rating']);\n",
    "plt.xlabel('Rating');\n",
    "plt.ylabel('Frequency');"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d098e086-0aa1-4101-895a-b2ee7743b035",
   "metadata": {},
   "source": [
    "### Univariate Graphical EDA"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ad4df579-74ec-4e6c-b45f-c186b7c09695",
   "metadata": {},
   "source": [
    "#### Histograms"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "1915e91e-ee4e-41a2-8440-4c5eeba2096f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.hist(ratings['rating']);\n",
    "plt.xlabel('Rating');\n",
    "plt.ylabel('Frequency');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 110,
   "id": "2b1e8ca9-e12e-4bea-a052-c69cea97a611",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA4EAAAJcCAYAAABHfaGJAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAB9CUlEQVR4nO3de3xU1b3///fODCEhV4LJRJBaUbwU5GK1iCAchwYUjCQQRFFbclSsIhGCWNQWFAT5WZAcxa8atYjnaKsgSZDYcgkQLopWEal4qVRRoGSigSRAQsJM5vdHypRAEnKZ+7yejwcPJ3vPXvPZy0w+85m99lqG0+l0CgAAAAAQEsJ8HQAAAAAAwHsoAgEAAAAghFAEAgAAAEAIoQgEAAAAgBBCEQgAAAAAIYQiEAAAAABCCEUgEGQ++ugjjRgxwtdhAADg92bNmqXnnnvO12EAXmewTiDge3fccYd27twps9ksSUpKStKaNWsafe6zzz6rF154QeHh4ZKk5ORkTZ06lcIPABAU/u///k8rV67UP/7xD914441asGBBg/3vv/++Hn/8cR08eFB9+vTRggUL1K1bt0bbslqt+vHHH2UymWQ2m9W/f389/vjjOvfcc71xKoDf4kog4CdmzZqlTz75RJ988kmTBeBJN9xwg+u5jzzyiGbMmKEff/zRS5ECAOA5SUlJuu+++zR27Ngz9h06dEj333+/HnjgAX344Yfq3bu3pk2b1mx7L7zwgj755BNt3bpVXbp00dy5cz0VOhAwKAKBAHfttdcqKipK33//vSTpgw8+0JAhQ1z7rVarXnnlFaWmpurnP/+5pk6dqpqaGkn1yfSee+7RlVdeqV/84heaMGGC6urqfHIeAABI0vDhw/XLX/5S8fHxZ+xbt26devbsqRtuuEEdO3bUlClT9OWXX+qf//znWdvt2LGjrr/++gbPnTlzphYvXizpP/nzj3/8owYOHKjBgwfr7bffdj23uLhYI0eOVP/+/XXttdfqlVdeaf/JAj5i9nUAAOotWrRICxcu1AUXXKBp06ZpwIABZz3G6XSquLhYJ06c0EUXXdTk8/7yl7/o5ZdfVseOHXXrrbdq5cqVuvXWW7V06VJZLBa9//77kqRPP/1UhmG47ZwAAHCnr7/+Wpdcconr506dOuknP/mJ9uzZowsvvLDZY6urq/Xuu++qb9++TT7nxx9/1JEjR7R582a99957ysrK0i9/+UvFxcXp0UcfVU5Ojq688kpVVFRo//79bjsvwNsoAgE/8OCDD+rCCy9UeHi4CgsL9Zvf/EYFBQX6yU9+0ujz//rXv2rTpk2y2+2qqalRdna2YmNjm2z/jjvukMVikSRdd911+uKLLyRJZrNZP/zwg/71r3/p/PPP15VXXun+kwMAwE2qqqqUkJDQYFt0dLSOHTvW5DGTJ0+WyWRSdXW1Onfu3OwVPLPZrMmTJ8tsNmvo0KHq1KmTvv32W/Xr109ms1l79uzRpZdeqri4OMXFxbntvABvYzgo4Af69u2r6OhohYeHKz09XVdccYWKi4ubfP7111+vjz76SDt37tS6detUUFCgP//5z00+PzEx0fU4MjJSVVVVkqQ777xT559/vv77v/9bw4YNU25urvtOCgAAN+vUqZOOHj3aYNuxY8cUFRXV5DHPPfecPvroI+3atUuzZs3SHXfcoR9++KHR58bHx7smaZMa5sxnnnlGxcXFuu6663T77bfrk08+ccMZAb5BEQj4IcMw1NKJe8877zxde+212rhxY6tfJzo6WjNnzlRRUZGef/55LV261DU0FAAAf9OzZ099+eWXrp+rqqr0/fffN3tLxEkmk0nDhw9XWFiYPv7441a/dp8+ffT888/rvffe0y9/+UtNnTq11W0A/oIiEPCxyspKbdmyRTU1NbLb7Vq1apU++ugjXXvttS06vqSkRFu3bm1RAjzdxo0b9d1338npdComJkYmk4l7AgEAPnXyVoe6ujo5HA5XfpSklJQUff3111qzZo1qamr03HPP6ZJLLjnr/YBS/X3069evV2VlZYuef6ra2lqtWrVKR44cUYcOHRQVFaWwMD5GI3BxTyDgY3a7XTk5Ofrmm29kMpnUo0cPPffcc7rggguaPOYvf/mLioqKJElRUVGyWq26//77W/3a3333nebOnatDhw4pNjZWt956q66++uo2nwsAAO31/PPPa8mSJa6fV61apfvvv19TpkxRQkKCnn32Wc2ZM0czZsxQ37599fTTTzfb3m9+8xuZTCZJUrdu3bRgwQL17Nmz1XEVFBRo7ty5cjgcuuCCC/SHP/yh1W0A/oLF4gEAAAAghHAdGwAAAABCCEUgAAAAAIQQikAAAAAACCEUgQAAAAAQQoJydtD6KYWDd74bk8kI6vPz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il/bsWOHNmzYIKvVquzsbG3fvl0PPvigr8PyexaLRZLUpUsXpaSkaNeuXT6OCAg95Mi2I0eeHfmx7byRIykCEbScTqceffRR9ejRQ5mZmb4OJyAcOnRIlZWVkqTjx4/rvffeU48ePXwclX+bPn26Nm/erA0bNujpp5/W1VdfrYULF/o6LL9WVVXlmiCgqqpK27ZtU8+ePX0cFRBayJGtR45sHfJj23grRzI7aADJzs7Whx9+qMOHD2vIkCGaMmWKxo0b5+uw/NbHH3+sgoICXXzxxRo9erSk+j4cOnSojyPzX6WlpZo5c6YcDoecTqeuv/56XXfddb4OC0GmrKxMkydPllR/f82NN96oIUOG+DgqBDpyZOuQI1uPHAlv8FaONJxOp9PtrQIAAAAA/BLDQQEAAAAghFAEAgAAAEAIoQgEAAAAgBBCEQgAAAAAIYQiEAAAAABCCEUg0Ebr16/XJZdcon/+85++DuWsrFarUlNTlZqaqttvv10HDhxo9vn79+/XO++84/r573//u5544glPhwkACBLkSMC/UQQCbbR69Wr9/Oc/V2FhoVvaczgcbmmnKcuWLdM777yjX/ziF3r++eebfe6BAwe0evVq18+XX365fve733k0PgBA8CBHAv6NIhBog2PHjunjjz/WvHnzXAlu8+bNysrKcj3ngw8+0D333CNJ2rp1q8aPH6/09HRlZWXp2LFjkuq/ffzDH/6g9PR0/fWvf9Vbb72lsWPH6qabbtKUKVNUXV0tSfr+++918803KzU1VYsXL1b//v1dr/Pyyy9r7NixSk1N1TPPPHPW2Pv16yebzSap/tvMCRMmKD09Xenp6dqxY4ckadGiRfroo480evRovfrqqw3O5dlnn9XDDz+sO+64Q8OGDdNrr73mavu5557TiBEjdOuttyo7O1uvvPJKm/sYABCYyJHkSPg/ikCgDYqKinTttdfqggsuUOfOnfXZZ5/pmmuu0a5du1RVVSVJevfddzVy5EgdOnRIzz//vJYuXaq8vDz17t1bS5cudbUVHx+vvLw8jRo1SikpKXr77be1atUq9ejRQytWrJAkzZs3T7/61a/0zjvvKDk52XXs1q1b9d1332nFihUqKCjQ7t279be//a3Z2Lds2aJf/vKXkqQuXbq44lq8eLFrOMv06dN15ZVXqqCgQBMnTjyjjW+//VavvPKKli9frueee04nTpzQrl27tHbtWq1atUovvfSSPvvss3b1MQAgMJEjyZHwf2ZfBwAEosLCQv3qV7+SJI0cOVKFhYXq3bu3rr32Wm3cuFEjRoxQcXGxZsyYob/97W/as2ePbr31VknSiRMn1K9fP1dbI0eOdD3++uuvlZOToyNHjujYsWMaPHiwJGnnzp167rnnJEmpqal66qmnJEnbtm3Ttm3blJaWJkmqqqrS3r17ddVVV50R869//WuVl5erU6dOeuCBByRJdrtdc+bM0ZdffqmwsDDt3bu3Rec/dOhQhYeHKyEhQQkJCSorK9OOHTs0bNgwdezYUR07dtR1113X8g4FAAQNciQ5Ev6PIhBopfLycm3fvl3/+Mc/ZBiGHA6HDMPQQw89pJEjR+r1119XXFycevfurejoaDmdTg0aNEhPP/10o+1FRka6Hs+cOVP/7//9P1166aVauXKlPvzww2ZjcTqdmjRpkm655Zazxr1s2TLFxsbqwQcfdA1XefXVV3XOOeeooKBAdXV16tOnT4v6IDw83PXYZDLJbre36DgAQHAjR5IjERgYDgq00po1azR69Ght3LhRGzZsUHFxsc477zx99NFH+sUvfqHPP/9cb731luvby379+mnHjh367rvvJNV/E/ntt9822vaxY8eUmJioEydONJh5rG/fvlq7dq0kNbjJfvDgwXr77bdd90/YbDaVlZU1GbvZbNYjjzyi/Px8lZeX68iRI0pMTFRYWJgKCgpcN95HRUW52mypK664Qhs3blRNTY2OHTumTZs2tep4AEDgI0c2jhwJf0MRCLTS6tWrXfcLnDR8+HCtXr1aJpNJ//Vf/6UtW7a4hnokJCToySefVHZ2tlJTUzV+/Hh98803jbb9wAMPaNy4cbr11lvVo0cP1/ZHHnlES5cuVWpqqr777jtFR0dLqk9wN954o2655RalpqY2uKG+KUlJSbrxxhv1+uuva8KECcrLy9NNN92kb775Rp06dZIkXXLJJQoLC9NNN92kV199tUX90qdPH1mtVt100026++67dfHFFysmJqZFxwIAggM5snHkSPgbw+l0On0dBIDmVVdXKyIiQoZhqLCwUKtXrz7rFNa+cOzYMUVFRam6ulq33Xab5s6dq169evk6LABAECNHAq3HPYFAANi9e7fmzJkjp9Op2NhYzZ8/39chNWrWrFnas2ePampqlJ6eTnIDAHgcORJoPa4EAgAAAEAI4Z5AAAAAAAghFIEAAAAAEEIoAoEgd9dddykvL8/XYQAA4Nf+9a9/qX///q6lIIBgxj2BgA/ccccd2rlzp8zm+rmZkpKStGbNGtf+d955R08//bQOHz6sa665RvPnz1d8fHyjbV1yySWKjIyUYRgKDw/XoEGD9Nhjjyk2NtYbpwIAQLv83//9n1auXKl//OMfuvHGG7VgwYIG+99//309/vjjOnjwoPr06aMFCxaoW7dukqTa2lrNnj1ba9asUWRkpO666y5lZmY2+jorV67Uo48+qoiICEn1y1PceeedmjBhgmdPEPBDXAkEfGTWrFn65JNP9MknnzQoAL/++mvNmjVLTz31lLZt26bIyEg9/vjjzbZVUFCgTz75REVFRaqoqNCzzz7r6fABAHCLpKQk3XfffRo7duwZ+w4dOqT7779fDzzwgD788EP17t1b06ZNc+1/9tln9d1332njxo167bXX9PLLL2vz5s1Nvla/fv1cuffZZ5/VH/7wB33++eceOS/An1EEAn7mnXfekdVq1VVXXaWoqCg98MADWrdunY4ePXrWY6Ojo2W1WvXPf/7Tte2OO+7Q8uXLJdV/C3rrrbfq//v//j9dddVVslqtKi4udj135cqVGjZsmPr37y+r1apVq1a5/wQBADjF8OHD9ctf/rLRES/r1q1Tz549dcMNN6hjx46aMmWKvvzyS1eey8vL03333ae4uDhdeOGFGjduXItvgfjZz36mCy+80NXW/v37dckll8hut0uqz585OTm65ZZb1L9/f/33f/+3Dh06JEmqqanRgw8+qAEDBujKK6/U2LFj9eOPP7qhNwDvoAgEfGTRokUaMGCAbrnlFn3wwQeu7V9//bUuueQS188/+clP1KFDB+3du/esbVZUVKioqEh9+/Zt8jm7du3SBRdcoO3bt+uuu+7So48+KqfTqaqqKj3xxBN66aWX9Mknn+jPf/6zLrvssnadIwAA7XF6TuzUqZN+8pOfaM+ePaqoqNAPP/ygSy+91LX/0ksv1Z49e1rU9q5du7R371717t27yeesXr1aTz75pN5//32dOHFCf/zjHyXVF59Hjx7Vpk2b9MEHH+jxxx93DTMFAgGLxQM+8OCDD+rCCy9UeHi4CgsL9Zvf/EYFBQX6yU9+oqqqKsXExDR4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KAIBAAAAIIRQBAJttH79el1yySX65z//6etQzspqtSo1NVWpqam6/fbbdeDAgWafv3//fr3zzjuun//+97/riSee8HSYAIAgQY4E/BtFINBGq1ev1s9//nMVFha6pT2Hw+GWdpqybNkyvfPOO/rFL36h559/vtnnHjhwQKtXr3b9fPnll+t3v/udR+MDAAQPciTg3ygCgTY4duyYPv74Y82bN8+V4DZv3qysrCzXcz744APdc889kqStW7dq/PjxSk9PV1ZWlo4dOyap/tvHP/zhD0pPT9df//pXvfXWWxo7dqxuuukmTZkyRdXV1ZKk77//XjfffLNSU1O1ePFi9e/f3/U6L7/8ssaOHavU1FQ988wzZ429X79+stlskuq/zZwwYYLS09OVnp6uHTt2SJIWLVqkjz76SKNHj9arr77a4FyeffZZPfzww7rjjjs0bNgwvfbaa662n3vuOY0YMUK33nqrsrOz9corr7S5jwEAgYkcSY6E/6MIBNqgqKhI1157rS644AJ17txZn332ma655hrt2rVLVVVVkqR3331XI0eO1KFDh/T8889r6dKlysvLU+/evbV06VJXW/Hx8crLy9OoUaOUkpKit99+W6tWrVKPHj20YsUKSdK8efP0q1/9Su+8846Sk5Ndx27dulXfffedVqxYoYKCAu3evVt/+9vfmo19y5Yt+uUvfylJ6tKliyuuxYsXu4azTJ8+XVdeeaUKCgo0ceLEM9r49ttv9corr2j58uV67rnndOLECe3atUtr167VqlWr9NJLL+mzzz5rVx8DAAITOZIcCf9n9nUAQCAqLCzUr371K0nSyJEjVVhYqN69e+vaa6/Vxo0bNWLECBUXF2vGjBn629/+pj179ujWW2+VJJ04cUL9+vVztTVy5EjX46+//lo5OTk6cuSIjh07psGDB0uSdu7cqeeee06SlJqaqqeeekqStG3bNm3btk1paWmSpKqqKu3du1dXXXXVGTH/+te/Vnl5uTp16qQHHnhAkmS32zVnzhx9+eWXCgsL0969e1t0/kOHDlV4eLgSEhKUkJCgsrIy7dixQ8OGDVPHjh3VsWNHXXfddS3vUABA0CBHkiPh/ygCgVYqLy/X9u3b9Y9//EOGYcjhcMgwDD300EMaOXKkXn/9dcXFxal3796Kjo6W0+nUoEGD9PTTTzfaXmRkpOvxzJkz9f/+3//TpZdeqpUrV+rDDz9sNhan06lJkybplltuOWvcy5YtU2xsrB588EHXcJVXX31V55xzjgoKClRXV6c+ffq0qA/Cw8Ndj00mk+x2e4uOAwAEN3IkORKBgeGgQCutWbNGo0eP1saNG7VhwwYVFxfrvPPO00cffaRf/OIX+vzzz/XWW2+5vr3s16+fduzYoe+++05S/TeR3377baNtHzt2TImJiTpx4kSDmcf69u2rtWvXSlKDm+wHDx6st99+23X/hM1mU1lZWZOxm81mPfLII8rPz1d5ebmOHDmixMREhYWFqaCgwHXjfVRUlKvNlrriiiu0ceNG1dTU6NixY9q0aVOrjgcABD5yZOPIkfA3FIFAK61evdp1v8BJw4cP1+rVq2UymfRf//Vf2rJli2uoR0JCgp588kllZ2crNTVV48eP1zfffNNo2w888IDGjRunW2+9VT169HBtf+SRR7R06VKlpqbqu+++U3R0tKT6BHfjjTfqlltuUWpqaoMb6puSlJSkG2+8Ua+//romTJigvLw83XTTTfrmm2/UqVMnSdIll1yisLAw3XTTTXr11Vdb1C99+vSR1WrVTTfdpLvvvlsXX3yxYmJiWnQsACA4kCMbR46EvzGcTqfT10EAaF51dbUiIiJkGIYKCwu1evXqs05h7QvHjh1TVFSUqqurddttt2nu3Lnq1auXr8MCAAQxciTQetwTCASA3bt3a86cOXI6nYqNjdX8+fN9HVKjZs2apT179qimpkbp6ekkNwCAx5EjgdbjSiAAAAAAhBDuCQQAAACAEEIRCAAAAAAhhCIQAAAAAEIIRSAAAAAAhBCKQAAAAAAIIf8/R1qYNW3iHD0AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 1080x720 with 4 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# average rating per movie\n",
    "rating_mean = ratings.groupby('movieID')['rating'].agg('mean')\n",
    "\n",
    "fig, axes = plt.subplots(2, 2, figsize=(15,10))\n",
    "sns.histplot(rating_mean, ax=axes[0,0], bins=5);\n",
    "axes[0,0].set_title('5 Bins')\n",
    "axes[0,0].set_xlabel('Average Rating');\n",
    "axes[0,0].set_ylabel('Frequency');\n",
    "\n",
    "sns.histplot(rating_mean, ax=axes[0,1], bins=10);\n",
    "axes[0,1].set_title('10 Bins')\n",
    "axes[0,1].set_xlabel('Average Rating');\n",
    "axes[0,1].set_ylabel('Frequency');\n",
    "\n",
    "sns.histplot(rating_mean, ax=axes[1,0], bins=50);\n",
    "axes[1,0].set_title('50 Bins')\n",
    "axes[1,0].set_xlabel('Average Rating');\n",
    "axes[1,0].set_ylabel('Frequency');\n",
    "\n",
    "sns.histplot(rating_mean, ax=axes[1,1], bins=100);\n",
    "axes[1,1].set_title('100 Bins')\n",
    "axes[1,1].set_xlabel('Average Rating');\n",
    "axes[1,1].set_ylabel('Frequency');"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "87440f18-00ed-4f47-80d2-00044e4bca1e",
   "metadata": {},
   "source": [
    "#### Stem and Leaf Plot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "id": "d6e3243e-f16a-4122-bc96-e215abee9085",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 540x144 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "stem_ratings = ratings.sample(n=20, random_state=3)\n",
    "fig, ax = stemgraphic.stem_graphic(stem_ratings['rating'])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8f08e7f6-974a-4630-9bd9-290c83a543c0",
   "metadata": {},
   "source": [
    "### Multivariate Graphical EDA"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "dataeng_kernel",
   "language": "python",
   "name": "dataeng_kernel"
  },
  "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.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}