Исследуем данные с Pandas
Рассмотрим ряд простых операций для исследования данных из следующей учебной таблицы о студентах (успеваемость по предметам, пол, наличие обеда, взята с курса “Введение в Data Science и машинное обучение” сайта stepik.org):
Операции загрузки таблицы и выборки по значению поля
Отберем студентов, не прошедших тест (поле 'test preparation course').
stud = pd.read_csv('../data/students.csv')
stud[stud['test preparation course'] != 'completed']
Решим более сложную задачу - вычислим долю студентов, у которых в колонке lunch указано free/reduced:
Сначала получим представление таблицы, где stud.lunch=='free/reduced':
stud_part = stud[stud.lunch=='free/reduced']
Выведем соотношение строк, которое и будет равно искомой величине:
Отбор можно осуществить и с помощью оператора query. Например, извлечем студентов со стандартным ланчем следующей командой:
stud.query("lunch == 'standard'")
Операции выборки по нескольким условиям
Чтобы получить всех студенток с оценкой по чтению выше 50 можно воспользоваться следующей командой:
stud[(stud['reading score'] > 50) & (stud.gender == 'female')]
Теперь получим студентов, оценка за математику которых выше 60 и за чтение меньше либо равна 72:
stud[(stud['math score'] > 60) & (stud['reading score'] <=72)]
Чтобы не возникло ошибки, каждое из условий берется в скобки и используются логические операторы - & вместо and, | вместо or. Это необходимо, так как фильтрация происходит по массивам значений, а когда используется and или or предполагается приведение объекта (в нашем случае столбец) к одному значению True/False. Мы же хотим, чтобы логические операции производились поэлементно.
Операции выборки из множества значений
Отберем студентов, уровень образования родителей которых бакалавр или магистр:
stud[stud['parental level of education'].isin(["bachelor's degree", "master's degree"])]
Получение описательных статистик
Для получения среднего значения и дисперсии оценок по предметам у групп студентов со стандартным или урезанным ланчем можно сгруппировать значения по столбцу stud.lunch и вывести для столбцов оценок групповые среднее и дисперсию:
m_v = stud[['math score', 'reading score','writing score']]\
В результате получена следующая таблица:
По данным таблицы можно сделать вывод о том, что студенты со стандартным ланчем имеют в среднем более хорошие оценки и дисперсия оценок студентов со стандартным ланчем меньше.
Не пропустите ничего интересного и подписывайтесь на страницы канала в других социальных сетях: