← Все курсы · Курс Excel

Как открыть большой CSV-файл без падения Excel

Майкл Носито · Обновлено в августе 2026 г. · Все числа на этой странице были обработаны до их публикации.

Приходит CSV, его размер составляет 1,8 ГБ, а Excel либо отказывается от него, либо занимает девять минут и обрезает его. Инстинкт заключается в том, чтобы найти таблицу побольше. Лучше всего перестать пытаться просмотреть все сразу, потому что почти на каждый ваш вопрос можно ответить из первой тысячи строк плюс один агрегат.

Что вы делаете по порядку: просмотр, подсчет, выборка, агрегирование. Загружайте все целиком только в том случае, если для реального вопроса требуется каждая строка.

Краткая версия. Вам нужны столбцы и размер, прежде чем вам понадобятся данные.

Шаг 1: посмотрите вверху

# Windows PowerShell
Get-Content big.csv -TotalCount 1000 | Set-Content sample.csv

# Git Bash, macOS, Linux
head -n 1000 big.csv > sample.csv

Оба читают только начало, поэтому файл размером 50 ГБ ведет себя так же, как файл размером 5 МБ. Открыть sample.csv в Excel, и у вас есть имена столбцов, формат даты, разделитель, указан ли файл в кавычках и есть ли в идентификаторах ведущие нули. Это большая часть того, что вам нужно.

Шаг 2: посчитайте линии

# PowerShell. ReadCount batches the reads, which matters on big files.
(Get-Content big.csv -ReadCount 10000 | Measure-Object -Line).Lines

# Git Bash
wc -l big.csv

Запишите номер. Это единственный способ впоследствии доказать, что импорт загрузил все. Обратите внимание, что количество строк не всегда соответствует количеству записей: поле, содержащее перевод строки в кавычках, делает их разными, что является еще одной причиной проверять итоги, а не доверять глазу.

Шаг 3: возьмите настоящий образец, а не верхний

Первая тысяча строк не является выборкой. Это самая старая тысяча, или по какому-либо экспортному сорту, и любой образец, который вы заметите в них, может быть артефактом этого порядка. Для настоящего взгляда:

-- DuckDB
SELECT * FROM 'big.csv' USING SAMPLE 1000 ROWS;
# pandas, when the file fits in memory
df.sample(1000, random_state=0)

Шаг 4: агрегируйте и возвращайте только сводку

DuckDB — самый короткий путь, поскольку здесь нет этапа импорта:

SELECT strftime(order_date, '%Y-%m') AS month,
       region,
       COUNT(*)   AS orders,
       SUM(amount) AS revenue
FROM 'big.csv'
GROUP BY 1, 2
ORDER BY 1, 2;

Это превращает миллионы строк в несколько десятков, которые вставляются в Excel и работают. Настройка находится в настройка DuckDB.

Эквивалент pandas для файла, который не помещается в памяти, читает его по частям:

import pandas as pd
totals = None
for chunk in pd.read_csv('big.csv', chunksize=500_000,
                         usecols=['order_date', 'region', 'amount']):
    g = chunk.groupby('region')['amount'].sum()
    totals = g if totals is None else totals.add(g, fill_value=0)
print(totals)

usecols делает большую часть работы там. Чтение трех столбцов вместо сорока часто является решающим фактором в том, уместится ли информация в памяти или нет.

Пять инструментов, ранжированных по тому, когда к ним обращаться

инструментЛучшее вЗатраты
глава / Получить контентУвидеть форму за две секундыНет, уже установлено
DuckDBSQL над файлом, пока он находитсяОдна установка, без импорта
SQLiteВопросы, которые вы будете задавать неоднократноИмпорт, тогда это быстро навсегда
pandasОчистка как часть трубопроводаПамять, если не кусать
Текстовый редактор, созданный для размераНа глаз сломанный рядТолько чтение. Никакой агрегации.

В последней строке: большинство редакторов загружают в память весь файл и перестают быть полезными при размерах в сотни мегабайт. Редакторы этого потока, такие как Эмредактор или глинтвейн, откроют файл размером в несколько гигабайт, и они являются подходящим инструментом ровно для одной задачи — просмотра строки, в которой произошел сбой импорта.

Проверьте кодировку, прежде чем обвинять данные. Если при просмотре имена отображаются как é или £, файл имеет кодировку UTF-8 и читается как ANSI. Это проблема чтения, а не поврежденного файла, и она исправляется при импорте: см. Кодировка символов.

Проверка разделителей и кавычек

  1. Откройте образец в текстовом редакторе, а не в Excel, и посмотрите на необработанную первую строку.
  2. Посчитайте разделители в первой строке и в нескольких случайных строках. Они должны совпадать. Строка с надписью более представляет собой запятую без кавычек внутри поля.
  3. Найдите знак порядка байтов: заголовок первого столбца выглядит как id означает спецификацию UTF-8, которую некоторые инструменты будут рассматривать как часть имени.
  4. Проверьте окончания строк. Файл, написанный в Линукс и открытый в Блокноте, раньше отображался как одна длинная строка. Все современное с этим справляется, а старые импортеры еще нет.

Как применить это в своей работе

  1. Поместите команду просмотра в заметку где-нибудь, где вы ее найдете. Это единственная наиболее часто используемая команда на этой странице.
  2. Подсчитайте строки до и после каждого импорта и сохраните оба числа в книге.
  3. Установите DuckDB в следующий раз, когда файл превзойдет Excel, а не в третий раз.
  4. Запросите исходную систему для агрегированного или отфильтрованного экспорта. Половина всей работы с большими файлами не нужна.
  5. Никогда не делайте выборку сверху, когда ищете проблемы с качеством данных. Группа плохих строк, обычно в конце.

Единственная привычка, которую нужно сохранить

Посмотрите на файл, прежде чем загружать его. Две команды, десять секунд, и они предотвращают почти все важные сюрпризы, которые стоят целого дня.

Знаете ли вы количество строк в последнем фрагменте, на котором вы построили отчет?

Каждая команда здесь была запущена до ее публикации. Формы PowerShell и Баш используются на этом компьютере в Окна 11.
На большинство вопросов, связанных с большими файлами, отвечают первая тысяча строк и счет.

Python для аналитиков — это рабочая книга по аналитике pandas: прочитайте файл, исправьте его типы, сгруппируйте его, присоединитесь к нему и проверьте ответ, прежде чем его увидит кто-либо еще.

Python для аналитиков, 19 $ →
Следующий шаг после открытия — запрос.

DuckDB запрашивает CSV на месте, SQLite сохраняет его на случай повторных вопросов и Обработка больших наборов данных работает реальный двухгигабайтный файл.

Настроить DuckDB →