Sådan åbnes store CSV-eller tekstfiler

Postvisninger: 3,861

problemet

hvis du arbejder med CSV, har du på et tidspunkt sandsynligvis forsøgt at åbne store CSV-eller tekstfiler, men måske ikke åbnet dem. Min kollega modtog engang en stor csv-fil på 8 GB. Han ville kigge på indholdet, men han kunne ikke åbne det ved hjælp af noget program, han prøvede, Notesblok, udmærke sig osv. Filen var simpelthen for stor til, at programmet endda kunne begynde.

så han rakte ud til mig for at få hjælp. Hans anmodning var relativt enkel: åbn den 8GB store csv-fil og potentielt se på data i de første par tusinde linjer. Denne tilsyneladende umulige opgave er let, når du vælger det rigtige værktøj – Python.

vores tilgang

vi vil først undersøge måder at undersøge indholdet af den store csv. Så nedbryder vi den store fil i små filer, så dataene bliver brugbare (åbne?) i udmærke sig.

til demonstrationsformål bruger vi ikke en 8 GB stor csv-fil; i stedet bruger vi en mindre fil med kun 2.600 rækker data. Hvis du vil følge med, er du velkommen til at hente eksemplet herfra.

løsningen

som altid starter vi med at importere de nødvendige biblioteker, i denne øvelse har vi bare brug for 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() tillader os at læse nogen .CSV-fil i Python, uanset filstørrelsen-mere på dette punkt senere. En CSV-fil er en kommasepareret værdifil, som dybest set er en tekstfil. Denne pandas-metode har et valgfrit argument nrows, som angiver antallet af rækker, du vil indlæse.

den første variabel df indlæste alt inde i csv-filen. Mens den anden variabel df_small kun indlæste de første 1.000 rækker af data. Vi kan kontrollere det ved at kalde .shape attributten.

størrelse (#af rækker, # af kolonner) af de to dataframmer

som vist ovenfor, “large_data.CSV ” fil indeholder 2618 rækker og 11 kolonner af data i alt. Og vi kan også bekræfte, at i variablen df_small indlæste vi kun de første 1.000 rækker med data, også 11 kolonner.

Typing df_small.head() viser de første 5 rækker af data inden for df_small dataframe. Vi kan tage et kig ind i den store fil på denne måde!

hvad nu, hvis vi vil være i stand til at åbne datafilen ved kun at bruge ? Du ved, folk kan lide at udmærke sig, så vi er nødt til at holde os til det!

selvom vi ikke kan bruge magi til at åbne denne 8GB-fil, kan vi “opdele og erobre” ved at nedbryde den i mindre filer. For eksempel 8 filer med 1 GB hver eller 16 filer med 500 MB hver. En moderne version af kan håndtere disse filstørrelser nemt.

denne gang indlæser vi dataframen lidt anderledes – med et valgfrit argument chunksize. Igen bruger vi til demonstrationsformål en meget mindre fil.

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

uden at komme ind i for meget tekniske detaljer giver argumentet chunksize os mulighed for at indlæse data i bidder, hvor hver del har en størrelse på 900 rækker data i vores eksempel. Antallet af bidder bestemmes automatisk af programmet. I betragtning af at vores csv-fil indeholder 2.618 rækker, forventer vi at se 2618 / 900 = 2.9, hvilket betyder 3 bidder i alt. De to første stykker indeholder 900 rækker, og den sidste del indeholder de resterende 818 rækker.

lad os se om det er sandt.

mindre dataframe størrelser

vi har indlæst og opdelt en fil i mindre stykker, næste lad os gemme dem i mindre individuelle filer.

i = 1for file in df: file.to_csv(f'file_{i}.csv') i += 1
nedbryde den oprindelige fil og gemme i små filer

sætte det hele sammen

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 brugte kun 8 linjer kode til at løse, hvad synes umuligt at opnå i udmærke. Jeg håber, at du begynder at elske Python Kristian!

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.