Comment lire un dataset à partir d'un fichier txt en Python?
J'ai un jeu de données dans ce format:
J'ai besoin d'importer les données et de travailler avec elle.
Le principal problème est que la première et la quatrième colonnes sont des chaînes de caractères, tandis que les deuxième et troisième colonnes sont des flotteurs et des ints, respectivement.
J'aimerais mettre les données dans une matrice ou au moins d'obtenir une liste de chaque colonne de données.
J'ai essayé de lire l'ensemble du jeu de données comme un string, mais c'est un gâchis:
f = open ( 'input.txt' , 'r')
l = [ map(str,line.split('\t')) for line in f ]
Ce qui pourrait être une bonne solution?
Vous devez vous connecter pour publier un commentaire.
Vous semblez avoir des données au format CSV (avec une tabulation comme séparateur) alors pourquoi ne pas utiliser le csv module?
data
est une liste de tuples contenant les données converties (colonne 2 -> float, colonne 3 -> int). Si les données.csv contient (avec les onglets, pas d'espaces):data
contient :Vous pouvez utiliser les pandas. Ils sont parfaits pour la lecture des fichiers csv, fichiers délimités par des tabulations etc. Les Pandas seront presque tout le temps de lire le type de données correctement et de les mettre dans un tableau numpy lors de l'accès à l'aide de lignes/colonnes, comme l'ont démontré.
J'ai utilisé ce délimités par des tabulations 'test.txt fichier:
Voici les pandas code. Votre fichier sera lu dans un joli dataframe l'aide d'une ligne de python. Vous pouvez modifier la " sep " de la valeur à quelque chose d'autre pour répondre à votre fichier.
Essayez:
Vous pouvez ajouter les noms de colonnes comme:
Et puis obtenir les colonnes comme:
Voici une solution pour lire les données et de les convertir ceux de deuxième et troisième colonnes de types numériques:
Avec le suivant
input.txt
:Il produit la sortie suivante:
split et la transposition de la liste:
Utilisation
numpy.loadtxt("data.txt")
pour lire les données d'une liste de ligneschaque ligne comporte des éléments de chaque colonne
Utilisation
dtype = string
à lire chaque entrée de la chaîne deVous pouvez convertir les valeurs correspondantes pour integer, float, etc. avec une boucle for.
Référence: https://docs.scipy.org/doc/numpy-1.15.0/reference/generated/numpy.loadtxt.html