J'utilise habituellement python pour mes recherches, mais c'est la première fois que je manipule un grand ensemble de données (plus de cent millions de lignes réparties en plusieurs fichiers), et une vieille mais bonne station de travail (CPU Xeon E5-2637 v4, GPU Quadro K420).
Toute aide pour accélérer l'algorithme ci-dessous serait grandement appréciée. Je cherche actuellement à améliorer les performances pour optimiser le matériel et utiliser groupe par pour peut-être changer mon code de boucle for, mais en vain. J'ai également consulté les questions précédentes, mais je (crois) que ce dont j'ai besoin est plus élémentaire.
Le format des données est le suivant. (même format pour tous les fichiers)
C:/../data1.csv
--
col1 col2 col3
parent abcde NaN
child d3d a1a
child s2s f4f
parent fghij NaN
child g5g h6h
child j7j k8k
Mon code original
#list of file locations
filelist = {'files': ['C:/../data1.csv', 'C:/../data2.csv', 'C:/../data3.csv']}
filelist_df = pd.DataFrame(data=filelist)
filelist_df = filelist_df["files"].str.strip("[]")
#data transformation
column_names=['1', '2', '3', '4']
temp_parent=[]
for i in range(3):
new_df=pd.DataFrame(columns=column_names)
data_df=pd.read_csv(filelist_df[i], skiprows=1, names=column_names)
for j in range(len(data_df)):
if data_df['1'][j]=='parent':
temp_parent=data_df['2'][j]
else:
data_df['4'][j]=temp_parent
temp_row=data_df.loc[j,:]
new_df = new_df.append(temp_row, ignore_index=True)
new_df.to_csv('C:/../new%d' % i + '.csv', index=False, header=False)
del new_df, data_df, temp_parent, temp_row
Sortie (seulement pour data1.csv) :
C:/../new0.csv
--
child d3d a1a abcde
child s2s f4f abcde
child g5g h6h fghij
child j7j k8k fghij