КОНТЕКСТ
У меня есть большой набор данных (100–250 МБ) в CSV-файле, и мне нужно распределить группы по совокупности людей. Группировки основаны на динамическом наборе правил, определенном в другом файле CSV. Для простоты воспроизведения я добавил образцы данных и образцы «наборов правил»/строки запросов ДАННЫЕ
import pandas as pd
import numpy as np
query1 = '(Gender in ["Male","Female"]) & (Country=="USA")'
query2 = '(Country in ["USA", "UK"]) & (Gender=="Male")'
query3 = '(Age > 40) & (Gender=="Male")'
query_list = [query1, query2, query3]
query_names = ['USA', 'MALE_USA_UK', 'MALE_OVER_40']
def assign_name(row, id_list, name, column_list):
id = row['ID']
if name in column_list:
if row[name] == 'Yes':
return 'Yes'
if str(id) in id_list:
return 'Yes'
return 'No'
# Create a dataframe with random data
data = {
'ID': range(1, 101),
'Gender': ['Male', 'Female'] * 50,
'Age': np.random.randint(18, 70, size=100),
'Country': ['USA', 'Canada', 'UK', 'Australia'] * 25
}
df = pd.DataFrame(data)
df = pd.DataFrame(data)
tmp = df.copy()
for query in query_list:
name = query_names[query_list.index(query)]
out = tmp.query(query)
# Create a list of people that were derived in out. These are 'yes'
person_list = out['ID'].to_list()
column_list = out.columns.to_list()
# Give them a 'Yes' or 'No' based on them being in the 'out' df
df[name] = df.apply(
lambda row: assign_name(row, person_list, name, column_list), axis = 1)
ПРОБЛЕМА
При больших наборах данных с более чем 200 тысячами строк и более чем 50 различными классификационными группами этот процесс занимает много времени. бегать. Я часто получаю ошибку DataFrame — сильно фрагментированная ошибка в .insert. Мне нужна помощь в создании более быстрого и эффективного решения.
[b]КОНТЕКСТ[/b] У меня есть большой набор данных (100–250 МБ) в CSV-файле, и мне нужно распределить группы по совокупности людей. Группировки основаны на динамическом наборе правил, определенном в другом файле CSV. Для простоты воспроизведения я добавил образцы данных и образцы «наборов правил»/строки запросов [b]ДАННЫЕ[/b] [code] # Data looks like this: ID Gender Age Country 1 Male 60 USA 2 Female 25 UK 3 Male 30 Australia [/code] [b]ТЕКУЩИЙ КОД[/b] [code]import pandas as pd import numpy as np
def assign_name(row, id_list, name, column_list): id = row['ID'] if name in column_list: if row[name] == 'Yes': return 'Yes' if str(id) in id_list: return 'Yes' return 'No'
# Create a dataframe with random data data = { 'ID': range(1, 101), 'Gender': ['Male', 'Female'] * 50, 'Age': np.random.randint(18, 70, size=100), 'Country': ['USA', 'Canada', 'UK', 'Australia'] * 25 }
for query in query_list: name = query_names[query_list.index(query)] out = tmp.query(query)
# Create a list of people that were derived in out. These are 'yes' person_list = out['ID'].to_list() column_list = out.columns.to_list()
# Give them a 'Yes' or 'No' based on them being in the 'out' df df[name] = df.apply( lambda row: assign_name(row, person_list, name, column_list), axis = 1) [/code] [b]ПРОБЛЕМА[/b] При больших наборах данных с более чем 200 тысячами строк и более чем 50 различными классификационными группами этот процесс занимает много времени. бегать. Я часто получаю ошибку DataFrame — сильно фрагментированная ошибка в .insert. Мне нужна помощь в создании более быстрого и эффективного решения.
КОНТЕКСТ
У меня есть большой набор данных (100–250 МБ) в CSV-файле, и мне нужно распределить группы по совокупности людей. Группировки основаны на динамическом наборе правил, определенном в другом файле CSV. Для простоты воспроизведения я добавил...
У меня возникла серьезная проблема с производительностью при использовании нескольких распространенных методов машинного обучения в sklearn. Я работаю над проблемой двоичной классификации с набором данных, содержащим 5 миллионов наблюдений и 100...
I made a fully custom made GPT in Jax (with Keras 3), using Tensorflow for the data pipeline.
I've trained the model on the Shakespeare dataset and got good results (so no problem with the model).
Now I want to train it on the Tiny-Stories dataset...
Я работаю над программой на Python, которая определяет паттерны волн Эллиотта в данных рынка криптовалют. Текущая реализация использует вложенные циклы и исчерпывающий поиск, что делает ее вычислительно дорогостоящей для больших наборов данных.
Вот...