Есть ли способ, кроме разделения Dask, избежать чрезмерного использования оперативной памяти из-за большого набора данныPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Есть ли способ, кроме разделения Dask, избежать чрезмерного использования оперативной памяти из-за большого набора данны

Сообщение Anonymous »

Я использую следующий код для расчета некоторых переменных, связанных со скоростью, для набора данных, состоящего примерно из 200 миллионов строк. Чтобы избежать проблем с памятью, я использую фрагментирование.
import pandas as pd
import numpy as np
import math
from scipy.stats import skew, kurtosis
from tqdm import tqdm
import gc # For garbage collection

# Read the joined DataFrame
joined_df = pd.read_parquet('joined_data.parquet')

# Fill NaN values in 'final_direction' with a placeholder
joined_df['final_direction'].fillna('Unknown', inplace=True)

# Define the road types and their corresponding whisker values
road_whiskers = {
'motorway': {'lower_whisker': 32.0, 'upper_whisker': 162.0},
'motorway_link': {'lower_whisker': 32.0, 'upper_whisker': 162.0},
'trunk': {'lower_whisker': 1.0, 'upper_whisker': 169.0},
'trunk_link': {'lower_whisker': 1.0, 'upper_whisker': 169.0},
'primary': {'lower_whisker': 0.0, 'upper_whisker': 113.0},
'primary_link': {'lower_whisker': 0.0, 'upper_whisker': 113.0},
'secondary': {'lower_whisker': 0.0, 'upper_whisker': 83.0},
'secondary_link': {'lower_whisker': 0.0, 'upper_whisker': 83.0},
'tertiary': {'lower_whisker': 0.0, 'upper_whisker': 74.0},
'tertiary_link': {'lower_whisker': 0.0, 'upper_whisker': 74.0},
'residential': {'lower_whisker': 0.0, 'upper_whisker': 55.0},
'living_street': {'lower_whisker': 0.0, 'upper_whisker': 36.0},
'unclassified': {'lower_whisker': 0.0, 'upper_whisker': 96.0}
}

# Custom aggregation function with dynamic threshold based on road type
def custom_agg(series, func, fclass=None, require_min_size=1, **kwargs):
lower_threshold = road_whiskers[fclass]['lower_whisker']
upper_threshold = road_whiskers[fclass]['upper_whisker']
valid_series = series[(series >= lower_threshold) & (series = road_whiskers[x['fclass'].iloc[0]]['lower_whisker']) & (x['Speed'] = lower_threshold) & (series = road_whiskers[fclass]['lower_whisker']) &
(group['Speed']

Подробнее здесь: https://stackoverflow.com/questions/792 ... e-due-to-l
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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