Загрузка данных


import pandas as pd

# Загружаем файл
df = pd.read_csv('/content/IMDB-Movie-Data.csv')


# ========================================
# ЗАДАНИЕ 1
# ========================================

sci_fi = df[df['Genre'].str.contains('Sci-Fi')]

print("ЗАДАНИЕ 1")
print("Количество научно-фантастических фильмов:", len(sci_fi))


# ========================================
# ЗАДАНИЕ 2
# ========================================

longest = df.loc[df['Runtime (Minutes)'].idxmax()]
shortest = df.loc[df['Runtime (Minutes)'].idxmin()]

print("\nЗАДАНИЕ 2")

print("Самый продолжительный фильм:")
print(longest[['Title', 'Director']])

print("\nСамый короткий фильм:")
print(shortest[['Title', 'Director']])


# ========================================
# ЗАДАНИЕ 3
# ========================================

comedies_2016 = df[
    (df['Genre'].str.contains('Comedy')) &
    (df['Year'] == 2016)
]

print("\nЗАДАНИЕ 3")
print("Комедии 2016 года:")
print(comedies_2016['Title'])


# ========================================
# ЗАДАНИЕ 4
# ========================================

df['Profit'] = df['Revenue (Millions)'] - df['Budget (Millions)']

top10 = df.sort_values(
    'Profit',
    ascending=False
).head(10)

print("\nЗАДАНИЕ 4")
print("Топ-10 наиболее прибыльных фильмов:")
print(top10[['Title', 'Director', 'Profit']])


# ========================================
# ЗАДАНИЕ 5
# ========================================

sci_fi = df[df['Genre'].str.contains('Sci-Fi')]

sci_fi_above_50 = sci_fi[sci_fi['Metascore'] > 50]

share = len(sci_fi_above_50) / len(sci_fi)

print("\nЗАДАНИЕ 5")
print("Доля Sci-Fi фильмов с Metascore выше 50:", share)


# ========================================
# ЗАДАНИЕ 6
# ========================================

dicaprio = df[
    df['Actors'].str.contains('Leonardo DiCaprio')
]

print("\nЗАДАНИЕ 6")
print("Фильмы с Leonardo DiCaprio:")
print(dicaprio['Title'])


# ========================================
# ЗАДАНИЕ 7
# ========================================

comedies = df[df['Genre'].str.contains('Comedy')]

# Способ 1 — groupby
comedy_by_year_groupby = (
    comedies
    .groupby('Year')['Title']
    .count()
    .sort_values(ascending=False)
)

print("\nЗАДАНИЕ 7")
print("Способ 1 — groupby:")
print(comedy_by_year_groupby)


# Способ 2 — pivot_table
comedy_by_year_pivot = pd.pivot_table(
    data=comedies,
    index='Year',
    values='Title',
    aggfunc='count'
).sort_values(
    'Title',
    ascending=False
)

print("\nСпособ 2 — pivot_table:")
print(comedy_by_year_pivot)


# ========================================
# ЗАДАНИЕ 8
# ========================================

comedy_groups = comedies.groupby('Year')

comedies_2016_group = comedy_groups.get_group(2016)

print("\nЗАДАНИЕ 8")
print("Комедии 2016 года:")
print(comedies_2016_group['Title'])