Подтвердить что ты не робот

Как я могу частично прочитать огромный файл CSV?

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

with open('abc.csv') as f:
    line = f.readline()
    # pass until it reaches a particular line number....

Однако, если я делаю это в пандах, я всегда читаю первую строку:

datainput1 = pd.read_csv('matrix.txt',sep=',', header = None, nrows = 1 )
datainput2 = pd.read_csv('matrix.txt',sep=',', header = None, nrows = 1 )

Я ищу более простой способ справиться с этой задачей в пандах. Например, если я хочу прочитать строки от 1000 до 2000. Как я могу сделать это быстро?

Я хочу использовать панд, потому что я хочу читать данные в кадре данных.

4b9b3361

Ответ 1

Используйте chunksize:

for df in pd.read_csv('matrix.txt',sep=',', header = None, chunksize=1):
    #do something

Чтобы ответить на свою вторую часть, сделайте следующее:

df = pd.read_csv('matrix.txt',sep=',', header = None, skiprows=1000, chunksize=1000)

Это пропустит первые 1000 строк, а затем только прочитает следующие 1000 строк, давая вам строки 1000-2000, неясно, нужны ли конечные точки, которые нужно включить или нет, но вы можете возиться с числами, чтобы получить то, что вы хотите.

Ответ 2

В дополнение к ответу EdChums я нахожу nrows аргумент nrows который просто определяет количество строк, которые вы хотите импортировать. Таким образом, вы не получаете итератор, а можете просто импортировать часть целого файла размером nrows. Работает и со skiprows тоже.

df = pd.read_csv('matrix.txt',sep=',', header = None, skiprows= 1000, nrows=1000)