J'ai un dataframe et je dois filtrer selon les conditions suivantesFiltrage d'une grande dataframe en pandas géants à l'aide de multitraitement
CITY == 'Mumbai' & LANGUAGE == 'English' & GENRE == 'ACTION' & count_GENRE >= 1
CITY == 'Mumbai' & LANGUAGE == 'English' & GENRE == 'ROMANCE' & count_GENRE >= 1
CITY == 'Mumbai' & LANGUAGE == 'Hindi' & count_LANGUAGE >= 1 & GENRE == 'ACTION'
quand je suis en train de le faire par
df1 = df.query(condition1)
df2 = df.query(condition2)
Je suis obtenir une erreur de mémoire (puisque la taille de ma base de données est énorme). Je prévoyais d'aller en filtrant l'état principal puis la sous-condition, de sorte que la charge soit moindre et les performances meilleures.
En analysant les conditions ci-dessus, en quelque sorte réussi à obtenir
main_filter = "CITY == 'Mumbai'"
sub_cond1 = "LANGUAGE == 'English'"
sub_cond1_cond1 = "GENRE == 'ACTION' & count_GENRE >= 1"
sub_cond1_cond2 = "GENRE == 'ROMANCE' & count_GENRE >= 1"
sub_cond2 = "LANGUAGE == 'Hindi' & count_LANGUGE >= 1"
sub_cond2_cond1 = "GENRE == 'COMEDY'"
pense donc comme une structure d'arbre (non binaire bien sûr, et en fait il n'est pas un arbre du tout).
Maintenant, je veux suivre une méthode de multitraitement (profondeur - sous-processus sous subprocess)
Maintenant, je veux quelque chose comme
on level 1
df = df_main.query(main_filter)
on level 2
df1 = df.query(sub_cond1)
df2 = df.query(sub_cond2)
onlevel 3
df11 = df1.query(sub_cond1_cond1)
df12 = df1.query(sub_cond1_cond2)
df21 = df2.query(sub_cond2_cond1) ######like this
Alors problème est de savoir comment passer des conditions correctement à chaque niveau (si Je vais stocker toutes les conditions dans une liste (en fait même pas pensé à ce sujet)). NB: le résultat de chaque filtrage doit être exporté pour séparer les csv distincts.
Ex:
df11.to_csv('CITY == 'Mumbai' & LANGUAGE == 'English' & GENRE == 'ACTION' & count_GENRE >= 1')
En entrée, je ne sais pas comment suivre multitraitement (sa syntaxe & voie d'exécution, etc. notamment pour cela). Mais a obtenu la tâche malheureusement. Par conséquent, pas en mesure d'afficher des codes.
Donc, n'importe qui peut donner un exemple de ligne de code pour y parvenir.
Si vous avez une meilleure idée (objet de classe ou déplacement de noeud), veuillez suggérer.
Que signifie "énorme"? Avez-vous un numéro? par exemple.taille de la mémoire ou lignes * cols dans la trame de données? –
@ SteveMisuta-En fait, il contient 160 millions d'enregistrements appx. et et je dois courir 2 3 fichiers de plus .py à la fois qui accèdent à cet dataframe en interne et simultanément. C'est là que j'obtiens l'erreur de mémoire (hors capacité de RAM). ANd je ne peux rien faire à ce sujet (séparément alll tous ces fichiers py) – Satya
@ SteveMisuta-si vous avez une idée comme façon d'itération de liste, puis en vérifiant d'abord char (si commence par sub_ ou sub_cond1 comme ça). Puis aussi je vais bien avec that.please suggèrent. – Satya