Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.
Управление содержимым и структурой DataFrame
Продолжаем разбирать возможности DataFrame. Мы узнали ещё далеко не все операции (статья 1, статья 2), которые можно делать таблицами.
Перебор и изменение содержимого DataFrame
Важная задача при работе с таблицами это получить любой элемент и изменить любой элемент таблицы. Как мы знаем, элемент таблицы это величина стоящая на пересечении строки и столбца. Другими словами у нас должна быть возможность перебирать строки таблицы и получить доступ к любому из полей текущей строки. И так укажем на три способа доступа к элементу таблицы (пусть это будет таблицы fr):
- fr[столбец][индекс] - чтение и запись;
- fr.loc[индекс][столбец] - чтение;
- fr.at[индекс, столбец] - чтение и запись.
Вот, собственно, на это можно опираться. Ну добавим ещё сюда fr.index, итерирующий объект, с помощью которого можно перебирать все значения индекса. Зная названия столбцов мы получаем полный доступ к таблице, к её содержимому. Рассмотрим программу ниже. Программа в цикле проходит по строкам, проверяет значение в одном из полей и меняет другое поле.
Условие if fr.loc[i]['Год рождения'] > 1997 можно заменить на if fr.at[i,'Год рождения'] > 1997 или на if fr['Год рождения'][i] > 1997. Действие fr.at[i, 'Зарплата'] = fr.at[i, 'Зарплата'] * 3 можно заменить на fr['Зарплата'][i] = fr['Зарплата'][i] * 3.
Результат выполнения программы см. на рисунке 2
Замечание
Таблицу, по которой можно передвигаться по принципу "следующая-предыдущая строка" обычно называют курсором. О курсорах мы еще будем говорить в подборке по реляционным базам данных.
Добавление столбцов к DataFrame
Для добавления столбцов в таблицу можно использовать три способа:
- Конструкция вида fr[Новы столбец] = [элементы, стоящие в столбце];
- Можно использовать метод insert(), он позволяет вставлять столбец в нужное место;
- Метод assign() позволяет создать новую таблицу с добавлением столбца.
#!/usr/bin/python3
import numpy as np
import pandas as pd
people = {'Фамилия': ['Иванов', 'Петров', 'Сидоров', 'Душечкина'],
'Год рождения': [1999, 1988, 1997, 2001],
'Зарплата': [88000.3, 65000.2, 70000.4, 75000.9]}
fr = pd.DataFrame(people)
fr['Data 1'] = [3, 9, 18, 36] # в конец
fr.insert(1, 'Data 2', ['A', 'B', 'C', 'D']) # перед столбцом с номером 1
fr = fr.assign(new = [100, 200, 300, 400]) # создание новой таблицы
print(fr)
Результат выполнения программы см. на рисунке 3.
Удаление столбцов DataFrame
Ну и наконец, для полного набора операций со структурой таблицы рассмотрим возможность удаления столбцов. Есть две не плохие возможности
- Метод drop(), он позволяет удалить сразу несколько столбцов;
- Метод pop(), он позволяет удалить только один столбец.
Рассмотрим программу ниже
#!/usr/bin/python3
import numpy as np
import pandas as pd
people = {'Фамилия': ['Иванов', 'Петров', 'Сидоров', 'Душечкина'],
'Год рождения': [1999, 1988, 1997, 2001],
'Зарплата': [88000.3, 65000.2, 70000.4, 75000.9],
'Должность': ['Директор', 'Мастер', 'Оператор', 'Уборщик']
}
fr = pd.DataFrame(people)
print(fr)
fr = fr.drop(['Фамилия', 'Год рождения'], axis=1)
fr.pop('Должность')
print(fr)
Результат выполнения программы на рисунке 4
Важное замечание
fr = fr.drop(['Фамилия', 'Год рождения'], axis=1) - создаётся новая таблица и мы присваиваем ей новое имя. Если вы не хотите создавать новую таблицу используйте вариант fr.drop(['Фамилия', 'Год рождения'], axis=1, inplace=True). Метод же pop() по умолчанию меняет текущую таблицу.
Ну, пока всё! Следующая статья здесь.
Пишите свои предложения и замечания, и занимайтесь программированием, а также проектированием баз данных, хотя бы для поддержания уровня интеллекта.