мета-данные страницы
  •  
Загрузка не удалась. Возможно, проблемы с правами доступа?

Это старая версия документа!


Что такое pandas?

Практически с момента появления Питон активно используется для предобработки данных (например, прочитать текстовый файл и выделить из него нужные куски, очистить текст от лишних символов и т.д.) Очищенные данные можно позже направить, например, в табличный процессор, СУБД или статистическую систему для последующего анализа.

Библиотека pandas добавляет в Питон значительную часть аналитической функциональности больших пакетов.

Что pandas умеет?

  • Эффективный и быстрый тип DataFrame с встроенной индексацией, предназначенный для обработки данных;
  • Утилиты для чтения и записи данных между оперативной памятю и разными файловыми форматами или СУБД: CSV, текстовые файлы, Microsoft Excel, SQL базы данных и быстрый HDF5;
  • Автоматизированное упорядочивание данных с встроенной обработкой отсутствующих частей дает возможность эффективно автоматически размечать данные и работать с плохо упорядоченными данными;
  • Гибкое преобразование наборов данных;
  • Умное разделение по меткам, красивое индексирование и выделение подмножеств из больших наборов данных;
  • Для изменения размера можно добавлять и удалять колонки в структурах данных;
  • Объединение и преобразование данных с мощными средствами группировки в режиме раздели-примени-объедини;
  • Высокопроизводительное слияние и объединение наборов данных;
  • Работа с временными рядами: создание временных диапазонов, преобразование отсчетов, обработка со скользящим окном, линейная регрессия с скользящим окном, смещение и т.д.

Начало работы

Обычно мы будем сразу подключать эти модули для работы (добавить в начало файла):

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

Создание объекта

Можно создать серию (Series) передав список значений, для этого списка pandas самостоятельно создаст индекс (присвоит каждому элементу уникальный номер)

s = pd.Series([1,3,5,np.nan,6,8])
print(s)
0    1.0
1    3.0
2    5.0
3    NaN
4    6.0
5    8.0
dtype: float64

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

Сначала создадим диапазон дан с помощью функции date_range из pandas

dates = pd.date_range('20130101', periods=6) # создаст диапазон из 6 дней, начиная с 1 января 2013 года
print(dates)
 
df = pd.DataFrame(np.random.randn(6,4), index=dates, columns=list('ABCD')) # создаст датафрейм из таблицы, размера 6 строк на 4 столбца (np.random.randn(6,4)), попросит в качестве индекса для строк использовать значения из переменной dates (index=dates), а для столбцов - список из четырех букв
print(df)
                   A         B         C         D
2013-01-01  0.469112 -0.282863 -1.509059 -1.135632
2013-01-02  1.212112 -0.173215  0.119209 -1.044236
2013-01-03 -0.861849 -2.104569 -0.494929  1.071804
2013-01-04  0.721555 -0.706771 -1.039575  0.271860
2013-01-05 -0.424972  0.567020  0.276232 -1.087401
2013-01-06 -0.673690  0.113648 -1.478427  0.524988

При создании датафрейма можно передать словарь объектов, который будет преобразован в серию

df2 = pd.DataFrame({ 'A' : 1., # одиночное вещественное число
                     'B' : pd.Timestamp('20130102'), # дата
                     'C' : pd.Series(1,index=list(range(4)),dtype='float32'), # список из четырех единиц с вещественным типом 
                     'D' : np.array([3] * 4,dtype='int32'), # 4 раза повторяется список из целочисленных троек
                     'E' : pd.Categorical(["test","train","test","train"]), # специальный тип, который хранит в себе категории, иными словами текстовые метки для данных
                     'F' : 'foo' }) # произвольная строка
 
print(df2)
   A          B    C  D      E    F

0 1.0 2013-01-02 1.0 3 test foo 1 1.0 2013-01-02 1.0 3 train foo 2 1.0 2013-01-02 1.0 3 test foo 3 1.0 2013-01-02 1.0 3 train foo <code>