Se a análise de dados parar devido à falta de memória no Pandas
TuBrief 편집팀
2026년 7월 13일
0
Computing/Software원본 영상을 바탕으로 AI의 도움을 받아 작성했습니다. 원본 영상이 기준입니다.
커뮤니티의 다른 글
댓글 (0)
Log in to leave a comment
아직 작성된 글이 없습니다
원본 영상을 바탕으로 AI의 도움을 받아 작성했습니다. 원본 영상이 기준입니다.
Log in to leave a comment
아직 작성된 글이 없습니다
O Pandas carrega os dados inteiros na RAM de uma só vez. É por isso que o Python entra em colapso ao tentar abrir um arquivo CSV de 20GB em um notebook com 16GB de RAM. Assim que os dados ficam um pouco maiores, o notebook trava e o kernel do Jupyter Notebook morre. Você não pode ficar fazendo amostragem dos dados ou trocando de computador o tempo todo.
Em vez disso, use o DuckDB. Ele traz apenas os dados necessários, aos poucos. Ele não carrega o conjunto total de dados na RAM e analisa apenas as partes necessárias usando a sintaxe SQL. Há um motivo para ele ganhar destaque entre os engenheiros de dados como uma alternativa ao Pandas.
Mudar o ambiente de análise de dados é mais simples do que parece. Mantenha o seu DataFrame do Pandas existente e troque apenas o motor.
duckdb.sql(). O cálculo real ainda não acontece neste momento..df() no final.Essa abordagem oferece eficiência além da simples mudança de código. Tarefas que faziam a RAM estourar ao usar groupby no Pandas rodam de forma estável no DuckDB utilizando o disco.
Ao lidar com grandes volumes de dados, ocorrem situações em que toda a RAM é consumida e o programa trava. Para evitar isso, você deve instalar guardrails em seu ambiente de trabalho.
Insira o seguinte código no topo do seu script.
`python
import duckdb
con = duckdb.connect()
con.execute("SET memory_limit = '4GB'")
con.execute("SET temp_directory = './tmp'")
`
memory_limit é o limite que define quanta RAM o DuckDB deve usar. Se você definir como 4GB, o sistema inteiro não travará, mesmo no meu notebook com 16GB de RAM. Se a RAM for insuficiente, o DuckDB grava automaticamente os dados em arquivos temporários no disco. De acordo com um benchmark de 2023, ao processar um arquivo Parquet de 140GB, o DuckDB concluiu o trabalho usando apenas 1.3GB de RAM. Se fosse com o Pandas, seria uma tarefa que ocuparia dezenas de gigabytes de RAM e acabaria travando.
O momento mais irritante na análise de dados é quando o processamento para devido a formatos incorretos. Se os tipos não coincidirem ao carregar um arquivo CSV, a análise nem começa.
Ao usar a função read_csv, ative as seguintes opções:
`python
con.execute("""
SELECT * FROM read_csv('data.csv',
columns={'id': 'INTEGER', 'value': 'DOUBLE'},
store_rejects=true,
strict_mode=false)
""")
`
Ao fazer isso, o processo inteiro não trava por causa de dados que não estão no formato correto. As linhas inválidas são isoladas em uma tabela separada. Depois, basta consultar a tabela reject_errors separadamente para verificar por que os dados estão corrompidos.
A análise de dados não é um trabalho de consertar ferramentas. É o trabalho de extrair insights dos dados. Pare de rodar o código dezenas de vezes por causa da falta de RAM e garanta eficiência de processamento trocando o motor.