Jusqu'à présent, la manipulation de données avec Pandas en Python était une position que vous devriez simplement rechercher sur Google pour savoir comment l'utiliser lorsque vous en avez besoin, mais lorsque vous étudiez l'analyse de données et l'apprentissage automatique, vous pouvez utiliser Jupyter Notebook pour extraire des données. Je sens que je ne peux pas parler si je ne peux pas le faire fonctionner, alors je commence à me réorganiser et à étudier comment utiliser Pandas à partir des bases. Cet article est la note d'étude.
Le contenu de cet article est en cours de test dans l'environnement Jupyter Notebook préparé selon le lien ci-dessous. Installation et démarrage faciles de Jupyter Notebook à l'aide de Docker (prend également en charge nbextensions et Scala) --Qiita
Dans cet environnement, vous pouvez accéder au port 8888 avec un navigateur et utiliser Jupyter Notebook. Vous pouvez ouvrir une nouvelle note en suivant Nouveau> Python 3 sur le bouton en haut à droite.
Un Pandas DataFrame est une image de données tabulaires avec des lignes et des colonnes. Les lignes peuvent être numérotées en commençant par 0, mais il semble qu'elles puissent être des chaînes. Les colonnes ont les noms des colonnes.
Alors que DataFrame est tabulaire, il existe également un objet de colonne uniquement appelé Series.
Les articles suivants ont été très utiles pour le contenu de DataFrame et Series. Mes images pandas.Series et DataFrame étaient fausses-Qiita
import pandas as pd
#S'il y a un en-tête
df = pd.read_csv("data.csv")
#La ligne d'en-tête devient le nom de la colonne
#S'il n'y a pas d'en-tête
df = pd.read_csv("data.csv", header=None)
#Les nombres commençant par 0 deviennent des noms de colonnes
#Si vous souhaitez spécifier un nom de colonne sans en-tête
df = pd.read_csv("data.csv", names=["id", "target", "data1", "data2", "data3"])
À partir de cet article, les fichiers CSV créés avec des nombres aléatoires appropriés https://github.com/suzuki-navi/sample-data/blob/master/sample-data-1.csv J'utilise.
(GitHub formate et affiche également les fichiers CSV)
Vous pouvez facilement vérifier le contenu de l'objet DataFrame sur le bloc-notes Jupyter.
Si vous ne voulez voir qu'une partie des données
#5 premières lignes
df.head()
#3 premières lignes
df.head(3)
# or
df[:3]
#5 dernières lignes
df.tail()
#3 dernières lignes
df.tail(3)
#Extraire uniquement les 11e à 20e lignes
# (L'index commençant de 0 est de 10 à 19)
df[10:20]
#Extrait de la 11ème ligne jusqu'à la fin
# (L'index commençant par 0 est derrière 10)
df[10:]
#Vérifiez uniquement la ligne 11
# (10 pour les index à partir de 0)
df.loc[10]
#Extraire uniquement des colonnes spécifiques
df[["target", "data1"]]
#Extraire uniquement des colonnes spécifiques
#Devenez une série au lieu d'un DataFrame
df["data1"]
# df[["data1"]]Différent de
#Extraire uniquement des colonnes spécifiques dans une plage de lignes spécifique
df[["target", "data1"]][10:20]
# or
df[10:20][["target", "data1"]]
Même si vous n'extrayez que quelques lignes, l'index attaché aux lignes est conservé.
df.shape
# => (300, 5)
df.columns
# => Index(['id', 'target', 'data1', 'data2', 'data3'], dtype='object')
df.dtypes
# => id int64
# target int64
# data1 float64
# data2 float64
# data3 float64
# dtype: object
Vous pouvez effectuer des opérations sur les colonnes.
df [" data1 "]
est Series, mais si vous l'écrivez comme df [" data1 "] / 100
, il calculera / 100
pour chaque élément de Series et obtiendra le résultat dans Series. Je peux le faire.
Vous pouvez également effectuer des opérations entre les colonnes.
df["data1"] + df["data2"]
# df["data1"] >=Générer un DataFrame composé uniquement de lignes où 0 est True
#L'index de ligne est conservé, il devient donc un nombre discret
df[df["data1"] >= 0]
#Vous pouvez également interroger comme SQL
df.query('data1 >= 30 and target == 1')
#Si vous souhaitez mettre une chaîne dans la requête""Entourez de
df.query('target == "1"')
df["target"].unique()
# => array([3, 2, 1])
df.describe()
Ce qui suit renvoie un DataFrame avec des lignes triées par colonne «data1».
#ordre croissant de la colonne data1
df.sort_values("data1")
#ordre décroissant de la colonne data1
df.sort_values("data1", ascending=False)
#Trier par plusieurs colonnes
df.sort_values(["target", "data1"], ascending=False)
Comment puis-je rendre le premier tri "cible" décroissant et le second tri "data1" croissant?
Dans l'exemple suivant, une nouvelle colonne de valeur qui a été calculée sur une colonne existante est ajoutée à l'extrémité droite.
df["data_sum"] = df["data1"] + df["data2"] + df["data3"]
c'est tout.
Recommended Posts