så här öppnar du stora csv-eller textfiler

Inläggsvisningar: 3,861

problemet

om du arbetar med Excel har du förmodligen försökt öppna stora csv-eller textfiler men kanske inte öppnat dem. Min kollega fick en gång en stor csv-fil på 8 GB. Han ville ta en titt på innehållet, men han kunde inte öppna det med något program han försökte, anteckningsblock, Excel, etc. Filen var helt enkelt för stor för att programmet ens skulle börja.

så han räckte ut till mig för hjälp. Hans begäran var relativt enkel: öppna den 8 GB stora csv-filen och titta eventuellt på data i de första tusen raderna. Denna till synes omöjliga uppgift är lätt när du väljer rätt verktyg – Python.

vårt tillvägagångssätt

vi utforskar först sätt att undersöka innehållet i den stora csv. Då bryter vi ner den stora filen i små filer, så data blir användbara (öppningsbara?) i Excel.

för demonstrationsändamål använder vi inte en 8 GB stor csv-fil; istället använder vi en mindre fil med endast 2600 rader data. Om du vill följa med, ladda ner exemplet härifrån.

lösningen

som alltid börjar vi med att importera nödvändiga bibliotek, i den här övningen behöver vi bara 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() tillåter oss att läsa någon .CSV-fil i Python, oavsett filstorlek-mer om denna punkt senare. En csv-fil är en kommaseparerad värdefil, som i grunden är en textfil. Denna pandas-metod har ett valfritt argument nrows, som anger antalet rader du vill ladda.

den första variabeln df laddade allt i csv-filen. Medan den andra variabeln df_small bara laddade de första 1000 raderna med data. Vi kan kontrollera det genom att ringa attributet .shape.

storlek (#rader, # kolumner) av de två dataframes

såsom visas ovan, den ”large_data.csv ” – filen innehåller 2618 rader och 11 kolumner med data totalt. Och vi kan också bekräfta att i variabeln df_small laddade vi bara de första 1000 raderna med data, även 11 kolumner.

skriva df_small.head() visar de första 5 raderna av data inom df_small dataframe. Vi kan ta en titt på den stora filen på detta sätt!

nästa, Vad händer om vi vill kunna öppna datafilen med bara Excel? Du vet, folk gillar Excel Så vi måste hålla fast vid det!

även om vi inte kan använda magi för att tillåta Excel att öppna den här 8GB-filen, kan vi” dela och erövra ” genom att bryta ner den i mindre filer. Till exempel 8 filer med 1 GB vardera eller 16 filer med 500 MB vardera. En modern version av Excel kan enkelt hantera dessa filstorlekar.

den här gången laddar vi dataframen något annorlunda – med ett valfritt argument chunksize. Återigen, för demonstrationsändamål använder vi en mycket mindre fil.

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

utan att komma in i för mycket teknisk detalj tillåter argumentet chunksize oss att ladda data i bitar, där varje bit har en storlek på 900 rader data i vårt exempel. Antalet bitar bestäms automatiskt av programmet. Med tanke på att vår csv-fil innehåller 2,618 rader, förväntar vi oss att se 2618 / 900 = 2.9, vilket betyder 3 bitar totalt. De två första bitarna innehåller 900 rader, och den sista delen innehåller de återstående 818 raderna.

Låt oss se om det är sant.

mindre dataframe storlekar

vi har framgångsrikt laddat och brutit ner en fil i mindre bitar, nästa låt oss spara dem i mindre enskilda filer.

i = 1for file in df: file.to_csv(f'file_{i}.csv') i += 1
bryta ner den ursprungliga filen och spara i små filer

att sätta ihop allt

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

vi använde bara 8 rader kod för att lösa vad som verkar omöjligt att uppnå i Excel. Jag hoppas att du börjar älska Python Macau!

Lämna ett svar

Din e-postadress kommer inte publiceras.