Перейти к основному содержимому
Перейти к основному содержимому

Справочник по классу DataStore

В этом справочнике описаны основные классы API DataStore.

DataStore

Основной класс, аналогичный DataFrame, для работы с данными.

from chdb.datastore import DataStore

Конструктор

DataStore(data=None, columns=None, index=None, dtype=None, copy=None)

Параметры:

ПараметрТипОписание
datadict/list/DataFrame/DataStoreВходные данные
columnslistИмена столбцов
indexIndexИндекс строки
dtypedictТипы данных столбцов
copyboolКопировать данные

Примеры:

# From dictionary
ds = DataStore({'a': [1, 2, 3], 'b': ['x', 'y', 'z']})

# From pandas DataFrame
import pandas as pd
ds = DataStore(pd.DataFrame({'a': [1, 2, 3]}))

# Empty DataStore
ds = DataStore()

Свойства

СвойствоТипОписание
columnsIndexИмена столбцов
dtypesSeriesТипы данных столбцов
shapetuple(строки, столбцы)
sizeintОбщее количество элементов
ndimintЧисло измерений (2)
emptyboolЯвляется ли DataFrame пустым
valuesndarrayБазовые данные в виде массива NumPy
indexIndexИндекс строк
TDataStoreТранспонированный DataStore
axeslistСписок осей

Методы-фабрики

МетодОписание
uri(uri)Универсальный метод-фабрика по URI
from_file(path, ...)Создать из файла
from_df(df)Создать из pandas DataFrame
from_s3(url, ...)Создать из S3
from_gcs(url, ...)Создать из Google Cloud Storage
from_azure(url, ...)Создать из Azure Blob
from_mysql(...)Создать из MySQL
from_postgresql(...)Создать из PostgreSQL
from_clickhouse(...)Создать из ClickHouse
from_mongodb(...)Создать из MongoDB
from_sqlite(...)Создать из SQLite
from_iceberg(path)Создать из таблицы Iceberg
from_delta(path)Создать из Delta Lake
from_numbers(n)Создать с последовательными числами
from_random(rows, cols)Создать со случайными данными
run_sql(query)Создать из SQL-запроса

Подробности см. в разделе Методы-фабрики.

Методы запросов

МетодВозвращаетОписание
select(*cols)DataStoreВыбрать столбцы
filter(condition)DataStoreОтфильтровать строки
where(condition)DataStoreСиноним метода filter
sort(*cols, ascending=True)DataStoreОтсортировать строки
orderby(*cols)DataStoreСиноним метода sort
limit(n)DataStoreОграничить количество строк
offset(n)DataStoreПропустить строки
distinct(subset=None)DataStoreУдалить дубликаты строк
groupby(*cols)LazyGroupByСгруппировать строки
having(condition)DataStoreОтфильтровать группы
join(right, ...)DataStoreОбъединить объекты DataStore
union(other, all=False)DataStoreСкомбинировать объекты DataStore
when(cond, val)CaseWhenCASE WHEN

Подробности см. в разделе Query Building.

Методы, совместимые с Pandas

Полный список из 209 методов см. в разделе Совместимость с Pandas.

Индексирование: head(), tail(), sample(), loc, iloc, at, iat, query(), isin(), where(), mask(), get(), xs(), pop()

Агрегация: sum(), mean(), std(), var(), min(), max(), median(), count(), nunique(), quantile(), describe(), corr(), cov(), skew(), kurt()

Манипуляции: drop(), drop_duplicates(), dropna(), fillna(), replace(), rename(), assign(), astype(), copy()

Сортировка: sort_values(), sort_index(), nlargest(), nsmallest(), rank()

Изменение структуры: pivot(), pivot_table(), melt(), stack(), unstack(), transpose(), explode(), squeeze()

Комбинирование: merge(), join(), concat(), append(), combine(), update(), compare()

Применение/преобразование: apply(), applymap(), map(), agg(), transform(), pipe(), groupby()

Временные ряды: rolling(), expanding(), ewm(), shift(), diff(), pct_change(), resample()

Методы ввода-вывода

МетодОписание
to_csv(path, ...)Экспорт в CSV
to_parquet(path, ...)Экспорт в Parquet
to_json(path, ...)Экспорт в JSON
to_excel(path, ...)Экспорт в Excel
to_df()Преобразовать в pandas DataFrame
to_pandas()Синоним to_df
to_arrow()Преобразовать в таблицу Arrow
to_dict(orient)Преобразовать в словарь
to_records()Преобразовать в записи
to_numpy()Преобразовать в массив NumPy
to_sql()Сгенерировать строку SQL
to_string()Строковое представление
to_markdown()Таблица в Markdown
to_html()Таблица в HTML

Подробности см. в разделе I/O Operations.

Методы отладки

MethodDescription
explain(verbose=False)Показать план выполнения
clear_cache()Очистить кэшированные результаты

Подробнее см. раздел Debugging.

Магические методы

MethodDescription
__getitem__(key)ds['col'], ds[['a', 'b']], ds[condition]
__setitem__(key, value)ds['col'] = value
__delitem__(key)del ds['col']
__len__()len(ds)
__iter__()for col in ds
__contains__(key)'col' in ds
__repr__()repr(ds)
__str__()str(ds)
__eq__(other)ds == other
__ne__(other)ds != other
__lt__(other)ds < other
__le__(other)ds <= other
__gt__(other)ds > other
__ge__(other)ds >= other
__add__(other)ds + other
__sub__(other)ds - other
__mul__(other)ds * other
__truediv__(other)ds / other
__floordiv__(other)ds // other
__mod__(other)ds % other
__pow__(other)ds ** other
__and__(other)ds & other
__or__(other)`ds
__invert__()~ds
__neg__()-ds
__pos__()+ds
__abs__()abs(ds)

ColumnExpr

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

# ColumnExpr is returned automatically
col = ds['name']  # Returns ColumnExpr

Свойства

СвойствоТипОписание
namestrИмя столбца
dtypedtypeТип данных

Аксессоры

AccessorОписаниеМетоды
.strОперации со строками56 методов
.dtОперации с DateTime42+ методов
.arrОперации с массивами37 методов
.jsonРазбор JSON13 методов
.urlРазбор URL15 методов
.ipОперации с IP-адресами9 методов
.geoГео-/операции с расстоянием14 методов

Полную документацию см. в разделе Accessors.

Арифметические операции

ds['total'] = ds['price'] * ds['quantity']
ds['profit'] = ds['revenue'] - ds['cost']
ds['ratio'] = ds['a'] / ds['b']
ds['squared'] = ds['value'] ** 2
ds['remainder'] = ds['value'] % 10

Операции сравнения

ds[ds['age'] > 25]           # Greater than
ds[ds['age'] >= 25]          # Greater or equal
ds[ds['age'] < 25]           # Less than
ds[ds['age'] <= 25]          # Less or equal
ds[ds['name'] == 'Alice']    # Equal
ds[ds['name'] != 'Bob']      # Not equal

Логические операции

ds[(ds['age'] > 25) & (ds['city'] == 'NYC')]    # AND
ds[(ds['age'] > 25) | (ds['city'] == 'NYC')]    # OR
ds[~(ds['status'] == 'inactive')]               # NOT

Методы

MethodDescription
as_(alias)Задать псевдоним
cast(dtype)Привести к типу
astype(dtype)Псевдоним для cast
isnull()Проверка на NULL
notnull()Проверка на не-NULL
isna()Псевдоним для isnull
notna()Псевдоним для notnull
isin(values)В списке значений
between(low, high)Между двумя значениями
fillna(value)Заполнить NULL-значения
replace(to_replace, value)Заменить значения
clip(lower, upper)Обрезать значения
abs()Абсолютное значение
round(decimals)Округлить значения
floor()Округление вниз до целого
ceil()Округление вверх до целого
apply(func)Применить функцию
map(mapper)Отобразить значения

Методы агрегации

MethodDescription
sum()Сумма
mean()Среднее значение
avg()Псевдоним функции mean
min()Минимум
max()Максимум
count()Количество непустых значений
nunique()Количество уникальных значений
std()Стандартное отклонение
var()Дисперсия
median()Медиана
quantile(q)Квантиль
first()Первое значение
last()Последнее значение
any()Есть хотя бы одно истинное значение
all()Все значения истинны

LazyGroupBy

Представляет сгруппированное хранилище DataStore для выполнения операций агрегации.

# LazyGroupBy is returned automatically
grouped = ds.groupby('category')  # Returns LazyGroupBy

Методы

МетодВозвращаетОписание
agg(spec)DataStoreАгрегирование
aggregate(spec)DataStoreПсевдоним agg
sum()DataStoreСумма по группе
mean()DataStoreСреднее по группе
count()DataStoreКоличество по группе
min()DataStoreМинимум по группе
max()DataStoreМаксимум по группе
std()DataStoreСтандартное отклонение по группе
var()DataStoreДисперсия по группе
median()DataStoreМедиана по группе
nunique()DataStoreКоличество уникальных значений по группе
first()DataStoreПервое значение по группе
last()DataStoreПоследнее значение по группе
nth(n)DataStoren-е значение по группе
head(n)DataStoreПервые n в группе
tail(n)DataStoreПоследние n в группе
apply(func)DataStoreПрименить функцию к каждой группе
transform(func)DataStoreПреобразование каждой группы
filter(func)DataStoreФильтрация групп

Выбор столбцов

# Select column after groupby
grouped['amount'].sum()     # Returns DataStore
grouped[['a', 'b']].sum()   # Returns DataStore

Спецификации агрегирования

# Single aggregation
grouped.agg({'amount': 'sum'})

# Multiple aggregations per column
grouped.agg({'amount': ['sum', 'mean', 'count']})

# Named aggregations
grouped.agg(
    total=('amount', 'sum'),
    average=('amount', 'mean'),
    count=('id', 'count')
)

LazySeries

Представляет ленивую Series (один столбец).

Свойства

СвойствоТипОписание
namestrНазвание серии
dtypedtypeТип данных

Методы

Наследует большинство методов от ColumnExpr. Основные методы:

МетодОписание
value_counts()Частоты значений
unique()Уникальные значения
nunique()Количество уникальных значений
mode()Модальное значение
to_list()Преобразовать в список
to_numpy()Преобразовать в массив NumPy
to_frame()Преобразовать в DataStore

F (Функции)

Пространство имён для функций ClickHouse.

from chdb.datastore import F, Field

# Aggregations
F.sum(Field('amount'))
F.avg(Field('price'))
F.count(Field('id'))
F.quantile(Field('value'), 0.95)

# Conditional
F.sum_if(Field('amount'), Field('status') == 'completed')
F.count_if(Field('active'))

# Window
F.row_number().over(order_by='date')
F.lag('price', 1).over(partition_by='product', order_by='date')

Дополнительные сведения см. в разделе Aggregation.

Field

Ссылка на столбец по его имени.

from chdb.datastore import Field

# Create field reference
amount = Field('amount')
price = Field('price')

# Use in expressions
F.sum(Field('amount'))
F.avg(Field('price'))

CaseWhen

Билдер для выражений CASE WHEN.

# Create case-when expression
result = (ds
    .when(ds['score'] >= 90, 'A')
    .when(ds['score'] >= 80, 'B')
    .when(ds['score'] >= 70, 'C')
    .otherwise('F')
)

# Assign to column
ds['grade'] = result

Window

Определение окна для оконных функций.

from chdb.datastore import F

# Create window
window = F.window(
    partition_by='category',
    order_by='date',
    rows_between=(-7, 0)
)

# Use with aggregation
ds['rolling_avg'] = F.avg('price').over(window)