Проблема в том, что невозможно точно определить, что такое 20% данных. Чтобы сделать это, вы должны сначала прочитать всю длину файла, и только потом вы можете получить представление о том, как будет выглядеть 20%.
Считывание большого файла в память сразу выдает эту ошибку в общем. Вы можете обработать это, прочитав файл построчно с кодом ниже:
data = []
counter = 0
with open('file') as f:
for line in f:
data.append(json.loads(line))
counter +=1
После этого вы сможете сделать это
df = pd.DataFrame([x for x in data]) #you can set a range here with counter/5 if you want to get 20%