Pandas Chunksize

Pandas Chunksize
Dataforskere eller fagpersoner må ofte håndtere datasett hvis størrelse er mye større enn minnet om deres lokale system. Det er vanskelig å finne ut hvordan du effektivt kan administrere minne mens du tillater mest effektiv bruk av data. Når du arbeider med en stor blokk med data som ikke passer inn i minnet, kan du dele opp dataene i mindre porsjoner ved hjelp av Pandas 'Chunksize -alternativ. Ved å velge dette alternativet produseres et iteratorobjekt som kan brukes til å iterere gjennom de forskjellige biter og utføre filtrering eller analyse på samme måte som man ville gjort når du laster hele datasettet.

Hvordan laste inn store data ved hjelp av Pandas Chunk -størrelse

Pandas er et kraftig og brukervennlig open source-verktøy for dataanalyse bygget på Python som muliggjør import og visualisering av data i forskjellige formater, for eksempel .TSV, .CSV, .DB, og .TXT -filer. Bare ".CSV ”-filer vil bli brukt i følgende eksempler, selv om teknikken er den samme for andre filformater. Read_csv () -funksjonen vil bli brukt til å lese CSV -filer.

Parametere:

filepath_or_bufferstr: En gyldig strengbane kan brukes. En url kan også være i strengen. De akseptable URL -ordningene er FTP, S3, HTTP, GS og fil. Det skal være en vert for filadresser. Her er et eksempel på en lokal fil: Fil:/localhost/path/to/table.CSV.

iteratorbool: Returnerer et TextFileReader -objekt for å iterere gjennom filen eller for å hente biter ved hjelp av get_chunk ().

Biter: Godtar int; Det er en valgfri parameter. For iterasjon returnerer den et TextFileReader -objekt.

Chunksize -argumentet til read_csv () -funksjonen er den vi er interessert i denne artikkelen. Teknisk viser Chunksize til hvor mange rader per sekund pandaer som leste fra en fil. Vi kan si at de første 100 radene vil bli lastet av pandaer hvis biter størrelsen er spesifisert som 100. Objektet som returneres er en TextFileReader som må itereres for å hente dataene.

Eksempel 1: Last inn data ved hjelp av read_csv () -funksjon uten biterstørrelse

For dette eksemplet vil vi laste ned et datasett med en .CSV File Extension fra ethvert open source nettsted. Du kan laste ned det nødvendige datasettet fra flere nettsteder på internett. For å laste inn en fil i Pandas, vil vi først importere Pandas -biblioteket. Etter å ha importert pandaene, vil vi bruke read_csv () -funksjonen for å laste inn filen i vårt nåværende miljø. En CSV -fil importeres til DataFrame -format ved hjelp av Pandas Read_CSV () -funksjon.

Du vil merke at vi sammen med Pandas også har importert et PPrint -bibliotek fordi datastrukturer kan skrives ut på en forståelig, attraktiv måte ved hjelp av Python Pprint -modulen. Etter å ha importert modulene, lastet vi vår .CSV -fil ved å legge navnet på filen sammen med filtypen i PD.read_csv () funksjon. For å se kolonnene våre inne i DataFrame, har vi brukt PD.Kolonner attributt. Disse kolonnetikettene lar oss få tilgang til et DataFrames elementer og utføre datamanipulering. “Pandaene. Dataramme.Kolonner ”-attributt brukes til å få de individuelle kolonnetikettene fra en DataFrame. De .Formattributt kan brukes til å se antall kolonner og rader i DataFrame.

Verdien “90836” er det totale antallet rader i DataFrame, som vi har sett ovenfor, det er ti kolonner i DataFrame, i.e., “Rangeringer”.

Eksempel nr. 2: Last inn en stor mengde data ved hjelp av biter i read_csv () -funksjonen

I dette eksemplet vil vi laste ned et annet datasett fra Internett. Den samme read_csv () -funksjonen vil bli brukt til å laste inn filen. Men denne gangen vil vi spesifisere en parameter "biter" inne i funksjonen. Før vi bruker vår read_csv () -funksjon, vil vi importere Pandas og Pprint -bibliotekene.

La oss se det totale antallet kolonner og rader i datasettfilen uten å bruke en biter på bobilstørrelse.

Vi leste det medfølgende datasettet i forrige eksempel og presenterte detaljene. Radene og kolonnene som returneres av henholdsvis "form" -attributtet er henholdsvis 5704247 og 5. Ved hjelp av "info" -attributtet viser vi også detaljer om datasettets rader og kolonner.

Som vi kan se, har dette datasettet 5704247 rader, og behandlingen av massive datasett bruker mye av datamaskinens RAM. Chunksize -parameteren under disse omstendighetene kan brukes til å spare ressursene våre.

Et TextFileReader -objekt returneres ved å bruke biter i les_csv () -funksjonen. Når chunksize -parameteren sendes til read_csv () -funksjonen, opprettes en TextFileReader -leser. Den opprinnelige filen kan leses i stykker ved hjelp av dette åpne fillignende objektet. Internt oppretter for -loopen iteratorer for slike objekter ved å bruke ITER () -metoden. Vi mottar en iterator når vi bruker Chunksize -argumentet. For å få verdiene, kan vi iterere over dette objektet. Datasettet leses inn i datasbiter med de spesifiserte radene i forrige eksempel fordi Chunksize -argumentet ga en verdi. Chunksize -parameteren ble spesifisert til 1000000 for datasettet vårt, noe som resulterte i seks iteratorer.

Eksempel nr. 3: Et annet eksempel på chunksize -parameter

Som diskutert tidligere, er Chunksize parameteren som brukes i Python ofte for å lese store filer eller datasett. Chunksize deler dataene i sanntid mens du leser inn i mindre seksjoner kjent som biter, noe som øker programmets generelle effektivitet; Hvis vi leser en .CSV -fil uten denne parameteren.

Pandaer brukes ofte til lagring av en stor mengde data; De tillater enkel lesbarhet og tilgang til data på kort tid. Den gitte filen (rangeringer.CSV) har data fra 1048575 pasienter innen 1048575 og 4 kolonner. Når denne filen blir lest av et program uten noen spesifikk parameter, vil det ta mye tid å behandle denne mye informasjonen som gjør programmet mindre effektivt. Når vi møter denne typen store data, bruker vi parametere som biter på biter. Chunksize -parameter bruker iteratorer for å iterere over en spesifikk beholder, for eksempel liste, og kan kobles med forskjellige løkker.

I det forrige eksemplet brukes Pandas -datastrukturen til å lese og lagre informasjonen, og ChunksSize brukes også, noe som itererer over et objekt for å få verdiene. Den leser vår gitte fil til underavsnitt av data (biter). Spesielt for det gitte datasettet ble fire iteratorer spesifisert for biter på 250000. Verdien som returneres etter å ha lest objektet er ikke DataFrame, men en analyser av Pandas, i.e., Pandas.io.analysere.TextFileReader. Disse er ansvarlige for transversal over objektet og verdiene som resulterer i slutten. Saken å merke seg her er at kolonnummeret er det samme for hver iterator, som indikerer at parameteren "biter" bare bruker antall rader, ikke kolonnen, under iteratoroppretting.

Konklusjon

I denne opplæringen har vi sett at minnet om deres lokale maskin ikke kan imøtekomme størrelsen på datasettene som dataforskere vanligvis administrerer. Derfor, mens vi leser enorme datasett, bruker vi Chunksize -argumentet for å dele ned datasettet i datasbiter. Nå, etter å ha lest denne opplæringen, kan det hende du kan bruke Chunksize -argumentet selv. Vi implementerte noen få eksempler for å lære deg hvordan du deler datasettet ditt med .CSV File Extension til små biter.