from ibis.interactive import *
- 1
-
This import imports
ibis.examples
asex
.
Let’s use the Ibis examples module and the DuckDB backend to find some movies to watch.
Adapted from Phillip in the Cloud’s livestream using the same data.
For this example, we’ll just use Ibis.
We can use the ibis.examples
module to fetch the IMDB data. Ibis automatically caches the data on disk so subsequent runs don’t require fetching from cloud storage on each call to fetch
.
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ nconst ┃ primaryName ┃ birthYear ┃ deathYear ┃ primaryProfession ┃ knownForTitles ┃ ┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ │ string │ string │ int64 │ int64 │ string │ string │ ├───────────┼─────────────────┼───────────┼───────────┼────────────────────────────────────┼─────────────────────────────────────────┤ │ nm0000001 │ Fred Astaire │ 1899 │ 1987 │ actor,miscellaneous,producer │ tt0072308,tt0050419,tt0053137,tt0027125 │ │ nm0000002 │ Lauren Bacall │ 1924 │ 2014 │ actress,soundtrack,archive_footage │ tt0037382,tt0075213,tt0117057,tt0038355 │ │ nm0000003 │ Brigitte Bardot │ 1934 │ NULL │ actress,music_department,producer │ tt0057345,tt0049189,tt0056404,tt0054452 │ │ nm0000004 │ John Belushi │ 1949 │ 1982 │ actor,writer,music_department │ tt0072562,tt0077975,tt0080455,tt0078723 │ │ nm0000005 │ Ingmar Bergman │ 1918 │ 2007 │ writer,director,actor │ tt0050986,tt0083922,tt0050976,tt0069467 │ │ nm0000006 │ Ingrid Bergman │ 1915 │ 1982 │ actress,producer,soundtrack │ tt0034583,tt0036855,tt0038109,tt0038787 │ │ nm0000007 │ Humphrey Bogart │ 1899 │ 1957 │ actor,producer,miscellaneous │ tt0034583,tt0042593,tt0043265,tt0037382 │ │ nm0000008 │ Marlon Brando │ 1924 │ 2004 │ actor,director,writer │ tt0078788,tt0068646,tt0047296,tt0070849 │ │ nm0000009 │ Richard Burton │ 1925 │ 1984 │ actor,producer,director │ tt0061184,tt0087803,tt0059749,tt0057877 │ │ nm0000010 │ James Cagney │ 1899 │ 1986 │ actor,director,producer │ tt0029870,tt0031867,tt0042041,tt0035575 │ │ … │ … │ … │ … │ … │ … │ └───────────┴─────────────────┴───────────┴───────────┴────────────────────────────────────┴─────────────────────────────────────────┘
To ensure column names are Pythonic, we can rename as snake_case
.
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ nconst ┃ primary_name ┃ birth_year ┃ death_year ┃ primary_profession ┃ known_for_titles ┃ ┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ │ string │ string │ int64 │ int64 │ string │ string │ ├───────────┼─────────────────┼────────────┼────────────┼────────────────────────────────────┼─────────────────────────────────────────┤ │ nm0000001 │ Fred Astaire │ 1899 │ 1987 │ actor,miscellaneous,producer │ tt0072308,tt0050419,tt0053137,tt0027125 │ │ nm0000002 │ Lauren Bacall │ 1924 │ 2014 │ actress,soundtrack,archive_footage │ tt0037382,tt0075213,tt0117057,tt0038355 │ │ nm0000003 │ Brigitte Bardot │ 1934 │ NULL │ actress,music_department,producer │ tt0057345,tt0049189,tt0056404,tt0054452 │ │ nm0000004 │ John Belushi │ 1949 │ 1982 │ actor,writer,music_department │ tt0072562,tt0077975,tt0080455,tt0078723 │ │ nm0000005 │ Ingmar Bergman │ 1918 │ 2007 │ writer,director,actor │ tt0050986,tt0083922,tt0050976,tt0069467 │ │ nm0000006 │ Ingrid Bergman │ 1915 │ 1982 │ actress,producer,soundtrack │ tt0034583,tt0036855,tt0038109,tt0038787 │ │ nm0000007 │ Humphrey Bogart │ 1899 │ 1957 │ actor,producer,miscellaneous │ tt0034583,tt0042593,tt0043265,tt0037382 │ │ nm0000008 │ Marlon Brando │ 1924 │ 2004 │ actor,director,writer │ tt0078788,tt0068646,tt0047296,tt0070849 │ │ nm0000009 │ Richard Burton │ 1925 │ 1984 │ actor,producer,director │ tt0061184,tt0087803,tt0059749,tt0057877 │ │ nm0000010 │ James Cagney │ 1899 │ 1986 │ actor,director,producer │ tt0029870,tt0031867,tt0042041,tt0035575 │ │ … │ … │ … │ … │ … │ … │ └───────────┴─────────────────┴────────────┴────────────┴────────────────────────────────────┴─────────────────────────────────────────┘
Let’s grab all of the relevant IMDB tables and rename columns.
name_basics = ex.imdb_name_basics.fetch().rename("snake_case")
title_akas = ex.imdb_title_akas.fetch().rename("snake_case")
title_basics = ex.imdb_title_basics.fetch().rename("snake_case")
title_crew = ex.imdb_title_crew.fetch().rename("snake_case")
title_episode = ex.imdb_title_episode.fetch().rename("snake_case")
title_principals = ex.imdb_title_principals.fetch().rename("snake_case")
title_ratings = ex.imdb_title_ratings.fetch().rename("snake_case")
We’ll print out the first few rows of each table to get an idea of what is contained in each.
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ nconst ┃ primary_name ┃ birth_year ┃ death_year ┃ primary_profession ┃ known_for_titles ┃ ┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ │ string │ string │ int64 │ int64 │ string │ string │ ├───────────┼─────────────────┼────────────┼────────────┼────────────────────────────────────┼─────────────────────────────────────────┤ │ nm0000001 │ Fred Astaire │ 1899 │ 1987 │ actor,miscellaneous,producer │ tt0072308,tt0050419,tt0053137,tt0027125 │ │ nm0000002 │ Lauren Bacall │ 1924 │ 2014 │ actress,soundtrack,archive_footage │ tt0037382,tt0075213,tt0117057,tt0038355 │ │ nm0000003 │ Brigitte Bardot │ 1934 │ NULL │ actress,music_department,producer │ tt0057345,tt0049189,tt0056404,tt0054452 │ │ nm0000004 │ John Belushi │ 1949 │ 1982 │ actor,writer,music_department │ tt0072562,tt0077975,tt0080455,tt0078723 │ │ nm0000005 │ Ingmar Bergman │ 1918 │ 2007 │ writer,director,actor │ tt0050986,tt0083922,tt0050976,tt0069467 │ └───────────┴─────────────────┴────────────┴────────────┴────────────────────────────────────┴─────────────────────────────────────────┘
┏━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┓ ┃ title_id ┃ ordering ┃ title ┃ region ┃ language ┃ types ┃ attributes ┃ is_original_title ┃ ┡━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━┩ │ string │ int64 │ string │ string │ string │ string │ string │ int64 │ ├───────────┼──────────┼───────────────────────────┼────────┼──────────┼─────────────┼───────────────┼───────────────────┤ │ tt0000001 │ 1 │ Carmencita │ NULL │ NULL │ original │ NULL │ 1 │ │ tt0000001 │ 2 │ Carmencita │ DE │ NULL │ NULL │ literal title │ 0 │ │ tt0000001 │ 3 │ Carmencita │ US │ NULL │ imdbDisplay │ NULL │ 0 │ │ tt0000001 │ 4 │ Carmencita - spanyol tánc │ HU │ NULL │ imdbDisplay │ NULL │ 0 │ │ tt0000001 │ 5 │ Καρμενσίτα │ GR │ NULL │ imdbDisplay │ NULL │ 0 │ └───────────┴──────────┴───────────────────────────┴────────┴──────────┴─────────────┴───────────────┴───────────────────┘
┏━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ tconst ┃ title_type ┃ primary_title ┃ original_title ┃ is_adult ┃ start_year ┃ end_year ┃ runtime_minutes ┃ genres ┃ ┡━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━┩ │ string │ string │ string │ string │ int64 │ int64 │ string │ int64 │ string │ ├───────────┼────────────┼────────────────────────┼────────────────────────┼──────────┼────────────┼──────────┼─────────────────┼──────────────────────────┤ │ tt0000001 │ short │ Carmencita │ Carmencita │ 0 │ 1894 │ NULL │ 1 │ Documentary,Short │ │ tt0000002 │ short │ Le clown et ses chiens │ Le clown et ses chiens │ 0 │ 1892 │ NULL │ 5 │ Animation,Short │ │ tt0000003 │ short │ Pauvre Pierrot │ Pauvre Pierrot │ 0 │ 1892 │ NULL │ 4 │ Animation,Comedy,Romance │ │ tt0000004 │ short │ Un bon bock │ Un bon bock │ 0 │ 1892 │ NULL │ 12 │ Animation,Short │ │ tt0000005 │ short │ Blacksmith Scene │ Blacksmith Scene │ 0 │ 1893 │ NULL │ 1 │ Comedy,Short │ └───────────┴────────────┴────────────────────────┴────────────────────────┴──────────┴────────────┴──────────┴─────────────────┴──────────────────────────┘
┏━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━┓ ┃ tconst ┃ directors ┃ writers ┃ ┡━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━┩ │ string │ string │ string │ ├───────────┼───────────┼─────────┤ │ tt0000001 │ nm0005690 │ NULL │ │ tt0000002 │ nm0721526 │ NULL │ │ tt0000003 │ nm0721526 │ NULL │ │ tt0000004 │ nm0721526 │ NULL │ │ tt0000005 │ nm0005690 │ NULL │ └───────────┴───────────┴─────────┘
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┓ ┃ tconst ┃ parent_tconst ┃ season_number ┃ episode_number ┃ ┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━┩ │ string │ string │ int64 │ int64 │ ├───────────┼───────────────┼───────────────┼────────────────┤ │ tt0041951 │ tt0041038 │ 1 │ 9 │ │ tt0042816 │ tt0989125 │ 1 │ 17 │ │ tt0042889 │ tt0989125 │ NULL │ NULL │ │ tt0043426 │ tt0040051 │ 3 │ 42 │ │ tt0043631 │ tt0989125 │ 2 │ 16 │ └───────────┴───────────────┴───────────────┴────────────────┘
┏━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓ ┃ tconst ┃ ordering ┃ nconst ┃ category ┃ job ┃ characters ┃ ┡━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩ │ string │ int64 │ string │ string │ string │ string │ ├───────────┼──────────┼───────────┼─────────────────┼─────────────────────────┼────────────┤ │ tt0000001 │ 1 │ nm1588970 │ self │ NULL │ ["Self"] │ │ tt0000001 │ 2 │ nm0005690 │ director │ NULL │ NULL │ │ tt0000001 │ 3 │ nm0005690 │ producer │ producer │ NULL │ │ tt0000001 │ 4 │ nm0374658 │ cinematographer │ director of photography │ NULL │ │ tt0000002 │ 1 │ nm0721526 │ director │ NULL │ NULL │ └───────────┴──────────┴───────────┴─────────────────┴─────────────────────────┴────────────┘
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓ ┃ tconst ┃ average_rating ┃ num_votes ┃ ┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩ │ string │ float64 │ int64 │ ├───────────┼────────────────┼───────────┤ │ tt0000001 │ 5.7 │ 2036 │ │ tt0000002 │ 5.7 │ 272 │ │ tt0000003 │ 6.5 │ 1985 │ │ tt0000004 │ 5.4 │ 178 │ │ tt0000005 │ 6.2 │ 2745 │ └───────────┴────────────────┴───────────┘
Let’s check how many records are in each table. It’s just Python, so we can construct a dictionary and iterate through it in a for loop.
print("Length of tables:")
for t in tables:
print(f"\t{t.ljust(max_name_len)}: {tables[t].count().to_pandas():,}")
Length of tables:
name_basics : 13,359,981
title_akas : 40,591,770
title_basics : 10,814,709
title_crew : 9,995,917
title_episode : 8,124,470
title_principals : 84,654,684
title_ratings : 1,416,620
Looking at the data, the nconst
and tconst
columns seem to be unique identifiers. Let’s confirm and adjust them accordingly.
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ nconst ┃ primary_name ┃ birth_year ┃ death_year ┃ primary_profession ┃ known_for_titles ┃ ┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ │ string │ string │ int64 │ int64 │ string │ string │ ├───────────┼─────────────────┼────────────┼────────────┼────────────────────────────────────┼─────────────────────────────────────────┤ │ nm0000001 │ Fred Astaire │ 1899 │ 1987 │ actor,miscellaneous,producer │ tt0072308,tt0050419,tt0053137,tt0027125 │ │ nm0000002 │ Lauren Bacall │ 1924 │ 2014 │ actress,soundtrack,archive_footage │ tt0037382,tt0075213,tt0117057,tt0038355 │ │ nm0000003 │ Brigitte Bardot │ 1934 │ NULL │ actress,music_department,producer │ tt0057345,tt0049189,tt0056404,tt0054452 │ │ nm0000004 │ John Belushi │ 1949 │ 1982 │ actor,writer,music_department │ tt0072562,tt0077975,tt0080455,tt0078723 │ │ nm0000005 │ Ingmar Bergman │ 1918 │ 2007 │ writer,director,actor │ tt0050986,tt0083922,tt0050976,tt0069467 │ └───────────┴─────────────────┴────────────┴────────────┴────────────────────────────────────┴─────────────────────────────────────────┘
Check the number of unique nconst
values.
Confirm it’s equal to the number of rows.
Mutate the table to convert nconst
to an integer.
┏━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ nconst ┃ primary_name ┃ birth_year ┃ death_year ┃ primary_profession ┃ known_for_titles ┃ ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ │ int64 │ string │ int64 │ int64 │ string │ string │ ├────────┼─────────────────┼────────────┼────────────┼────────────────────────────────────┼─────────────────────────────────────────┤ │ 1 │ Fred Astaire │ 1899 │ 1987 │ actor,miscellaneous,producer │ tt0072308,tt0050419,tt0053137,tt0027125 │ │ 2 │ Lauren Bacall │ 1924 │ 2014 │ actress,soundtrack,archive_footage │ tt0037382,tt0075213,tt0117057,tt0038355 │ │ 3 │ Brigitte Bardot │ 1934 │ NULL │ actress,music_department,producer │ tt0057345,tt0049189,tt0056404,tt0054452 │ │ 4 │ John Belushi │ 1949 │ 1982 │ actor,writer,music_department │ tt0072562,tt0077975,tt0080455,tt0078723 │ │ 5 │ Ingmar Bergman │ 1918 │ 2007 │ writer,director,actor │ tt0050986,tt0083922,tt0050976,tt0069467 │ └────────┴─────────────────┴────────────┴────────────┴────────────────────────────────────┴─────────────────────────────────────────┘
Let’s also turn primary_profession
into an array of strings instead of a single comma-separated string.
┏━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ nconst ┃ primary_name ┃ birth_year ┃ death_year ┃ primary_profession ┃ known_for_titles ┃ ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ │ int64 │ string │ int64 │ int64 │ array<string> │ string │ ├────────┼─────────────────┼────────────┼────────────┼─────────────────────────────────────────┼─────────────────────────────────────────┤ │ 1 │ Fred Astaire │ 1899 │ 1987 │ ['actor', 'miscellaneous', ... +1] │ tt0072308,tt0050419,tt0053137,tt0027125 │ │ 2 │ Lauren Bacall │ 1924 │ 2014 │ ['actress', 'soundtrack', ... +1] │ tt0037382,tt0075213,tt0117057,tt0038355 │ │ 3 │ Brigitte Bardot │ 1934 │ NULL │ ['actress', 'music_department', ... +1] │ tt0057345,tt0049189,tt0056404,tt0054452 │ │ 4 │ John Belushi │ 1949 │ 1982 │ ['actor', 'writer', ... +1] │ tt0072562,tt0077975,tt0080455,tt0078723 │ │ 5 │ Ingmar Bergman │ 1918 │ 2007 │ ['writer', 'director', ... +1] │ tt0050986,tt0083922,tt0050976,tt0069467 │ │ 6 │ Ingrid Bergman │ 1915 │ 1982 │ ['actress', 'producer', ... +1] │ tt0034583,tt0036855,tt0038109,tt0038787 │ │ 7 │ Humphrey Bogart │ 1899 │ 1957 │ ['actor', 'producer', ... +1] │ tt0034583,tt0042593,tt0043265,tt0037382 │ │ 8 │ Marlon Brando │ 1924 │ 2004 │ ['actor', 'director', ... +1] │ tt0078788,tt0068646,tt0047296,tt0070849 │ │ 9 │ Richard Burton │ 1925 │ 1984 │ ['actor', 'producer', ... +1] │ tt0061184,tt0087803,tt0059749,tt0057877 │ │ 10 │ James Cagney │ 1899 │ 1986 │ ['actor', 'director', ... +1] │ tt0029870,tt0031867,tt0042041,tt0035575 │ │ … │ … │ … │ … │ … │ … │ └────────┴─────────────────┴────────────┴────────────┴─────────────────────────────────────────┴─────────────────────────────────────────┘
And, combining the two concepts, convert known_for_titles
into an array of integers corresponding to tconst
identifiers.
t = t.mutate(
known_for_titles=_.known_for_titles.split(",").map(
lambda tconst: tconst.replace("tt", "").cast("int")
)
)
t
┏━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ nconst ┃ primary_name ┃ birth_year ┃ death_year ┃ primary_profession ┃ known_for_titles ┃ ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩ │ int64 │ string │ int64 │ int64 │ array<string> │ array<int64> │ ├────────┼─────────────────┼────────────┼────────────┼─────────────────────────────────────────┼────────────────────────┤ │ 1 │ Fred Astaire │ 1899 │ 1987 │ ['actor', 'miscellaneous', ... +1] │ [72308, 50419, ... +2] │ │ 2 │ Lauren Bacall │ 1924 │ 2014 │ ['actress', 'soundtrack', ... +1] │ [37382, 75213, ... +2] │ │ 3 │ Brigitte Bardot │ 1934 │ NULL │ ['actress', 'music_department', ... +1] │ [57345, 49189, ... +2] │ │ 4 │ John Belushi │ 1949 │ 1982 │ ['actor', 'writer', ... +1] │ [72562, 77975, ... +2] │ │ 5 │ Ingmar Bergman │ 1918 │ 2007 │ ['writer', 'director', ... +1] │ [50986, 83922, ... +2] │ │ 6 │ Ingrid Bergman │ 1915 │ 1982 │ ['actress', 'producer', ... +1] │ [34583, 36855, ... +2] │ │ 7 │ Humphrey Bogart │ 1899 │ 1957 │ ['actor', 'producer', ... +1] │ [34583, 42593, ... +2] │ │ 8 │ Marlon Brando │ 1924 │ 2004 │ ['actor', 'director', ... +1] │ [78788, 68646, ... +2] │ │ 9 │ Richard Burton │ 1925 │ 1984 │ ['actor', 'producer', ... +1] │ [61184, 87803, ... +2] │ │ 10 │ James Cagney │ 1899 │ 1986 │ ['actor', 'director', ... +1] │ [29870, 31867, ... +2] │ │ … │ … │ … │ … │ … │ … │ └────────┴─────────────────┴────────────┴────────────┴─────────────────────────────────────────┴────────────────────────┘
We can define functions to convert nconst
and tconst
to integers.
Then combine the previous data cleansing in a single mutate call.
name_basics = name_basics.mutate(
nconst=nconst_to_int(_.nconst),
primary_profession=_.primary_profession.split(","),
known_for_titles=_.known_for_titles.split(",").map(tconst_to_int),
)
name_basics
┏━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ nconst ┃ primary_name ┃ birth_year ┃ death_year ┃ primary_profession ┃ known_for_titles ┃ ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩ │ int64 │ string │ int64 │ int64 │ array<string> │ array<int64> │ ├────────┼─────────────────┼────────────┼────────────┼─────────────────────────────────────────┼────────────────────────┤ │ 1 │ Fred Astaire │ 1899 │ 1987 │ ['actor', 'miscellaneous', ... +1] │ [72308, 50419, ... +2] │ │ 2 │ Lauren Bacall │ 1924 │ 2014 │ ['actress', 'soundtrack', ... +1] │ [37382, 75213, ... +2] │ │ 3 │ Brigitte Bardot │ 1934 │ NULL │ ['actress', 'music_department', ... +1] │ [57345, 49189, ... +2] │ │ 4 │ John Belushi │ 1949 │ 1982 │ ['actor', 'writer', ... +1] │ [72562, 77975, ... +2] │ │ 5 │ Ingmar Bergman │ 1918 │ 2007 │ ['writer', 'director', ... +1] │ [50986, 83922, ... +2] │ │ 6 │ Ingrid Bergman │ 1915 │ 1982 │ ['actress', 'producer', ... +1] │ [34583, 36855, ... +2] │ │ 7 │ Humphrey Bogart │ 1899 │ 1957 │ ['actor', 'producer', ... +1] │ [34583, 42593, ... +2] │ │ 8 │ Marlon Brando │ 1924 │ 2004 │ ['actor', 'director', ... +1] │ [78788, 68646, ... +2] │ │ 9 │ Richard Burton │ 1925 │ 1984 │ ['actor', 'producer', ... +1] │ [61184, 87803, ... +2] │ │ 10 │ James Cagney │ 1899 │ 1986 │ ['actor', 'director', ... +1] │ [29870, 31867, ... +2] │ │ … │ … │ … │ … │ … │ … │ └────────┴─────────────────┴────────────┴────────────┴─────────────────────────────────────────┴────────────────────────┘
We can use ibis.to_sql
to see the SQL this generates.
SELECT
CAST(REPLACE("t0"."nconst", 'nm', '') AS BIGINT) AS "nconst",
"t0"."primaryName" AS "primary_name",
"t0"."birthYear" AS "birth_year",
"t0"."deathYear" AS "death_year",
STR_SPLIT("t0"."primaryProfession", ',') AS "primary_profession",
LIST_APPLY(
STR_SPLIT("t0"."knownForTitles", ','),
__ibis_param_tconst__ -> CAST(REPLACE(__ibis_param_tconst__, 'tt', '') AS BIGINT)
) AS "known_for_titles"
FROM "imdb_name_basics" AS "t0"
Clean the rest of the tables. We’ll convert nconst
and tconst
columns consistently to allow for easy joining.
title_akas = title_akas.mutate(title_id=tconst_to_int(_.title_id)).rename(
tconst="title_id"
)
title_basics = title_basics.mutate(tconst=tconst_to_int(_.tconst))
title_crew = title_crew.mutate(
tconst=tconst_to_int(_.tconst),
directors=_.directors.split(",").map(nconst_to_int),
writers=_.writers.split(",").map(nconst_to_int),
)
title_episode = title_episode.mutate(
tconst=tconst_to_int(_.tconst), parent_tconst=tconst_to_int(_.parent_tconst)
)
title_principals = title_principals.mutate(
tconst=tconst_to_int(_.tconst), nconst=nconst_to_int(_.nconst)
)
title_ratings = title_ratings.mutate(tconst=tconst_to_int(_.tconst))
Join the IMDB rankings with information about the movies.
┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓ ┃ tconst ┃ title_type ┃ primary_title ┃ original_title ┃ is_adult ┃ start_year ┃ end_year ┃ runtime_minutes ┃ genres ┃ average_rating ┃ num_votes ┃ ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩ │ int64 │ string │ string │ string │ int64 │ int64 │ string │ int64 │ string │ float64 │ int64 │ ├────────┼────────────┼─────────────────────────────────────────────┼─────────────────────────────────────────────┼──────────┼────────────┼──────────┼─────────────────┼──────────────────────────┼────────────────┼───────────┤ │ 1 │ short │ Carmencita │ Carmencita │ 0 │ 1894 │ NULL │ 1 │ Documentary,Short │ 5.7 │ 2036 │ │ 2 │ short │ Le clown et ses chiens │ Le clown et ses chiens │ 0 │ 1892 │ NULL │ 5 │ Animation,Short │ 5.7 │ 272 │ │ 3 │ short │ Pauvre Pierrot │ Pauvre Pierrot │ 0 │ 1892 │ NULL │ 4 │ Animation,Comedy,Romance │ 6.5 │ 1985 │ │ 4 │ short │ Un bon bock │ Un bon bock │ 0 │ 1892 │ NULL │ 12 │ Animation,Short │ 5.4 │ 178 │ │ 5 │ short │ Blacksmith Scene │ Blacksmith Scene │ 0 │ 1893 │ NULL │ 1 │ Comedy,Short │ 6.2 │ 2745 │ │ 6 │ short │ Chinese Opium Den │ Chinese Opium Den │ 0 │ 1894 │ NULL │ 1 │ Short │ 5.0 │ 183 │ │ 7 │ short │ Corbett and Courtney Before the Kinetograph │ Corbett and Courtney Before the Kinetograph │ 0 │ 1894 │ NULL │ 1 │ Short,Sport │ 5.4 │ 852 │ │ 8 │ short │ Edison Kinetoscopic Record of a Sneeze │ Edison Kinetoscopic Record of a Sneeze │ 0 │ 1894 │ NULL │ 1 │ Documentary,Short │ 5.4 │ 2181 │ │ 9 │ movie │ Miss Jerry │ Miss Jerry │ 0 │ 1894 │ NULL │ 45 │ Romance │ 5.3 │ 209 │ │ 10 │ short │ Leaving the Factory │ La sortie de l'usine Lumière à Lyon │ 0 │ 1895 │ NULL │ 1 │ Documentary,Short │ 6.8 │ 7506 │ │ … │ … │ … │ … │ … │ … │ … │ … │ … │ … │ … │ └────────┴────────────┴─────────────────────────────────────────────┴─────────────────────────────────────────────┴──────────┴────────────┴──────────┴─────────────────┴──────────────────────────┴────────────────┴───────────┘
┏━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┓ ┃ title_type ┃ title_type_count ┃ ┡━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━┩ │ string │ int64 │ ├──────────────┼──────────────────┤ │ tvEpisode │ 706019 │ │ movie │ 306726 │ │ short │ 156909 │ │ tvSeries │ 94209 │ │ video │ 52785 │ │ tvMovie │ 52535 │ │ tvMiniSeries │ 16859 │ │ videoGame │ 16077 │ │ tvSpecial │ 12212 │ │ tvShort │ 2289 │ └──────────────┴──────────────────┘
Filter down to movies.
┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓ ┃ tconst ┃ title_type ┃ primary_title ┃ original_title ┃ is_adult ┃ start_year ┃ end_year ┃ runtime_minutes ┃ genres ┃ average_rating ┃ num_votes ┃ ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩ │ int64 │ string │ string │ string │ int64 │ int64 │ string │ int64 │ string │ float64 │ int64 │ ├────────┼────────────┼──────────────────────────────┼──────────────────────────────────────┼──────────┼────────────┼──────────┼─────────────────┼─────────────────────────┼────────────────┼───────────┤ │ 2101 │ movie │ Cleopatra │ Cleopatra │ 0 │ 1912 │ NULL │ 100 │ Drama,History │ 5.1 │ 619 │ │ 2130 │ movie │ Dante's Inferno │ L'Inferno │ 0 │ 1911 │ NULL │ 71 │ Adventure,Drama,Fantasy │ 7.0 │ 3408 │ │ 2153 │ movie │ The Great Circus Catastrophe │ Dødsspring til hest fra cirkuskuplen │ 0 │ 1912 │ NULL │ 45 │ Drama │ 6.0 │ 81 │ │ 2186 │ movie │ The Flying Circus │ Den flyvende cirkus │ 0 │ 1912 │ NULL │ 46 │ Drama │ 6.4 │ 144 │ │ 2199 │ movie │ From the Manger to the Cross │ From the Manger to the Cross │ 0 │ 1912 │ NULL │ 71 │ Biography,Drama │ 5.8 │ 635 │ │ 2220 │ movie │ Grannie │ Grannie │ 0 │ 1912 │ NULL │ NULL │ NULL │ 3.8 │ 46 │ │ 2262 │ movie │ Il y a des pieds au plafond │ Il y a des pieds au plafond │ 0 │ 1912 │ NULL │ NULL │ NULL │ 5.4 │ 13 │ │ 2305 │ movie │ Life of Villa │ Life of Villa │ 0 │ 1912 │ NULL │ NULL │ Documentary,War │ 7.6 │ 29 │ │ 2337 │ movie │ The Mail Order Wife │ The Mail Order Wife │ 0 │ 1912 │ NULL │ NULL │ NULL │ 5.8 │ 15 │ │ 2375 │ movie │ La mort du duc d'Enghien │ La mort du duc d'Enghien │ 0 │ 1912 │ NULL │ NULL │ NULL │ 5.7 │ 12 │ │ … │ … │ … │ … │ … │ … │ … │ … │ … │ … │ … │ └────────┴────────────┴──────────────────────────────┴──────────────────────────────────────┴──────────┴────────────┴──────────┴─────────────────┴─────────────────────────┴────────────────┴───────────┘
Reorder the columns and drop some.
joined = joined.select(
"tconst",
"primary_title",
"average_rating",
"num_votes",
"genres",
"runtime_minutes",
)
joined
┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓ ┃ tconst ┃ primary_title ┃ average_rating ┃ num_votes ┃ genres ┃ runtime_minutes ┃ ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩ │ int64 │ string │ float64 │ int64 │ string │ int64 │ ├────────┼──────────────────────────────┼────────────────┼───────────┼─────────────────────────┼─────────────────┤ │ 2101 │ Cleopatra │ 5.1 │ 619 │ Drama,History │ 100 │ │ 2130 │ Dante's Inferno │ 7.0 │ 3408 │ Adventure,Drama,Fantasy │ 71 │ │ 2153 │ The Great Circus Catastrophe │ 6.0 │ 81 │ Drama │ 45 │ │ 2186 │ The Flying Circus │ 6.4 │ 144 │ Drama │ 46 │ │ 2199 │ From the Manger to the Cross │ 5.8 │ 635 │ Biography,Drama │ 71 │ │ 2220 │ Grannie │ 3.8 │ 46 │ NULL │ NULL │ │ 2262 │ Il y a des pieds au plafond │ 5.4 │ 13 │ NULL │ NULL │ │ 2305 │ Life of Villa │ 7.6 │ 29 │ Documentary,War │ NULL │ │ 2337 │ The Mail Order Wife │ 5.8 │ 15 │ NULL │ NULL │ │ 2375 │ La mort du duc d'Enghien │ 5.7 │ 12 │ NULL │ NULL │ │ … │ … │ … │ … │ … │ … │ └────────┴──────────────────────────────┴────────────────┴───────────┴─────────────────────────┴─────────────────┘
Sort by the average rating.
┏━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓ ┃ tconst ┃ primary_title ┃ average_rating ┃ num_votes ┃ genres ┃ runtime_minutes ┃ ┡━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩ │ int64 │ string │ float64 │ int64 │ string │ int64 │ ├──────────┼────────────────────────────────────────────┼────────────────┼───────────┼───────────────────────────────┼─────────────────┤ │ 30177820 │ A Maiden's Tale │ 10.0 │ 181 │ Drama,Romance │ 59 │ │ 30209484 │ The Dark Web │ 10.0 │ 135 │ Crime,Thriller │ 110 │ │ 21139706 │ Prince Oak Oakleyski and News Interviewers │ 10.0 │ 59 │ Documentary,News,Reality-TV │ 60 │ │ 21065098 │ Prince Oak Oakleyski Starring Supremacy │ 10.0 │ 31 │ NULL │ 60 │ │ 10925174 │ Petersburg's tram │ 10.0 │ 28 │ Documentary,History │ 74 │ │ 9052412 │ Magnificus │ 10.0 │ 28 │ Biography,Documentary,History │ 70 │ │ 30981554 │ Non Solo Barzellette │ 10.0 │ 23 │ Comedy │ NULL │ │ 9303810 │ La Nueve, Heroes en el olvido │ 10.0 │ 22 │ Documentary │ NULL │ │ 21236128 │ We Are Art Through the Eyes of Annalaura │ 10.0 │ 16 │ Documentary │ 69 │ │ 12803632 │ The Dancin' Bulldogs │ 10.0 │ 14 │ Documentary │ 80 │ │ … │ … │ … │ … │ … │ … │ └──────────┴────────────────────────────────────────────┴────────────────┴───────────┴───────────────────────────────┴─────────────────┘
A lot of 10/10 movies I haven’t heard of … let’s filter to movies with at least N
votes.
┏━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓ ┃ tconst ┃ primary_title ┃ average_rating ┃ num_votes ┃ genres ┃ runtime_minutes ┃ ┡━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩ │ int64 │ string │ float64 │ int64 │ string │ int64 │ ├──────────┼───────────────────────────────────────────────────┼────────────────┼───────────┼─────────────────────────┼─────────────────┤ │ 111161 │ The Shawshank Redemption │ 9.3 │ 2873242 │ Drama │ 142 │ │ 68646 │ The Godfather │ 9.2 │ 2001286 │ Crime,Drama │ 175 │ │ 468569 │ The Dark Knight │ 9.0 │ 2855626 │ Action,Crime,Drama │ 152 │ │ 167260 │ The Lord of the Rings: The Return of the King │ 9.0 │ 1968792 │ Action,Adventure,Drama │ 201 │ │ 108052 │ Schindler's List │ 9.0 │ 1443212 │ Biography,Drama,History │ 195 │ │ 71562 │ The Godfather Part II │ 9.0 │ 1357703 │ Crime,Drama │ 202 │ │ 50083 │ 12 Angry Men │ 9.0 │ 859397 │ Crime,Drama │ 96 │ │ 23849204 │ 12th Fail │ 9.0 │ 105676 │ Biography,Drama │ 147 │ │ 110912 │ Pulp Fiction │ 8.9 │ 2207397 │ Crime,Drama │ 154 │ │ 120737 │ The Lord of the Rings: The Fellowship of the Ring │ 8.9 │ 1996832 │ Action,Adventure,Drama │ 178 │ │ … │ … │ … │ … │ … │ … │ └──────────┴───────────────────────────────────────────────────┴────────────────┴───────────┴─────────────────────────┴─────────────────┘
What if you’re in the mood for a bad movie?
┏━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓ ┃ tconst ┃ primary_title ┃ average_rating ┃ num_votes ┃ genres ┃ runtime_minutes ┃ ┡━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩ │ int64 │ string │ float64 │ int64 │ string │ int64 │ ├──────────┼─────────────────────────────────────┼────────────────┼───────────┼──────────────────────────┼─────────────────┤ │ 5988370 │ Reis │ 1.0 │ 74052 │ Biography,Drama │ 108 │ │ 7886848 │ Sadak 2 │ 1.2 │ 96671 │ Action,Drama │ 133 │ │ 1702443 │ Justin Bieber: Never Say Never │ 1.7 │ 76428 │ Documentary,Music │ 105 │ │ 10888594 │ Radhe │ 1.9 │ 179825 │ Action,Crime,Thriller │ 109 │ │ 1213644 │ Disaster Movie │ 1.9 │ 94399 │ Comedy,Sci-Fi │ 87 │ │ 7668842 │ Enes Batur: Imagination or Reality? │ 2.0 │ 55981 │ Comedy │ 110 │ │ 362165 │ Son of the Mask │ 2.3 │ 59171 │ Comedy,Family,Fantasy │ 94 │ │ 799949 │ Epic Movie │ 2.4 │ 109367 │ Adventure,Comedy,Fantasy │ 86 │ │ 185183 │ Battlefield Earth │ 2.5 │ 82933 │ Action,Adventure,Sci-Fi │ 117 │ │ 1098327 │ Dragonball Evolution │ 2.5 │ 79144 │ Action,Adventure,Fantasy │ 85 │ │ … │ … │ … │ … │ … │ … │ └──────────┴─────────────────────────────────────┴────────────────┴───────────┴──────────────────────────┴─────────────────┘
And specifically a bad comedy?
┏━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓ ┃ tconst ┃ primary_title ┃ average_rating ┃ num_votes ┃ genres ┃ runtime_minutes ┃ ┡━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩ │ int64 │ string │ float64 │ int64 │ string │ int64 │ ├──────────┼─────────────────────────────────────┼────────────────┼───────────┼──────────────────────────┼─────────────────┤ │ 1213644 │ Disaster Movie │ 1.9 │ 94399 │ Comedy,Sci-Fi │ 87 │ │ 7668842 │ Enes Batur: Imagination or Reality? │ 2.0 │ 55981 │ Comedy │ 110 │ │ 362165 │ Son of the Mask │ 2.3 │ 59171 │ Comedy,Family,Fantasy │ 94 │ │ 799949 │ Epic Movie │ 2.4 │ 109367 │ Adventure,Comedy,Fantasy │ 86 │ │ 10350922 │ Laxmii │ 2.5 │ 58686 │ Action,Comedy,Horror │ 141 │ │ 299930 │ Gigli │ 2.6 │ 50648 │ Comedy,Crime,Romance │ 121 │ │ 1073498 │ Meet the Spartans │ 2.8 │ 111394 │ Comedy,Fantasy │ 87 │ │ 466342 │ Date Movie │ 2.8 │ 62115 │ Comedy,Romance │ 83 │ │ 5697572 │ Cats │ 2.8 │ 55718 │ Comedy,Drama,Family │ 110 │ │ 810913 │ Jack and Jill │ 3.3 │ 90079 │ Comedy │ 91 │ │ … │ … │ … │ … │ … │ … │ └──────────┴─────────────────────────────────────┴────────────────┴───────────┴──────────────────────────┴─────────────────┘
Perfect!
We only used two of the IMDB tables. What else can we do with the rest of the data? Play around and let us know!