Skip to content

Tasks pandas ​

Pandas Data Structures ​

2877. Create a DataFrame from List - Создать DataFrame из списка. (Вопрос: 2877) ​

Легкий

Напишите решение для создания DataFrame из двумерного списка с именем student_data. Этот двумерный список содержит идентификаторы и возраст некоторых студентов.

DataFrame должен содержать два столбца, student_id и age, и их порядок должен совпадать с порядком элементов в исходном двумерном списке.

Формат результата представлен в следующем примере.

Пример 1:

Входные данные: student_data:

text
[
  [1, 15],
  [2, 11],
  [3, 11],
  [4, 20]
]

Выходные данные:

text
+------------+-----+
| student_id | age |
+------------+-----+
| 1          | 15  |
| 2          | 11  |
| 3          | 11  |
| 4          | 20  |
+------------+-----+

Пояснение: На основе данных student_data был создан DataFrame с двумя столбцами, названными student_id и age.

python
import pandas as pd

def createDataframe(student_data: List[List[int]]) -> pd.DataFrame:

Data Inspection ​

2878. Get the Size of a DataFrame - Получение размера DataFrame ​

Легкий Намекать DataFrame_players:

text
+------------------+--------+
| Название столбца | Тип    |
+------------------+--------+
| player_id        | int    |
| имя              | объект |
| возраст          | инт    |
| позиция          | объект |
| ...              | ...    |
+------------------+--------+

Напишите решение для вычисления и отображения количества строк и столбцов players.

Верните результат в виде массива:

[number of rows, number of columns]

Формат результата представлен в следующем примере.

Пример 1:

Ввод:

text
+-----------+------------+-----+----------------------+-------------------+
| player_id | name       | age | position             | team              |
+-----------+------------+-----+----------------------+-------------------+
| 846       | Мейсон     | 21  | Вперед               | Реал Мадрид       |
| 749       | Райли      | 30  | Вингер               | Барселона         |
| 155       | Боб        | 28  | Нападающий           | Манчестер Юнайтед |
| 583       | Изабелла   | 32  | Вратарь              | Ливерпуль         |
| 388       | Захари     | 24  | Полузащитник         | Бавария Мюнхен    |
| 883       | Ава        | 23  | Защитник             | Челси             |
| 355       | Фиолетовый | 18  | Нападающий           | Ювентус           |
| 247       | Томас      | 27  | Нападающий           | Пари Сен-Жермен   |
| 761       | Джек       | 33  | Полузащитник         | Манчестер Сити    |
| 642       | Чарли      | 36  | Центральный защитник | Арсенал           |
+-----------+------------+-----+----------------------+-------------------+

Выход: [10, 5] Пояснение: Этот DataFrame содержит 10 строк и 5 столбцов.

python
import pandas as pd

def getDataframeSize(players: pd.DataFrame) -> List[int]:

2879. Display the First Three Rows - Отобразить первые три строки. ​

Легкий Намекать DataFrame: employees

text
+------------------+--------+
| Название столбца | Тип    |
+------------------+--------+
| employee_id      | int    |
| имя              | объект |
| отдел            | объект |
| зарплата         | инт    |
+------------------+--------+

Напишите решение для отображения первых 3 строк этого DataFrame.

Пример 1:

Входные данные: DataFrame employees

text
+--------------------------+----------+---------------------------+----------+
| идентификатор сотрудника | имя      | отдел                     | зарплата |
+--------------------------+----------+---------------------------+----------+
| 3                        | Боб      | Операции                  | 48675    |
| 90                       | Алиса    | Продажи                   | 11096    |
| 9                        | Татьяна  | Инженерное дело           | 33805    |
| 60                       | Аннабель | Информационные технологии | 37678    |
| 49                       | Джонатан | Человеческие ресурсы      | 23793    |
| 43                       | Халед    | Администрация             | 40454    |
+--------------------------+----------+---------------------------+----------+

Выход:

text
+--------------------------+---------+-----------------+----------+
| идентификатор сотрудника | имя     | отдел           | зарплата |
+--------------------------+---------+-----------------+----------+
| 3                        | Боб     | Операции        | 48675    |
| 90                       | Алиса   | Продажи         | 11096    |
| 9                        | Татьяна | Инженерное дело | 33805    |
+--------------------------+---------+-----------------+----------+

Пояснение: Отображаются только первые 3 строки.

python
import pandas as pd

def selectFirstRows(employees: pd.DataFrame) -> pd.DataFrame:

Data Selecting ​

2880. Select Data - Выберите данные (Вопрос: 2880) ​

Легкий Намекать DataFrame students

text
+------------------+--------+
| Название столбца | Тип    |
+------------------+--------+
| student_id       | int    |
| имя              | объект |
| возраст          | инт    |
+------------------+--------+

Напишите решение для выбора имени и возраста студента с помощью student_id = 101.

Формат результата представлен в следующем примере.

Пример 1: Вход:

text
+------------------------+--------+---------+
| идентификатор студента | имя    | возраст |
+------------------------+--------+---------+
| 101                    | Улисс  | 13      |
| 53                     | Уильям | 10      |
| 128                    | Генрих | 6       |
| 3                      | Генрих | 11      |
+------------------------+--------+---------+

Выход:

text
+-------+---------+
| имя   | возраст |
+-------+---------+
| Улисс | 13      |
+-------+---------+

Пояснение: У пользователя Ulysses идентификатор студента равен 101, мы выбираем имя и возраст.

python
import pandas as pd

def selectData(students: pd.DataFrame) -> pd.DataFrame:

2881. Create a New Column - Создать новый столбец (Вопрос: 2881) ​

Легкий Намекать DataFrame employees

text
+------------------+---------------+
| Название столбца | Тип           |
+------------------+---------------+
| имя              | объект        |
| зарплата         | международный |
+------------------+---------------+

Компания планирует выплатить своим сотрудникам премию.

Напишите решение для создания нового столбца с именем bonus, содержащего удвоенные значения столбца salary.

Формат результата представлен в следующем примере.

Пример 1:

Вход: DataFrame employees

text
+--------+----------+
| имя    | зарплата |
+--------+----------+
| Пайпер | 4548     |
| Грейс  | 28150    |
| Грузия | 1103     |
| Уиллоу | 6593     |
| Финн   | 74576    |
| Томас  | 24433    |
+--------+----------+

Выход:

text
+--------+----------+--------+
| имя    | зарплата | бонус  |
+--------+----------+--------+
| Пайпер | 4548     | 9096   |
| Грейс  | 28150    | 56300  |
| Грузия | 1103     | 2206   |
| Уиллоу | 6593     | 13186  |
| Финн   | 74576    | 149152 |
| Томас  | 24433    | 48866  |
+--------+----------+--------+

Пояснение: Новый бонус в столбце создается путем удвоения значения в столбце «Заработная плата».

python
import pandas as pd

def createBonusColumn(employees: pd.DataFrame) -> pd.DataFrame:

Data Cleaning ​

2882. Drop Duplicate Rows - Удалить повторяющиеся строки. (Вопрос: 2882) ​

Легкий Намекать DataFrame customers

text
+-------------------+--------+
| Название столбца  | Тип    |
+-------------------+--------+
| customer_id       | int    |
| имя               | объект |
| электронная почта | объект |
+-------------------+--------+

В DataFrame обнаружены повторяющиеся строки, соответствующие определенному email столбцу.

Напишите решение для удаления этих повторяющихся строк и сохранения только первого вхождения.

Формат результата представлен в следующем примере.

Пример 1: Входные данные:

text
+-----------------------+---------+---------------------+
| идентификатор клиента | имя     | электронная почта   |
+-----------------------+---------+---------------------+
| 1                     | Элла    | emily@example.com   |
| 2                     | Дэвид   | michael@example.com |
| 3                     | Захари  | sarah@example.com   |
| 4                     | Элис    | john@example.com    |
| 5                     | Финн    | john@example.com    |
| 6                     | Вайолет | alice@example.com   |
+-----------------------+---------+---------------------+

Выход:

text
+-----------------------+---------+---------------------+
| идентификатор клиента | имя     | электронная почта   |
+-----------------------+---------+---------------------+
| 1                     | Элла    | emily@example.com   |
| 2                     | Дэвид   | michael@example.com |
| 3                     | Захари  | sarah@example.com   |
| 4                     | Элис    | john@example.com    |
| 6                     | Вайолет | alice@example.com   |
+-----------------------+---------+---------------------+

Пояснение: Алик (customer_id = 4) и Финн (customer_id = 5) используют адрес john@example.com, поэтому сохраняется только первое упоминание этого адреса электронной почты.

python
import pandas as pd

def dropDuplicateEmails(customers: pd.DataFrame) -> pd.DataFrame:

2883. Drop Missing Data - Удалить отсутствующие данные. (Вопрос: 2883) ​

Легкий Намекать DataFrame students

text
+------------------+--------+
| Название столбца | Тип    |
+------------------+--------+
| student_id       | int    |
| имя              | объект |
| возраст          | инт    |
+------------------+--------+

В некоторых строках этого столбца отсутствуют значения name.

Напишите решение для удаления строк с пропущенными значениями.

Формат результата представлен в следующем примере.

Пример 1:

Ввод:

text
+------------------------+--------+---------+
| идентификатор студента | имя    | возраст |
+------------------------+--------+---------+
| 32                     | Пайпер | 5       |
| 217                    | Нет    | 19      |
| 779                    | Грузия | 20      |
| 849                    | Ива    | 14      |
+------------------------+--------+---------+

Вывод:

text
+------------------------+--------+---------+
| идентификатор студента | имя    | возраст |
+------------------------+--------+---------+
| 32                     | Пайпер | 5       |
| 779                    | Грузия | 20      |
| 849                    | Ива    | 14      |
+------------------------+--------+---------+

Пояснение: У студента с идентификатором 217 в столбце «Имя» пустое значение, поэтому оно будет удалено.

python
import pandas as pd

def dropMissingData(students: pd.DataFrame) -> pd.DataFrame:

2884. Modify Columns - Изменить столбцы (Вопрос: 2884) ​

Легкий Намекать DataFrame employees

text
+------------------+--------+
| Название столбца | Тип    |
+------------------+--------+
| имя              | объект |
| зарплата         | инт    |
+------------------+--------+

Компания намерена повысить заработную плату своим сотрудникам.

Напишите решение, которое изменит столбец salary, умножив каждую зарплату на 2.

Формат результата представлен в следующем примере.

Пример 1:

Входные данные: DataFrame employees

text
+--------+----------+
| имя    | зарплата |
+--------+----------+
| Джек   | 19666    |
| Пайпер | 74754    |
| Миа    | 62509    |
| Улисс  | 54866    |
+--------+----------+

Вывод:

text
+--------+----------+
| имя    | зарплата |
+--------+----------+
| Джек   | 39332    |
| Пайпер | 149508   |
| Миа    | 125018   |
| Улисс  | 109732   |
+--------+----------+

Пояснение: Всем сотрудникам удвоили зарплату.

python
import pandas as pd

def modifySalaryColumn(employees: pd.DataFrame) -> pd.DataFrame:

2885. Rename Columns - Переименовать столбцы (Вопрос: 2885) ​

Легкий Намекать DataFrame students

text
+------------------+--------+
| Название столбца | Тип    |
+------------------+--------+
| id               | int    |
| первый           | объект |
| последний        | объект |
| возраст          | инт    |
+------------------+--------+

Напишите решение для переименования столбцов следующим образом:

БылоСтало
idstudent_id
firstfirst_name
lastlast_name
ageage_in_years

Формат результата представлен в следующем примере.

Пример 1: Ввод:

text
+---------------+----------+---------+---------+
| идентификатор | имя      | фамилия | возраст |
+---------------+----------+---------+---------+
| 1             | Мейсон   | Кинг    | 6       |
| 2             | Ава      | Райт    | 7       |
| 3             | Тейлор   | Холл    | 16      |
| 4             | Джорджия | Томпсон | 18      |
| 5             | Томас    | Мур     | 10      |
+---------------+----------+---------+---------+

Выход:

text
+------------+------------+-----------+--------------+
| student_id | first_name | last_name | age_in_years |
+------------+------------+-----------+--------------+
| 1          | Мейсон     | Кинг      | 6            |
| 2          | Ава        | Райт      | 7            |
| 3          | Тейлор     | Холл      | 16           |
| 4          | Джорджия   | Томпсон   | 18           |
| 5          | Томас      | Мур       | 10           |
+------------+------------+-----------+--------------+

Пояснение: Названия столбцов изменены соответствующим образом.

python
import pandas as pd

def renameColumns(students: pd.DataFrame) -> pd.DataFrame:

2886. Change Data Type - Изменить тип данных (Вопрос: 2886) ​

Легкий Намекать DataFrame students

text
+------------------+-----------+
| Название столбца | Тип       |
+------------------+-----------+
| student_id       | int       |
| имя              | объект    |
| возраст          | инт       |
| класс            | плавающий |
+------------------+-----------+

Напишите решение для исправления ошибок:

В столбце grade хранятся числа с плавающей запятой, преобразуйте их в целые числа.

Формат результата представлен в следующем примере.

Пример 1: Входные данные: DataFrame students:

text
+------------------------+------+---------+-------+
| идентификатор студента | имя  | возраст | класс |
+------------------------+------+---------+-------+
| 1                      | Ава  | 6       | 73.0  |
| 2                      | Кейт | 15      | 87.0  |
+------------------------+------+---------+-------+

Вывод:

text
+------------------------+------+---------+-------+
| идентификатор студента | имя  | возраст | класс |
+------------------------+------+---------+-------+
| 1                      | Ава  | 6       | 73    |
| 2                      | Кейт | 15      | 87    |
+------------------------+------+---------+-------+

Пояснение: Тип данных столбца grade преобразуется в целое число (int).

python
import pandas as pd

def changeDatatype(students: pd.DataFrame) -> pd.DataFrame:

2887. Fill Missing Data - Заполните недостающие данные. (Вопрос: 2887) ​

Легкий Намекать DataFrame products

text
+------------------+--------+
| Название столбца | Тип    |
+------------------+--------+
| имя              | объект |
| количество       | инт    |
| цена             | инт    |
+------------------+--------+

Напишите решение для заполнения пропущенного значения 0 в quantity столбце.

Формат результата представлен в следующем примере.

Пример 1: Ввод:

text
+-----------------------+------------+------+
| название              | количество | цена |
+-----------------------+------------+------+
| Наручные часы         | Нет        | 135  |
| Беспроводные наушники | Нет        | 821  |
| Клюшки для гольфа     | 779        | 9319 |
| Принтер               | 849        | 3051 |
+-----------------------+------------+------+

Вывод:

text
+-----------------------+------------+------+
| название              | количество | цена |
+-----------------------+------------+------+
| Наручные часы         | 0          | 135  |
| Беспроводные наушники | 0          | 821  |
| Клюшки для гольфа     | 779        | 9319 |
| Принтер               | 849        | 3051 |
+-----------------------+------------+------+

Пояснение: Количество для наручных часов и беспроводных наушников заполнено значением 0.

python
import pandas as pd

def fillMissingValues(products: pd.DataFrame) -> pd.DataFrame:

Table Reshaping ​

2888. Reshape Data: Concatenate - Изменение формы данных: объединение. (Вопрос: 2888) ​

Легкий Намекать DataFrame df1

text
+------------------+--------+
| Название столбца | Тип    |
+------------------+--------+
| student_id       | int    |
| имя              | объект |
| возраст          | инт    |
+------------------+--------+

DataFrame df2

text
+------------------+--------+
| Название столбца | Тип    |
+------------------+--------+
| student_id       | int    |
| имя              | объект |
| возраст          | инт    |
+------------------+--------+

Напишите решение для вертикального объединения этих двух DataFrame в один DataFrame.

Формат результата представлен в следующем примере.

Пример 1: DataFrame df1:

text
+------------------------+--------+---------+
| идентификатор студента | имя    | возраст |
+------------------------+--------+---------+
| 1                      | Мейсон | 8       |
| 2                      | Ава    | 6       |
| 3                      | Тейлор | 15      |
| 4                      | Грузия | 17      |
+------------------------+--------+---------+

DataFrame df2:

text
+------------------------+-------+---------+
| идентификатор студента | имя   | возраст |
+------------------------+-------+---------+
| 5                      | Лев   | 7       |
| 6                      | Алекс | 7       |
+------------------------+-------+---------+

Выход: DataFrame df:

text
+------------------------+--------+---------+
| идентификатор студента | имя    | возраст |
+------------------------+--------+---------+
| 1                      | Мейсон | 8       |
| 2                      | Ава    | 6       |
| 3                      | Тейлор | 15      |
| 4                      | Грузия | 17      |
| 5                      | Лев    | 7       |
| 6                      | Алекс  | 7       |
+------------------------+--------+---------+

Пояснение: Два DataFrames расположены вертикально друг над другом, и их строки объединены.

python
import pandas as pd

def concatenateTables(df1: pd.DataFrame, df2: pd.DataFrame) -> pd.DataFrame:

2889. Reshape Data: Pivot - Изменение формы данных: сводная таблица. (Вопрос: 2889) ​

Легкий Намекать DataFrame weather

text
+------------------+------------+
| Название столбца | Тип        |
+------------------+------------+
| город            | объект     |
| месяц            | объект     |
| температура      | внутренний |
+------------------+------------+

Напишите решение для преобразования данных таким образом, чтобы каждая строка представляла температуру за конкретный месяц, а каждый город был отдельным столбцом.

Формат результата представлен в следующем примере.

Пример 1: Входные данные:

text
+-------------+---------+-------------+
| город       | месяц   | температура |
+-------------+---------+-------------+
| Джексонвилл | Январь  | 13          |
| Джексонвилл | Февраль | 23          |
| Джексонвилл | Март    | 38          |
| Джексонвилл | Апрель  | 5           |
| Джексонвилл | Май     | 34          |
| Эль-Пасо    | Январь  | 20          |
| Эль-Пасо    | Февраль | 6           |
| Эль-Пасо    | Март    | 26          |
| Эль-Пасо    | Апрель  | 2           |
| Эль-Пасо    | Май     | 43          |
+-------------+---------+-------------+

Результат:

text
+----------+--------+--------------+
| month    | ElPaso | Jacksonville |
+----------+--------+--------------+
| April    | 2      | 5            |
| February | 6      | 23           |
| January  | 20     | 13           |
| March    | 26     | 38           |
| May      | 43     | 34           |
+----------+--------+--------------+

Пояснение: Таблица является сводной, каждый столбец представляет город, а каждая строка — конкретный месяц.

python
import pandas as pd

def pivotTable(weather: pd.DataFrame) -> pd.DataFrame:

2890. Reshape Data: Melt - Изменение формы данных: Плавление (Вопрос: 2890) ​

Легкий Намекать

DataFrame report

text
+------------------+--------+
| Название столбца | Тип    |
+------------------+--------+
| продукт          | объект |
| quarter_1        | int    |
| quarter_2        | int    |
| quarter_3        | int    |
| quarter_4        | int    |
+------------------+--------+

Напишите решение для преобразования данных таким образом, чтобы каждая строка представляла данные о продажах продукта за определенный квартал.

Формат результата представлен в следующем примере.

Пример 1:

Ввод: DataFrame report:

text
+----------------+-----------+-----------+-----------+-----------+
| продукт        | quarter_1 | quarter_2 | quarter_3 | quarter_4 |
+----------------+-----------+-----------+-----------+-----------+
| Зонт           | 417       | 224       | 379       | 611       |
| Спальный мешок | 800       | 936       | 93        | 875       |
+----------------+-----------+-----------+-----------+-----------+

Выход:

text
+----------------+-----------+---------+
| продукт        | quarter   | продажи |
+----------------+-----------+---------+
| Зонт           | quarter_1 | 417     |
| Спальный мешок | quarter_1 | 800     |
| Зонт           | quarter_2 | 224     |
| Спальный мешок | quarter_2 | 936     |
| Зонт           | quarter_3 | 379     |
| Спальный мешок | quarter_3 | 93      |
| Зонт           | quarter_4 | 611     |
| Спальный мешок | quarter_4 | 875     |
+----------------+-----------+---------+

Пояснение: Формат DataFrame изменен с широкого на длинный. Каждая строка представляет собой объем продаж продукта за квартал.

python
import pandas as pd

def meltTable(report: pd.DataFrame) -> pd.DataFrame:

Advanced Techniques ​

2891. Method Chaining - Последовательность методов (Вопрос: 2891) ​

Легкий

DataFrame animals

text
+------------------+--------+
| Название столбца | Тип    |
+------------------+--------+
| имя              | объект |
| вид              | объект |
| возраст          | инт    |
| вес              | инт    |
+------------------+--------+

Напишите решение, которое перечислит названия животных, вес которых строго превышает 100 килограммы.

Верните животных, отсортированных по весу в порядке убывания.

Формат результата представлен в следующем примере.

Пример 1:

Вход: DataFrame animals:

text
+----------+----------+---------+-----+
| имя      | вид      | возраст | вес |
+----------+----------+---------+-----+
| Татьяна  | Змея     | 98      | 464 |
| Халед    | Жираф    | 50      | 41  |
| Алекс    | Леопард  | 6       | 328 |
| Джонатан | Обезьяна | 45      | 463 |
| Стефан   | Медведь  | 100     | 50  |
| Томми    | Панда    | 26      | 349 |
+----------+----------+---------+-----+

Выход:

text
+----------+
| имя      |
+----------+
| Татьяна  |
| Джонатан |
| Томми    |
| Алекс    |
+----------+

Пояснение: В таблицу результатов следует включить всех животных, вес которых превышает 100. Вес Татьяны составляет 464, вес Джонатана — 463, вес Томми — 349, а вес Алекса — 328. Результаты следует отсортировать в порядке убывания веса.

В Pandas цепочка методов позволяет выполнять операции над DataFrame без разбивки каждой операции на отдельную строку или создания множества временных переменных.

Вы сможете выполнить эту задачу всего одной строкой кода, используя цепочку методов?

python
import pandas as pd

def findHeavyAnimals(animals: pd.DataFrame) -> pd.DataFrame: