[PYTHON] [Introduction à Pandas] Lire un fichier csv sans nom de colonne et lui donner un nom de colonne

Donner un nom de colonne à un fichier csv sans nom de colonne

Je lis parfois un fichier csv sans nom de colonne et lui donne un nom de colonne, mais j'oublie souvent comment le faire, alors notez-le comme mémorandum.

Pardon. Le contenu n'est vraiment pas un gros problème.

Données à utiliser

Les données utilisées étaient les données sur le logement publiées dans le référentiel d'apprentissage machine de l'UCI. housing data

Lecture des données

Tout d'abord, lisez les données. Les données sont séparées par des espaces au lieu de virgules, spécifiez donc les espaces entre sep. De plus, étant donné que Housing.data n'a pas de nom de colonne, les données de la première ligne seront reconnues comme un nom de colonne lorsqu'elles sont lues normalement, spécifiez donc header = None pour éviter cela.

import pandas as pd
df = pd.read_csv("housing.data", header=None, sep="\s+")

Le résultat de la lecture des données est

スクリーンショット 2019-11-17 16.55.48.png

Ce sera. Les nombres de 0 à 13 sont automatiquement attribués comme noms de colonne. Remplacez ce nom de colonne créé automatiquement par le nom de colonne d'origine. Commencez par créer un dictionnaire (labels_dict) qui associe le nom de la colonne avant la conversion au nom de la colonne après la conversion. Si vous spécifiez labels_dict dans la méthode renommer du bloc de données, les noms de colonne seront remplacés selon la correspondance affichée dans le dictionnaire.

labels =  ["CRIM", "ZN", "INDUS", "CHAS", "NOX", "RM", "AGE", "DIS", "RAD", "TAX", "PTRATIO", "B", "LSTAT", "MEDV"]
labels_dict = {num: label for num, label in enumerate(labels)}
df = df.rename(columns = labels_dict)
#Enregistrez le bloc de données avec le nom de la colonne ajouté en tant que fichier csv.
df.to_csv("housing_data.csv", index=False)

Si vous vérifiez l'intérieur de df après l'exécution, vous pouvez voir que le nom de la colonne a été changé.

スクリーンショット 2019-11-17 17.02.34.png

Omake (Veuillez noter que ce qui suit n'a rien à voir avec le contenu original de cet article)

Comme c'est un gros problème, utilisons ces données pour prédire approximativement le prix de l'immobilier.

Jetons un coup d'œil aux données

Si vous exécutez le code suivant, vous pouvez voir que ces données sont toutes des données numériques et qu'il n'y a aucune valeur manquante. Vous pouvez également afficher des statistiques. Veuillez l'essayer si vous le souhaitez.

from IPython.display import display
#Affichage du type de données
display(df.dtypes)
#Affichage du nombre de valeurs manquantes
display(df.isnull().sum())
#Affichage des statistiques
display(df.describe())

Normalement, les données sont prétraitées lors de la vérification des statistiques des données, puis les données sont entrées dans l'algorithme d'apprentissage automatique, mais cette fois elles seront omises. C'est parce que ça va.

Apprendre avec un modèle de régression linéaire

J'omets diverses choses. Après tout, ça va. Au minimum, nous standardisons les données et les évaluons avec des données de test, mais nous n'ajustons aucun hyper paramètre. L'évaluation était simplement basée sur l'erreur quadratique moyenne (RMSE). Le code est ci-dessous.

from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.pipeline import Pipeline
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings("ignore")
%matplotlib inline

#Paramètres du pipeline
pipe = Pipeline([
    ("scl", StandardScaler()),
    ("pca", PCA(n_components=10)),
    ("lr", LinearRegression(normalize=False))
])

#Répartition des données
xtrain, xtest, ytrain, ytest = train_test_split(df[df.columns[df.columns != "MEDV"]], df["MEDV"], test_size=0.3, random_state=1)

#Apprentissage de modèle
pipe.fit(X=xtrain, y=ytrain)

#Prévisions de prix
ypred = pipe.predict(xtest)

#Évaluation du modèle
display(mean_squared_error(ytest, ypred))

#Voir les résultats
result = pd.DataFrame(columns=["index", "true", "pred"])
result["index"] = range(len(ytest))
result["true"] = ytest.tolist()
result["pred"] = ypred

plt.figure(figsize=(15,5))
plt.scatter(result["index"], result["true"], marker="x", label="true")
plt.scatter(result["index"], result["pred"], marker="v", label="predict")
plt.xlabel("ID")
plt.ylabel("Prix médian")
plt.grid()
plt.legend()
plt.show()

Lorsque cela a été fait, l'erreur quadratique moyenne était de 21,19. Je ne sais pas si c'est bon ou mauvais sans regarder correctement les données, mais pour le moment, j'ai pu évaluer la différence entre la prévision de prix et la valeur réelle.

De plus, la valeur prédite et la valeur vraie sont converties en grammes comme suit. En un coup d'œil, vous pouvez voir que plus le prix est élevé, plus l'écart est grand et plus la valeur prévue est basse.

スクリーンショット 2019-11-17 18.33.46.png

Recommended Posts

[Introduction à Pandas] Lire un fichier csv sans nom de colonne et lui donner un nom de colonne
Lire et formater des fichiers csv mélangés avec des tabulations de virgule avec des pandas Python
Comment obtenir un nom de colonne et un nom d'index spécifiques avec Pandas DataFrame
[Python] Comment lire le fichier csv (méthode read_csv du module pandas)
Lisez le fichier CSV avec Python et convertissez-le en DataFrame tel quel
Comment lire un fichier CSV avec Python 2/3
Lire le fichier CSV: pandas
Comment lire les fichiers de numéros de série en boucle, les traiter et les représenter graphiquement
Lisez le fichier csv et affichez-le dans le navigateur
Lire et écrire un fichier csv
Chaque fois que j'essaye de lire un fichier csv en utilisant des pandas, j'obtiens une erreur numpy.
Lire et écrire des fichiers
Écrire et lire des fichiers
Comment coller un fichier CSV dans un fichier Excel à l'aide de Pandas
[Python] Comment récupérer un fichier html local et le générer au format CSV à l'aide de Beautiful Soup
Comment rendre le nom du conteneur accessible dans Docker en tant que sous-domaine
Lire Python csv et exporter vers txt
[pandas] Méthode de lecture et d'affichage des fichiers .csv
Comment lire des fichiers CSV avec Pandas
Téléchargez Pandas DataFrame sous forme de fichier CSV
Lisez CSV et analysez avec Pandas et Seaborn
Une commande pour spécifier un fichier avec un nom spécifique dans un répertoire avec find et mv, cp ou gzip (linux)
Différentes façons de lire la dernière ligne d'un fichier csv en Python
[Python] Comment nommer les données de table et les sortir avec csv (méthode to_csv)
Je veux écrire un élément dans un fichier avec numpy et le vérifier.
[Python] Combiner des listes contenant des nombres en chaînes et les écrire dans un fichier de sortie
[Python] Comment lire des fichiers Excel avec des pandas
Lire les fichiers CSV chargés dans Flask sans les enregistrer
Comment lire des fichiers dans différents répertoires
[Python] Lire le csv japonais avec des pandas sans caractères déformés (extraire davantage les colonnes écrites en japonais)
[Introduction au trading système] J'ai dessiné un oscillateur stochastique avec python et joué avec ♬
Lors de la lecture d'un fichier csv avec read_csv de pandas, la première colonne devient index
Lisez le fichier csv avec le notebook jupyter et écrivez le graphique l'un sur l'autre
Je veux donner un group_id à une trame de données pandas
Création d'un module pour surveiller les mises à jour des fichiers et des URL
Comment convertir un fichier JSON en fichier CSV avec Python Pandas
[Python] Un mémo pour écrire du CSV verticalement avec Pandas
Lire le fichier json avec Python, le formater et générer le json
Script Python qui crée un fichier JSON à partir d'un fichier CSV
Sortie d'un vidage binaire en binaire et retour dans un fichier binaire
2 façons de lire tous les fichiers csv dans un dossier
Python --Lisez des données à partir d'un fichier de données numériques pour trouver des matrices, des valeurs propres et des vecteurs propres distribués co-distribués
[Python] Qu'est-ce qu'un tuple? Explique comment utiliser sans toucher et comment l'utiliser avec des exemples.
Lire le fichier csv Python
[python] Remplacez le nom du fichier image par un numéro de série
[Python] Lisez le fichier csv et affichez la figure avec matplotlib
Fonction pratique pour ajouter des colonnes n'importe où dans Pandas DataFrame
Obtenez une adresse IP globale et exportez-la vers des feuilles de calcul Google
[Introduction à Python] Combinaison des données Nikkei Average et NY Dow CSV
[Python] Comment générer une table pandas dans un fichier Excel
Comment lire un fichier Excel (.xlsx) avec Pandas [Python]
[Introduction à Tensorflow] Comprendre correctement Tensorflow et essayer de créer un modèle
Que faire lorsque vous obtenez des correspondances de fichier binaire (entrée standard) après la greffe d'un fichier texte
Lisez l'ancien fichier Word du formulaire d'application Gakushin DC (.doc) à partir de Python et essayez de le faire fonctionner