Ich muss viele CSV-Dateien in Parkett konvertieren. Da es in der Kopfzeile der CSV-Datei überhaupt keine Spaltennamenszeile gibt
Annahmen
Der dem CSV-Header hinzugefügte Spaltenname ist der Titel für den Wert in der Parkettdatei.
Wenn die Kopfzeile nicht vorhanden ist und die Daten plötzlich vorhanden sind
Jeder Titel der Ausgabe-Parkettdatei enthält die Daten in der ersten Zeile.
Das Hinzufügen einer CSV-Kopfzeile kann auch in Python geschrieben werden. Es war also relativ einfach, Shell hinzuzufügen Ich habe es in Shell erstellt und die Datei aus Python aufgerufen.
qiita.py
import subprocess
# comment
cmd = './add_header.sh'
subprocess.call(cmd, shell=True)
Durch Angabe von Shell im Unterprozess Sie können eine externe Shell-Datei aufrufen.
add_header.sh
##!/usr/bin/env bash
for file in `\find from_dir -maxdepth 1 -type f`; do
gsed -i '1iheader1,header2' $file
done
"1i" ist erforderlich, wenn gsed aufgerufen wird.
gsed ・ ・ ・ Bitte installieren Sie gnu-sed.
■ CSV-Dateikopf des Ausführungsergebnisses header1,header2
Ich musste eine große Anzahl von CSV-Dateien, die auf S3 vorhanden waren, in Parkett konvertieren. Alle Dateien werden lokal heruntergeladen.
qiita2.py
import pyarrow as pa
import pyarrow.parquet as pq
import pandas as pd
import glob
from_dir = './from_dir/'
to_dir = './to_dir/'
#from_Lesen Sie alle CSV in dir
files = glob.glob(from_dir + "*", recursive=True)
#Konvertieren Sie jeweils eine Datei in_In dir speichern
for file in files:
path_name = file.split('/')
df = pd.read_csv(file)
table = pa.Table.from_pandas(df)
pq.write_table(table, to_dir + path_name[2] + '.pq')
CSV-Datei lesen, Ausgabe ist Pandas Die Umstellung auf Parkett ist mit Pyarrow einfach
Recommended Posts