J'utilise Python pour traiter plus de 30000 éléments de données en quelques secondes

Réimprimé de: Smart Demo

Cet article 1542 mots , Suggérer une lecture 4 minutes .

Cet article prend 17 textes txt et plus de 30000 éléments de données à titre d'exemple, et utilise Python pour se connecter à la base de données MySQL pour obtenir un fonctionnement rapide.

Scénario d'application : De nombreuses données doivent être intégrées, dédupliquées et exportées dans un format spécifique. Si vous utilisez Excel, il est non seulement long et laborieux, mais aussi inexact. Existe-t-il une solution plus efficace?

Cet article prend 17 textes txt et plus de 30000 éléments de données à titre d'exemple, et utilise Python pour se connecter à la base de données MySQL pour obtenir un fonctionnement rapide.

Si quelqu'un d'autre fait des heures supplémentaires, mon petit assistant Python le fera en quelques secondes!

Cet article comprend principalement les trois aspects suivants:

  • Écriture de données
  • Déduplication des données
  • Sortie de données

Écrire des données dans la base de données MySQL

Le fichier ci-dessous est la source de données de cet article:

Notre hypothèse est la suivante: écrire un petit programme, le jeter dans ce dossier et double-cliquer pour lire automatiquement les données de chaque document txt et les écrire dans la base de données.

le code montre comme ci-dessous:

import pymysqlimport osconn = pymysql.connect (host = 'localhost', user = 'root', password = '123456', db = 'qq', charset = 'utf8') cur = conn.cursor () cur.execute (" CREATE TABLE qq (id int (5) NOT NULL auto_increment, qq varchar (20) NOT NULL, PRIMARY KEY (id)); ") conn.commit () path = os.getcwd () files = os.listdir (path) i = 0 pour le fichier dans les fichiers: f = open (fichier, 'r', encoding = 'UTF-8') next (f) pour la ligne dans f: i + = 1 #print (line) sql = "insérer dans qq ( qq) valeurs (% s); "cur.execute (sql, line) print (" insert number ", i," data! ") conn.commit () f.close () cur.close () conn.close ()

résultat courant:

Explication du code clé:

Ce code utilise les bibliothèques pymysql et os.

  • pymysql: utilisé pour faire fonctionner la base de données MySQL;
  • os: utilisé pour parcourir tous les fichiers du dossier.

Le code principal est maintenant expliqué comme suit:

1. Parcourez tous les noms de fichiers dans n'importe quel dossier

Une fois le programme écrit, utilisez pyinstaller pour l'empaqueter dans un programme exe et placez-le sous le dossier à utiliser.

Utilisez la commande path = os.getcwd () pour obtenir le répertoire où se trouve le fichier exe.

Utilisez la commande files = os.listdir (path) pour obtenir les noms de tous les fichiers dans le répertoire où se trouve le fichier exe et les enregistrer dans la liste des fichiers.

De cette façon, nous avons obtenu tous les noms de fichiers txt, vous pouvez nommer votre nom de fichier txt, le programme peut le lire.

2. Écrire des données dans la base de données

(1) Connectez-vous à la base de données et créez une nouvelle table dans la base de données

A. Se connecter à ma base de données qq

conn = pymysql.connect (host = 'localhost', user = 'root', password = '123456', db = 'qq', charset = 'utf8')

B. Créer une nouvelle table qq

Créez une nouvelle table dans la base de données qq. Le nom de la table est qq et contient 2 champs: le champ id est la clé primaire et incrémente automatiquement; le champ qq est un type de caractère et est utilisé pour stocker des données.

cur.execute ("CREATE TABLE qq (id int (5) NOT NULL auto_increment, qq varchar (20) NOT NULL, PRIMARY KEY (id))")

(2) Ecrire des données dans la base de données

Deux couches de boucles sont utilisées ici:

pour le fichier dans les fichiers: f = open (fichier, 'r', encoding = 'UTF-8') next (f) pour la ligne dans f: i + = 1 #print (line) sql = "insérer dans qq (qq) valeurs (% s); "cur.execute (sql, line) print (" insert number ", i," item data! ") conn.commit () f.close ()

La première boucle est utilisée pour ouvrir les 17 fichiers txt ci-dessus dans l'ordre.

La deuxième boucle consiste à lire tour à tour chaque ligne de chaque fichier txt et à insérer les données de ligne modifiées dans le champ qq de la table de base de données qq.

À ce stade, l'importation des données est terminée, soit un total de 32073 données.

Nettoyage des données

Ici, en prenant la valeur de déduplication comme exemple, une brève introduction au nettoyage des données.

1. Créez une nouvelle table pour stocker les données nettoyées

Vous pouvez vous connecter à MySQL dans la fenêtre cmd, ouvrir la base de données qq et effectuer les opérations suivantes:

CREATE TABLE qq_dist (id int (5) NOT NULL auto_increment, qq varchar (20) NOT NULL, PRIMARY KEY (id));

De cette façon, une nouvelle table qq_dist est créée pour stocker les données nettoyées pour un rappel ultérieur.

2. Données de nettoyage

Après vous être connecté à MySQL, procédez comme suit:

insérer dans qq_dis (qq) sélectionner qq distinct de qq;

Insérez le contenu du champ qq unique trouvé dans la table qq dans le champ qq de la table qq_dist.

Exporter des données dans un format spécifique

Cas : Exporter les lignes 101-200 des données nettoyées vers un nouveau texte txt.

le code montre comme ci-dessous:

import pymysqlconn = pymysql.connect (host = 'localhost', user = 'root', password = '123456', db = 'wxid', charset = 'utf8') print ("Writing, please wait ...") cur = conn.cursor () sql = "select wxid from wd_dis limit 100,100;" cur.execute (sql) conn.commit () alldata = cur.fetchall () f = open ('data101-200.txt', 'a ') i = 0 pour les données dans toutes les données: i + = 1 f.write (data) f.flush () f.closecur.close () conn.close () print ("écriture terminée, un total de {} données a été écrit ! ". Format (i))

Explication du code clé:

1, limite

La signification de la fonction limit m, n dans MySQL est: lire la ligne n de la ligne m + 1.

Donc, dans ce cas, la lecture des lignes 101-200 est limitée à 100100

2. flush ()

La fonction flush () doit être ajoutée, elle peut écrire les données du tampon dans le fichier. Sinon, il y aura une erreur indiquant que le document txt généré est vide.

-Terminer-

Suivez la plateforme publique officielle WeChat de Tsinghua-Qingdao Data Science Research Institute " THU Data Pie  "Et numéro de sur" Data Pie THU  "Obtenez plus d'avantages de cours et un contenu de qualité.

Roman coronavirus valeur R de 2,90 et 2,92, AI-conduit algorithmes d'alerte précoce réussie pneumonie Wuhan
Précédent
étudiants en arts libéraux peuvent comprendre la machine d'apprentissage Tutoriel: descente de gradient, la régression linéaire, la régression logistique
Prochain
secteur Programmation 10 obtiennent le meilleur de l'algorithme du monde, à la fin vous comprenez certaines d'entre elles?
2020 Liste des tendances: AutoML, étude fédérale, la fin de l'ère de l'oligarque nuage (avec des liens)
13 types de probabilité doivent apprendre à comprendre la répartition de la profondeur
Que les travaux « ville fermée », la couverture médiatique peut réduire considérablement la propagation de l'épidémie
complet! Vous apprendre à visualiser l'arbre de décision à la main (avec lien et code)
Reddit vote papiers machine d'apprentissage en 2019 ne doit pas manquer
Mathématiques Département de Pékin diplômé de l'Université, l'étude approfondie assistant professeur UIUC a examiné 60 articles à optimize
Musc créer un nouvel exploit de vol spatial humain! soufflage d'air jusqu'à la fusée, l'évasion de la cabine habitée réussie
fonction commune de la perte et le résumé de l'évaluation (avec le code)
Ali a perdu la seule mère de l'aide: une fille morte a fait AI, 3 mois après sa fille pour reproduire le son
La technologie de reconnaissance de visage noir, le vrai danger est quoi?
Levage apprentissage des mathématiques de la machine, la base théorique de sept livres (la fin en annexe Télécharger!)