Aktywne Wpisy
WielkiNos +44
Wiedzieliście, że są ludzie wyrzucający książki na śmietnik? Bo ja nie wiedziałam. Dla mnie to niewyobrażalne.
#ksiazki #gdansk #bekazpodludzi
#ksiazki #gdansk #bekazpodludzi
Tortcebulowy +103
Skopiuj link
Skopiuj linkWykop.pl
Hej Mirki, tak sobie dlubie proste ETL w #pandas #numpy #python i glowkuje jak tu skrocic czas ladowania trzech duzych (1GB kazdy 900k x 200) CSV. Jedyne co przychodzi mi jeszcze do glowy to dorzucenie multiprocesingu bo duzo sie dzieje, z %pruna widze ze w tej chwili CPU jest waskim gardlem. Probowalem w prymitywny sposob zaladowac to w multi rozrzucajac kazdy plik na osobny proces ale naturalnie zabraklo RAMu, wiem, ze musze zchunkowac pliki i rozdystrybuowac chunki do workerow, probowalem chunksize= ale cos mi to nie bardzo chce w multi biegac. Bede jeszcze jutro probowal z np.arraysplit.
moj csvread wyglada tak:
paths = os.path.join(VOLUME_CSV, "volume PN FY*.csv")
files = glob.glob(paths)
def csv_reader(file):
df = pd.read_csv(file,
low_memory=False,
cache_dates=True,
thousands=',',
infer_datetime_format=True,
parse_dates=["Funded date", "Maturity date"],
dtype=col_types,
true_values=['Y'],
false_values=['N'],
na_values=['-'],
index_col=False
)
return df
df = pd.concat(map(csv_reader, files), ignore_index=True).reset_index(drop=True)
Czy macie jakis boiler plate jak to ugrysc, dobre rady, slowo na pocieszenie? Jak to zoptymalizowac. Wrzucilem pytanie na stacka ale narazie cisza:
https://stackoverflow.com/questions/72944450/pandas-chunks-from-multiple-files-to-list-collection-to-process-them-with-mult
Jeszcze jedno, chce to zrobic bez Daska, bede chcial dorzucic tam jeszcze jakies operacje ale generalnie wiekszosc manipulacji mam z uzycie wektoryzacji wiec nie warto ich ruszac.
Z gory dziekuje za pomoc.
https://www.pola.rs/
Ewentualnie Pyarrow - https://arrow.apache.org/docs/python/generated/pyarrow.csv.read_csv.html
@Acrylic: Zostaje w Pythonie, kolejne niepowodzenia w napisaniu tego skryptu z multiprocessingiem pchaja mnie w kierunku Dask'a lub PyArrowa, dzieki
Polars jest naprawdę spoko, piszę się w tym jak Pandas, u nas w firmie właśnie migrujemy z Pandas na Polars gdzie się da.
Możesz też użyć Ray lub bardziej high level Modin. Generalnie nie wiem jaki przyrost wydajności cię interesuje, na pewno jakbyś miał pliki w formacie Parquet to byłoby lepiej.