- •Python для науки о данных: перезагрузка Ремикс популярной книги Генри Гарнера "Clojure для науки о данных", 2015
- •Об авторе оригинала книги
- •Содержание
- •Предисловие автора к оригиналу книги на Clojure
- •Статистика
- •Скачивание исходного кода примеров
- •Обследование данных
- •Исправление данных
- •Описательные статистики
- •Среднее значение
- •Интерпретация математических обозначений
- •Медиана
- •Дисперсия
- •Квантили
- •Дискретизация данных
- •Гистограммы
- •Нормальное распределение
- •Центральная предельная теорема
- •Булочник господина Пуанкаре
- •Генерирование распределений
- •Асимметрия
- •Графики нормального распределения
- •Способы сопоставительной визуализации
- •Коробчатые диаграммы
- •Интегральные функции распределения
- •Важность визуализации
- •Визуализация данных об электорате
- •Обработка столбцов
- •Добавление производных столбцов
- •Сопоставительная визуализация электоральных данных
- •Визуализация электоральных данных рф
- •Сравнительная визуализация
- •Функции массы вероятности
- •Точечные графики
- •Настройка прозрачности разброса
Обработка столбцов
До этого в этой главе мы уменьшили размер наших данных при помощи фильтрации строк и столбцов. Нередко напротив требуется добавить строки в набор данных. Библиотека Pandas обеспечивает эту функциональность несколькими способами.
Во-первых, мы можем заменить существующий столбец в наборе данных либо добавить еще один столбец. Во-вторых, мы можем передать в столбцы новые значения для непосредственной замены существующих, либо вычислить новые значения, применив функции к каждой строке данных.
В следующем примере приведены варианты действий, которые будут использоваться в дальнешем. Для иллюстрации сгенерируем синтетическую таблицу данных в форме 3 x 2:
'''Операции над столбцами таблицы данных'''
# сгенерировать синтетическую таблицу данных
sp.random.seed(0)
df = pd.DataFrame(sp.random.randn(3, 2), columns=['A', 'B'])
|
A |
B |
0 |
1.764052 |
0.400157 |
1 |
0.978738 |
2.240893 |
2 |
1.867558 |
-0.977278 |
# заменить все значения в столбце новым значением
df['A'] = 1
|
A |
B |
0 |
1 |
0.400157 |
1 |
1 |
2.240893 |
2 |
1 |
-0.977278 |
# заменить все значения в столбце новой последовательностью
df['A'] = pd.Series(sp.random.randn(5))
|
A |
B |
0 |
0.950088 |
0.400157 |
1 |
-0.151357 |
2.240893 |
2 |
-0.103219 |
-0.977278 |
# заменить все значения в столбце, применив функцию
df['A'] = df.apply(lambda x: max(x['A'], x['B']), axis=1)
|
A |
B |
0 |
0.950088 |
0.400157 |
1 |
2.240893 |
2.240893 |
2 |
-0.103219 |
-0.977278 |
# заменить значение в заданной позиции столбца
df['A'][2] = 1
|
A |
B |
0 |
0.950088 |
0.400157 |
1 |
2.240893 |
2.240893 |
2 |
1.000000 |
-0.977278 |
# добавить производный столбец на основе существующих
df['C'] = df['A'] + df['B']
|
A |
B |
C |
0 |
0.950088 |
0.400157 |
1.350246 |
1 |
2.240893 |
2.240893 |
4.481786 |
2 |
1.000000 |
-0.977278 |
0.022722 |
# добавить производный столбец, применив функцию
df['D'] = df.apply( lambda x: min(x['A'], x['B']), axis=1 )
|
A |
B |
C |
D |
0 |
0.950088 |
0.400157 |
1.350246 |
0.400157 |
1 |
2.240893 |
2.240893 |
4.481786 |
2.240893 |
2 |
1.000000 |
-0.977278 |
0.022722 |
-0.977278 |
Именованный аргумент axis=1 назначает для выполняемых операций вертикальную ось, т.е. они применяются к столбцу.
Далее мы покажем, как добавлять производный столбец на реальном примере. В 2010 г. всеобщие выборы в Великобритании привели к "подвисшему" парламенту, в котором ни одна из партий не получила абсолютного большинства. В результате была образована коалиция между Консервативной и Либерально-демократической партиями. В следующем разделе мы узнаем, сколько людей проголосовало за обе партии, и какой процент от проголосовавших они составили.
