Реляционная API в Pandas
DuckDB предоставляет реляционную API, которая позволяет объединять операции запросов. Они вычисляются лениво, что позволяет DuckDB оптимизировать их выполнение. Эти операторы могут работать с Pandas DataFrame, таблицами DuckDB или представлениями (которые могут указывать на любой формат хранения, который может читать DuckDB, например, CSV или Parquet файлы и т.д.). Здесь представлен простой пример чтения из Pandas DataFrame и возвращения DataFrame.
import duckdb
import pandas
# connect to an in-memory database
con = duckdb.connect()
input_df = pandas.DataFrame.from_dict({'i': [1, 2, 3, 4],
'j': ["one", "two", "three", "four"]})
# create a DuckDB relation from a dataframe
rel = con.from_df(input_df)
# chain together relational operators (this is a lazy operation, so the operations are not yet executed)
# equivalent to: SELECT i, j, i*2 AS two_i FROM input_df WHERE i >= 2 ORDER BY i DESC LIMIT 2
transformed_rel = rel.filter('i >= 2').project('i, j, i*2 AS two_i').order('i DESC').limit(2)
# trigger execution by requesting .df() of the relation
# .df() could have been added to the end of the chain above - it was separated for clarity
output_df = transformed_rel.df() Реляционные операторы также могут использоваться для группировки строк, агрегирования, поиска уникальных комбинаций значений, объединения, объединения и многого другого. Они также могут напрямую вставлять результаты в таблицу DuckDB или записывать в CSV.
Пожалуйста, ознакомьтесь с этими дополнительными примерами и документацией доступных реляционных методов класса DuckDBPyRelation.
© Copyright 2018–2024 Stichting DuckDB Foundation
Licensed under the MIT License.
https://duckdb.org/docs/guides/python/relational_api_pandas.html