У меня есть функция, которая вызывает цикл, который генерирует новые строки данных, 4 за раз. Я пытаюсь превратить все строки, сгенерированные в DataFrame Polars как можно быстрее. Каждая партия новых рядов. Затем он экземпляет поляр DataFrame из списка кортежей.
текущий код
rows = []
def make_df(x):
for data in x: # This loops ~500k times
new_rows = process(data) # 4 new rows created
# new_rows is a tuple of length 4
# Each element (row) of the tuple is another tuple of length 10
rows.extend(new_rows)
return pl.DataFrame(rows, orient='row') # This line is very slow (4-5 sec)
Для моего DataFrame (около 2 миллионов строк, 10 столбцов) создание экземпляра DF занимает примерно 4–5 секунд. Это кажется медленным, и мне интересно, есть ли более быстрый способ сделать это. Я пробовал использовать генератор (пример ниже), но, кажется, это занимает столько же времени, возможно, даже немного медленнее.
Генератор (не работает быстрее)
def g(x):
for data in x: # This loops ~500k times
new_rows = process(data) # 4 new rows created
# new_rows is a tuple of length 4
# Each element of the tuple is another tuple of length 10
yield new_rows[0]
yield new_rows[1]
yield new_rows[2]
yield new_rows[3]
def make_df(x):
return pl.DataFrame(g(x), orient='row') # Slows down the loop by 5-6 seconds
Есть более быстрый способ сделать это? Пример ниже: < /p>
import polars as pl
import datetime
date = datetime.datetime(2024, 7, 14, 12, 30)
rows = []
def make_df():
for data in range(500000): # This loops ~500k times
new_row = (1, date, 3, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, date)
new_rows = ((new_row),) * 4 # 4 new rows created
# new_rows is a tuple of length 4
# Each element (row) of the tuple is another tuple of length 10
rows.extend(new_rows)
return pl.DataFrame(
rows,
orient='row',
schema={
'a': pl.Int64,
'b': pl.Datetime,
'c': pl.Int64,
'd': pl.Float64,
'e': pl.Float64,
'f': pl.Float64,
'g': pl.Float64,
'h': pl.Float64,
'i': pl.Float64,
'j': pl.Datetime,
},
) # This line is very slow (4-5 sec)
make_df()
Подробнее здесь: https://stackoverflow.com/questions/793 ... -from-a-fu
Какой самый быстрый способ построить/создавать дату DataFrame Python Polars из функции, которая возвращает несколько стр ⇐ Python
Программы на Python
1737680977
Anonymous
У меня есть функция, которая вызывает цикл, который генерирует новые строки данных, 4 за раз. Я пытаюсь превратить все строки, сгенерированные в DataFrame Polars как можно быстрее. Каждая партия новых рядов. Затем он экземпляет поляр DataFrame из списка кортежей.
[b] текущий код [/b]
rows = []
def make_df(x):
for data in x: # This loops ~500k times
new_rows = process(data) # 4 new rows created
# new_rows is a tuple of length 4
# Each element (row) of the tuple is another tuple of length 10
rows.extend(new_rows)
return pl.DataFrame(rows, orient='row') # This line is very slow (4-5 sec)
Для моего DataFrame (около 2 миллионов строк, 10 столбцов) создание экземпляра DF занимает примерно 4–5 секунд. Это кажется медленным, и мне интересно, есть ли более быстрый способ сделать это. Я пробовал использовать генератор (пример ниже), но, кажется, это занимает столько же времени, возможно, даже немного медленнее.
[b]Генератор (не работает быстрее) [/b]
def g(x):
for data in x: # This loops ~500k times
new_rows = process(data) # 4 new rows created
# new_rows is a tuple of length 4
# Each element of the tuple is another tuple of length 10
yield new_rows[0]
yield new_rows[1]
yield new_rows[2]
yield new_rows[3]
def make_df(x):
return pl.DataFrame(g(x), orient='row') # Slows down the loop by 5-6 seconds
Есть более быстрый способ сделать это? Пример ниже: < /p>
import polars as pl
import datetime
date = datetime.datetime(2024, 7, 14, 12, 30)
rows = []
def make_df():
for data in range(500000): # This loops ~500k times
new_row = (1, date, 3, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, date)
new_rows = ((new_row),) * 4 # 4 new rows created
# new_rows is a tuple of length 4
# Each element (row) of the tuple is another tuple of length 10
rows.extend(new_rows)
return pl.DataFrame(
rows,
orient='row',
schema={
'a': pl.Int64,
'b': pl.Datetime,
'c': pl.Int64,
'd': pl.Float64,
'e': pl.Float64,
'f': pl.Float64,
'g': pl.Float64,
'h': pl.Float64,
'i': pl.Float64,
'j': pl.Datetime,
},
) # This line is very slow (4-5 sec)
make_df()
Подробнее здесь: [url]https://stackoverflow.com/questions/79380272/what-is-the-fastest-way-to-build-instantiate-a-python-polars-dataframe-from-a-fu[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия