jak otevřít velké csv nebo textové soubory

zobrazení příspěvků: 3,861

problém

pokud pracujete s aplikací Excel, pravděpodobně jste se pokusili otevřít velké csv nebo textové soubory, ale možná se jim nepodařilo je otevřít. Můj kolega jednou obdržel velký soubor csv 8GB. Chtěl se podívat na obsah, ale nemohl jej otevřít pomocí jakéhokoli programu, který vyzkoušel, Poznámkový blok, Excel atd. Soubor byl prostě příliš velký na to, aby program vůbec mohl začít.

tak mě požádal o pomoc. Jeho žádost byla relativně jednoduchá: otevřete 8GB velký soubor csv a potenciálně se podívejte na data v prvních několika tisících řádcích. Tento zdánlivě nemožný úkol je snadný, když vyberete správný nástroj-Python.

náš přístup

nejprve prozkoumáme způsoby, jak prozkoumat obsah velkého csv. Pak rozdělíme velký soubor na malé soubory, takže data budou funkční(otevíratelná ?) v Excelu.

pro demonstrační účely nebudeme používat 8GB velký soubor csv; místo toho použijeme menší soubor s pouze 2600 řádky dat. Pokud chcete následovat, neváhejte si stáhnout příklad zde.

řešení

jako vždy začneme importem potřebných knihoven, v tomto cvičení potřebujeme pouze pandas.

import pandas as pd 
df = pd.read_csv('large_data.csv')
df_small = pd.read_csv('large_data.csv', nrows = 1000)

pd.read_csv() umožňuje nám číst jakékoli .csv soubor do Pythonu, bez ohledu na velikost souboru-více o tomto bodě později. Soubor csv je soubor hodnot oddělený čárkami, což je v podstatě textový soubor. Tato metoda pandy má volitelný argument nrows, který určuje počet řádků, které chcete načíst.

první proměnná df načte vše uvnitř souboru csv. Zatímco druhá proměnná df_small načte pouze prvních 1000 řádků dat. Můžeme to zkontrolovat voláním atributu .shape.

velikost (#řádků, # sloupců) dvou datových snímků

jak je uvedeno výše, “ large_data.soubor csv “ obsahuje celkem 2618 řádků a 11 sloupců dat. A můžeme také potvrdit, že v proměnné df_small jsme načetli pouze prvních 1000 řádků dat, také 11 sloupců.

zadáním df_small.head() se zobrazí prvních 5 řádků dat v rámci df_small datového rámce. Můžeme nahlédnout do velkého souboru tímto způsobem!

dále, co když chceme mít možnost otevřít datový soubor pouze pomocí aplikace Excel? Víte, lidé mají rádi Excel, takže se ho musíme držet!

ačkoli nemůžeme použít kouzlo, aby Excel otevřel tento soubor 8GB, můžeme „rozdělit a dobýt“ rozdělením na menší soubory. Například 8 souborů s 1 GB každý, nebo 16 souborů s 500 MB každý. Moderní verze aplikace Excel zvládne tyto velikosti souborů snadno.

tentokrát načteme datový rámec trochu jinak – s volitelným argumentem chunksize. Pro demonstrační účely opět používáme mnohem menší soubor.

df = pd.read_csv('large_data.csv', chunksize = 900)

aniž bychom se dostali do příliš mnoha technických detailů, argument chunksize nám umožňuje načíst data do bloků, přičemž každý kus má v našem příkladu velikost 900 řádků dat. Počet kusů je určen automaticky programem. Vzhledem k tomu, že náš soubor csv obsahuje 2 618 řádků, očekáváme, že uvidíme 2618 / 900 = 2, 9, což znamená celkem 3 kusy. První dva kusy obsahují 900 řádků a poslední kus obsahuje zbývajících 818 řádků.

uvidíme, jestli je to pravda.

menší velikosti datového rámce

úspěšně jsme načetli a rozdělili jeden soubor na menší kousky, dále je uložíme do menších jednotlivých souborů.

i = 1for file in df: file.to_csv(f'file_{i}.csv') i += 1
rozebrání původního souboru a uložení do malých souborů

uvedení všech dohromady

import pandas as pd df = pd.read_csv('large_data.csv', chunksize = 900)df_small = pd.read_csv('large_data.csv', nrows = 1000)i = 1for file in df: print(file.shape) file.to_csv(f'file_{i}.csv') i += 1

použili jsme pouze 8 řádků kódu k vyřešení toho, co se zdá nemožné dosáhnout v aplikaci Excel. Doufám, že začínáte milovat Python ❤️🐍!

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.