Найти в Дзене
programmer's notes (python and more)

Программирование на языке Python. Библиотека pandas, операции с таблицами

Оглавление

Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.

Некоторые операции с таблицами pandas

В прошлой статье мы уже познакомились с таблицами - объектами класса DataFrame. Мы узнали два способа их создания - программно и из файла csv, узнали что их можно сортировать и как можно обратить к элементу таблицы, а также познакомились с некоторыми методами. Сегодня мы продолжим знакомиться с таблицами библиотеки pandas.

Статистика

Начнём с интересного метода describe(). С помощью него можно получить данные по статистики. По умолчанию метод выдаёт статистику числовых столбцов.

#!/usr/bin/python3
import numpy as np
import pandas as pd
fr = pd.read_csv('./Таблица.csv')
print(fr.describe())
print('Среднее:', fr['Зарплата'].describe(include='all').loc['mean'])

Результат выполнения программы см. на рисунке 1

Рисунок  1. Статистика, выдаваемая методом describe()
Рисунок 1. Статистика, выдаваемая методом describe()

Пояснения к программе

count - количество рассчитываемых в столбце величин.
mean - среднее значение.
min, max - минимальное и максимальное значения.
std - стандартное отклонение от среднего. Чем больше эта величина, тем больше разброс случайных значений.
25%, 50%, 75% - так называемые процентали. Значение, отклонение от которого случайной величины в большую сторону составляет соответствующий процент (25% -> 1/4).

Как мы видим, из программы, можно получить конкретное статистическое значение для конкретного столбца. Заметим, что названия статистических показателей есть ни что иное, как индекс строки. Да, да, индекс может быть и строкой и вещественным числом. Индекс указывается с помощью метода loc().

Добавление строки

Первый способ добавления строки в таблицу DataFrame. Метод _append().

#!/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)
sr = {'Фамилия': 'Кузкин', 'Год рождения': 1999, 'Зарплата': 50000}
sr1 = [sr, sr]
fr = fr._append(sr1, ignore_index=True)
print(fr)

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

Рисунок 2. Добавление строки с помощью метода append().
Рисунок 2. Добавление строки с помощью метода append().

Второй способ основывается на использование индекса. Этот подход более гибок. Можно указав индекс, который лежит между двумя другими, мы вставим строку между двумя строками. Напоминаю, что индекс может быть и вещественным число. Например, если у вас есть строки с индексами 1 и 2 и вы хотите вставить строку между ними - возьмите индекс 1.5.

Но мы рассмотрим вариант добавление строки в конец.

#!/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)
m = fr.index.max()
fr.loc[m + 1] = ['Кузнецов', 2000, 34888]
print(fr)

Результат выполнения программы на рисунке 3

Рисунок 3. Добавление строки
Рисунок 3. Добавление строки

Пояснение к программе

С помощью метода max() получаем максимальное значение индекса. Соответственно добавляем строку с индексом на единицу больше (см. метод loc()).

Замечание
Что произойдёт, если индекс добавляемой строки совпадёт с индексом уже существующей? Правильно, одна строка будет заменена другой.

Удаление строк

Удалить строки можно с помощью метода drop(), перечислив в списке индексы удаляемых строк.

#!/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 = fr.drop([0, 1])
print(fr)

Результат представлен на рисунке 4.

Рисунок 4. Удление строк с помощью метода drop()
Рисунок 4. Удление строк с помощью метода drop()

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

#!/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 = fr[fr.Фамилия != 'Петров']
fr = fr.query('Фамилия != "Иванов"')
print(fr)

Результат выполнения программы на рисунке 5

Рисунок 5. Удаление с помощью запросов
Рисунок 5. Удаление с помощью запросов

Пояснение к программе

Запрос можно указать непосредственно в квадратных скобках, где можно указать имя столбца. Вместо имени столбца мы указываем условие. Запрос можно реализовать и с помощью специального метода query().

Но к запросам мы, конечно, ещё вернёмся.

Ну, пока всё! Следующая статья по pandas здесь.

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

Ваши статданные мне не нравятся, несите другие
Ваши статданные мне не нравятся, несите другие