Cet article partage principalement un exemple de lecture d'un fichier csv avec Python, de suppression d'une colonne puis d'écriture d'un nouveau fichier. Il a une grande valeur de référence et j'espère qu'il sera utile à tout le monde. Suivons l'éditeur pour y jeter un œil. J'espère que cela pourra aider tout le monde à mieux maîtriser Python
a utilisé deux méthodes pour résoudre ce problème, qui sont toutes deux des solutions existantes sur Internet.
Description du scénario :
Il y a un fichier de données enregistré en mode texte, et maintenant il y a trois colonnes user_id, plan_id, mobile_id. Le but est d'obtenir de nouveaux fichiers avec uniquement mobile_id, plan_id.
Solution
Option 1 : Utiliser Python pour ouvrir des fichiers et écrire des fichiers. Jouez simplement à travers les données, traitez les données dans la boucle for et écrivez-les dans un nouveau fichier.
Le code est le suivant :
def readwrite1( input_file,output_file): f = open(input_file, 'r') out = open(output_file,'w') print (f) for line in f.readlines(): a = line.split(",") x=a[0] + "," + a[1]+"\n" out.writelines(x) f.close() out.close()
Option 2 : Utiliser pandas Lisez les données dans le DataFrame puis divisez les données. Utilisez directement la fonction d'écriture du DataFrame pour écrire dans le nouveau fichier
Le code est le suivant :
def readwrite2(input_file,output_file): date_1=pd.read_csv(input_file,header=0,sep=',') date_1[['mobile', 'plan_id']].to_csv(output_file, sep=',', header=True,index=False)
Du point de vue du code, la logique des pandas est plus claire.
Jetons un coup d'œil à l'efficacité d'exécution !
def getRunTimes( fun ,input_file,output_file): begin_time=int(round(time.time() * 1000)) fun(input_file,output_file) end_time=int(round(time.time() * 1000)) print("读写运行时间:",(end_time-begin_time),"ms") getRunTimes(readwrite1,input_file,output_file) #直接撸数据 getRunTimes(readwrite2,input_file,output_file1) #使用dataframe读写数据
Durée d'exécution en lecture et en écriture : 976 ms
Durée d'exécution en lecture et en écriture : 777 ms
input_file Environ Avec 270 000 données, l'efficacité du dataframe est encore plus rapide que celle de la boucle for. Si la quantité de données est plus grande, l'effet sera-t-il plus évident ?
Ensuite, essayez d'augmenter le nombre d'enregistrements input_file. Les résultats sont les suivants
input_file | readwrite1 | readwrite2 |
27W | 976 | 777 |
55W | 1989 | 1509 |
110W | 4312 | 3158 |
D'après les résultats des tests ci-dessus, l'efficacité du dataframe est augmentée d'environ. 30%.
Recommandations associées :
Exemple détaillé d'utilisation de Python pour filtrer et supprimer des fichiers dans un répertoire
Une brève introduction à Python NLP
Explication du système de gestion des utilisateurs Python avec des exemples
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!