hogyan lehet megnyitni a nagy csv vagy szöveges fájlok

hozzászólás nézetek: 3,861

a probléma

ha a munka az Excel, egy bizonyos ponton, akkor valószínűleg megpróbálta megnyitni a nagy csv vagy szöveges fájlokat, de talán nem sikerült megnyitni őket. Kollégám egyszer kapott egy nagy, 8 GB-os csv-fájlt. Meg akarta nézni a tartalmat, de nem tudta megnyitni egyetlen kipróbált program, a Jegyzettömb, az Excel stb. A fájl egyszerűen túl nagy volt ahhoz, hogy a program elinduljon.

ezért hozzám fordult segítségért. Kérése viszonylag egyszerű volt: nyissa meg az 8GB nagy csv fájlt, és potenciálisan nézze meg az adatokat az első pár ezer sorban. Ez a látszólag lehetetlen feladat könnyű, ha kiválasztja a megfelelő eszközt – Python.

megközelítésünk

először megvizsgáljuk a nagy csv tartalmának vizsgálatát. Ezután a nagy fájlt kis fájlokra bontjuk, így az adatok működőképessé válnak (megnyithatók?) Excelben.

demonstrációs célokra nem használunk 8 GB-os nagy csv-fájlt; ehelyett egy kisebb fájlt használunk, amely csak 2600 adatsort tartalmaz. Ha azt szeretnénk, hogy kövesse végig, nyugodtan töltse le a példát innen.

a megoldás

mint mindig, a szükséges könyvtárak importálásával kezdjük, ebben a gyakorlatban csak pandas – re van szükségünk.

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

pd.read_csv() lehetővé teszi számunkra, hogy olvassa el .csv fájl Pythonba, a fájl méretétől függetlenül-erről később bővebben. A csv fájl vesszővel elválasztott értékfájl, amely alapvetően szöveges fájl. Ennek a pandas metódusnak van egy opcionális argumentuma nrows, amely meghatározza a betölteni kívánt sorok számát.

az első df változó mindent betöltött a csv fájlba. Míg a második változó df_small csak az első 1000 adatsort töltötte be. Ezt a .shape attribútum meghívásával ellenőrizhetjük.

mérete (# sorok, # oszlopok) a két DataFrame

mint fent látható, a ” large_data.a ” csv ” fájl összesen 2618 sort és 11 oszlopot tartalmaz. Azt is megerősíthetjük, hogy a df_small változóba csak az első 1000 adatsort töltöttük be, szintén 11 oszlopot.

a df_small.head() beírása az első 5 adatsort mutatja a df_small adatkereten belül. Így bepillanthatunk a nagy fájlba!

ezután mi van, ha csak az Excel használatával szeretnénk megnyitni az adatfájlt? Tudod, az emberek szeretik az Excel-t, ezért ragaszkodnunk kell hozzá!

bár nem tudjuk használni a varázslatot, hogy az Excel megnyitja ezt a 8 GB-os fájlt, “megoszthatjuk és meghódíthatjuk”, ha kisebb fájlokra bontjuk. Például 8 fájl 1 GB-os, vagy 16 fájl 500 MB-os. Az Excel modern verziója könnyen kezelheti ezeket a fájlméreteket.

ezúttal kissé másképp töltjük be az adatkeretet – opcionális argumentummal chunksize. Ismét demonstrációs célból sokkal kisebb fájlt használunk.

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

anélkül, hogy túl sok technikai részletbe kerülne, a chunksize argumentum lehetővé teszi az adatok darabokban történő betöltését, példánkban minden darab 900 adatsor méretű. A darabok számát A program automatikusan meghatározza. Tekintettel arra, hogy a csv fájlunk 2618 sort tartalmaz, arra számítunk, hogy 2618 / 900 = 2,9 lesz, ami összesen 3 darabot jelent. Az első két darab 900 sort tartalmaz, az utolsó darab pedig a fennmaradó 818 Sort tartalmazza.

lássuk, hogy ez igaz-e.

kisebb adatkeret méretek

sikeresen betöltöttünk és bontottunk egy fájlt kisebb darabokra, majd mentsük őket kisebb egyedi fájlokba.

i = 1for file in df: file.to_csv(f'file_{i}.csv') i += 1
az eredeti fájl lebontása és kis fájlokba mentése

mindent összerakva

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

csak 8 sornyi kódot használtunk, hogy megoldjuk azt, amit lehetetlennek tűnik elérni az Excelben. Remélem, kezded szeretni a Python-t!

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.