Более быстрый способ конвертировать результаты DuckDB в фрейм данных, который поддерживается потоком?Python

Программы на Python
Ответить
Anonymous
 Более быстрый способ конвертировать результаты DuckDB в фрейм данных, который поддерживается потоком?

Сообщение Anonymous »

Не уверен, правильно ли я использую DuckDB в своем приложении с потоковым освещением.
Вся цель использования Duckdb в моем потоковом приложении заключалась в том, чтобы сделать его достаточно быстрым и отзывчивым.
import duckdb
import pandas as pd
import polars as pl
import time

conn = duckdb.connect()

# dummy.csv refers to a file that I created with 100 million rows for testing.
3 gb dataset.

query = \
"""
CREATE TABLE dummy as (
select * from 'dummy.csv'
)
"""

# Creates table
conn.execute(query)

# Part 1: Testing with Duck DB show()
start_time = time.time()

query = \
"""
select *
from dummy
"""

df = conn.sql(query).show()
df
print("--- %s seconds ---" % (time.time() - start_time))

--- 0,013511896133422852 секунды --- DuckDB творит чудеса. Мне нужна именно такая скорость.
start_time = time.time()

# Query 1
query = \
"""
select *
from dummy
"""

# The reason i am doing this is to display the table in my streamlit application (This is just an illustration of how I convert duckdb results into dataframe which is the fed to streamlit application

df = conn.sql(query).df()
df
print("--- %s seconds ---" % (time.time() - start_time))

--- 6,356271505355835 секунд --- Слишком медленно, потому что я, по-моему, конвертирую в фрейм данных pandas.
start_time = time.time()

# Query 1
query = \
"""
select *
from dummy
"""

df = conn.execute(query).pl()
display(df)
print("--- %s seconds ---" % (time.time() - start_time))

--- 1,8795912265777588 секунд ---
Хорошо, это лучше, но не радует.
Есть ли более быстрый способ преобразования данных в фрейм данных, который поддерживается потоком?
st.dataframe(df)


Подробнее здесь: https://stackoverflow.com/questions/783 ... -streamlit
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»