Application Python: Pandas # 3: Dataframe

Qu'est-ce que Dataframe

DataFrame a une structure de données bidimensionnelle qui ressemble à un ensemble de plusieurs séries. Vous pouvez générer un DataFrame en passant une Series à pd.DataFrame (). Les lignes sont automatiquement numérotées par ordre croissant à partir de 0.

pd.DataFrame([Series, Series, ...])

Il peut également être généré en exprimant la valeur dans un type de dictionnaire, qui est un type de liste. Gardez à l'esprit que la longueur de la liste de chaque élément doit être la même.

import pandas as pd

data = {"fruits": ["apple", "orange", "banana", "strawberry", "kiwifruit"],
        "year": [2001, 2002, 2001, 2008, 2006],
        "time": [1, 4, 5, 6, 3]}
df = pd.DataFrame(data)
print(df)
#Résultat de sortie
       fruits  time  year
0       apple     1  2001
1      orange     4  2002
2      banana     5  2001
3  strawberry     6  2008
4   kiwifruit     3  2006
import pandas as pd

index = ["apple", "orange", "banana", "strawberry", "kiwifruit"]
data1 = [10, 5, 8, 12, 3]
data2 = [30, 25, 12, 10, 8]
series1 = pd.Series(data1, index=index)
series2 = pd.Series(data2, index=index)

df = pd.DataFrame([series1,series2])

print(df)

#Résultat de sortie
apple  orange  banana  strawberry  kiwifruit
0     10       5       8          12          3
1     30      25      12          10          8

Définir l'index et la colonne

Dans DataFrame, les noms de ligne sont appelés index et les noms de colonne sont appelés colonnes.

Lorsqu'un DataFrame est créé sans rien spécifier Les index se voient attribuer des entiers dans l'ordre croissant à partir de 0.

De plus, la colonne devient l'index de Series qui est la donnée d'origine et la clé de type dictionnaire.

L'index de la variable de type DataFrame df peut être défini en affectant une liste de la même longueur que le nombre de lignes à df.index. Les colonnes de df peuvent être définies en attribuant une liste de la même longueur que le nombre de colonnes à df.columns.

df.index = ["name1", "name2"]
import pandas as pd

index = ["apple", "orange", "banana", "strawberry", "kiwifruit"]
data1 = [10, 5, 8, 12, 3]
data2 = [30, 25, 12, 10, 8]

series1 = pd.Series(data1, index=index)
series2 = pd.Series(data2, index=index)
df = pd.DataFrame([series1, series2])

#Définir l'index df pour commencer à 1
df.index=[1,2]

print(df)

#Résultat de sortie
 apple  orange  banana  strawberry  kiwifruit
1     10       5       8          12          3
2     30      25      12          10          8

Ajouter une ligne (notez l'attribut name)

Si vous souhaitez ajouter une ligne de données, utilisez append (). Ici, les données de type DataFrame sont df et les données de type Series sont des séries.

Tout d'abord, préparez les données de type Series correspondant à l'index dans la colonne de DataFrame. Ensuite, si vous écrivez append () comme indiqué dans l'exemple de code ci-dessous, une ligne de données sera ajoutée à df.

De plus, si vous souhaitez ajouter une série dont l'index ne correspond pas au DataFrame (Par exemple, pour les données de type DataFrame avec des colonnes ["fruits", "time", "year"]) Si vous souhaitez ajouter des données de type Série avec un index ["fruits", "heure", "année", "date"])

Une nouvelle colonne est ajoutée aux données de type DataFrame df et les éléments qui n'ont pas de valeur dans cette colonne sont traités comme des valeurs manquantes. NaN (Non a Number) est automatiquement renseigné.

À ce stade, si vous souhaitez concaténer Series sans attribut de nom, une erreur se produira à moins que ignore_index = True soit spécifié. L'attribut name est le nom attaché à la série elle-même (pas le nom de la colonne).


ata = {"fruits": ["apple", "orange", "banana", "strawberry", "kiwifruit"],
        "year": [2001, 2002, 2001, 2008, 2006],
        "time": [1, 4, 5, 6, 3]}
df = pd.DataFrame(data)
series = pd.Series(["mango", 2008, 7, "12/1"], index=["fruits", "year", "time", "date"])

df = df.append(series, ignore_index=True) #Il est normal d'ignorer sans nom.
print(df)
#Résultat de sortie
       fruits  time  year  date
0       apple     1  2001   NaN
1      orange     4  2002   NaN
2      banana     5  2001   NaN
3  strawberry     6  2008   NaN
4   kiwifruit     3  2006   NaN
5       mango     7  2008  12/1
#Série sans attribut de nom
series = pd.Series(["mango", 2008, 7, "12/1"], index=["fruits", "year", "time", "date"])
print(series)
#Résultat de sortie
fruits    mango
year       2008
time          7
date       12/1
dtype: object
#Série avec attribut de nom
series = pd.Series(["mango", 2008, 7, "12/1"], index=["fruits", "year", "time", "date"])
series.name = 'test'
print(series)
#Résultat de sortie
fruits    mango
year       2008
time          7
date       12/1
Name: test, dtype: object

Ajouter une colonne

Vous souhaiterez peut-être ajouter un nouvel élément (colonne) à un DataFrame existant.

Lorsque la variable de type DataFrame est df

df["Nouveau nom de colonne"] #Vous pouvez y ajouter une nouvelle colonne en lui attribuant une liste ou une série.

Lorsqu'une liste est attribuée, le premier élément de la liste est attribué à partir de la première ligne de df, et lorsque Series est attribué, l'indice de Series correspond à l'indice de df.

data = {"fruits": ["apple", "orange", "banana", "strawberry", "kiwifruit"],
        "year": [2001, 2002, 2001, 2008, 2006],
        "time": [1, 4, 5, 6, 3]}
df = pd.DataFrame(data)

df["price"] = [150, 120, 100, 300, 150]
print(df)
#Résultat de sortie
       fruits  time  year  price
0       apple     1  2001    150
1      orange     4  2002    120
2      banana     5  2001    100
3  strawberry     6  2008    300
4   kiwifruit     3  2006    150

Référence des données

Les données dans DataFrame peuvent être référencées en spécifiant des lignes et des colonnes. La référence change comme indiqué dans la figure ci-dessous en fonction de la manière dont les lignes et les colonnes sont spécifiées.

Il y a plusieurs façons de s'y référer Pour l'instant, nous nous occuperons de loc et iloc.

loc fait une référence par son nom iloc fait une référence par numéro.

image.png

Référence par nom

Utilisez loc pour faire référence aux données de type DataFrame par index ou nom de colonne.

Lorsque la variable de type DataFrame est df

df.loc["Liste des index", "Liste des colonnes"] #Vous pouvez obtenir la plage correspondante de DataFrame.
data = {"fruits": ["apple", "orange", "banana", "strawberry", "kiwifruit"],
        "year": [2001, 2002, 2001, 2008, 2006],
        "time": [1, 4, 5, 6, 3]}
df = pd.DataFrame(data)
print(df)
#Résultat de sortie
       fruits  time  year
0       apple     1  2001
1      orange     4  2002
2      banana     5  2001
3  strawberry     6  2008
4   kiwifruit     3  2006

#Liste des index dans le DataFrame ci-dessus[1, 2]Et une liste de colonnes["time","year"]Spécifier.

df = df.loc[[1,2],["time","year"]]  #Faites attention aux doubles parenthèses car il s'agit d'une spécification de liste
print(df)
#Résultat de sortie
       time    year
1      4      2002
2      5      2001

Référence par numéro

Utilisez iloc pour faire référence aux données de type DataFrame par index ou numéro de colonne.

Lorsque la variable de type DataFrame est df

df.iloc["Liste des numéros de ligne","Liste des numéros de colonne"] #Vous pouvez obtenir la plage correspondante de DataFrames.

Les nombres commencent à 0 pour les lignes et les colonnes. En plus de passer la liste, il est également possible de la spécifier en notation de tranche.

data = {"fruits": ["apple", "orange", "banana", "strawberry", "kiwifruit"],
        "year": [2001, 2002, 2001, 2008, 2006],
        "time": [1, 4, 5, 6, 3]}
df = pd.DataFrame(data)
print(df)
#Résultat de sortie
       fruits  time  year
0       apple     1  2001
1      orange     4  2002
2      banana     5  2001
3  strawberry     6  2008
4   kiwifruit     3  2006
#Liste des numéros de ligne dans le DataFrame ci-dessus[1, 3]Et une liste de numéros de colonne[0, 2]Spécifier.

df = df.iloc[[1, 3], [0, 2]]
print(df)
#Résultat de sortie
       fruits  year
1      orange  2002
3  strawberry  2008

Supprimer une ligne ou une colonne

Si la variable de type DataFrame est df, spécifier un index ou une colonne dans df.drop () Vous pouvez supprimer la ligne ou la colonne correspondante.

Vous pouvez supprimer tous les index ou colonnes en les passant dans une liste.

Cependant, vous ne pouvez pas supprimer des lignes et des colonnes en même temps. Si vous souhaitez supprimer une colonne, spécifiez axis = 1 dans le deuxième argument.

axis=1  #Spécifiez ceci lors de la suppression d'une colonne.
import pandas as pd

data = {"fruits": ["apple", "orange", "banana", "strawberry", "kiwifruit"],
        "time": [1, 4, 5, 6, 3],
        "year": [2001, 2002, 2001, 2008, 2006]}
df = pd.DataFrame(data)

# drop()De df 0 utilisant,Supprimer la première ligne
df_1 = df.drop(range(0, 2))

# drop()Colonne de df utilisant"year"Effacer
df_2 = df.drop("year", axis=1)

print(df_1)
print()
print(df_2)
#Résultat de sortie
       fruits  time  year
2      banana     5  2001
3  strawberry     6  2008
4   kiwifruit     3  2006

       fruits  time
0       apple     1
1      orange     4
2      banana     5
3  strawberry     6
4   kiwifruit     3

Trier

Lorsque la variable de type DataFrame est df

df.sort_values(by="Colonne ou liste de colonnes") #Vous pouvez maintenant trier les données.
ascending=True #Cet argument trie les valeurs de colonne dans l'ordre croissant (le plus petit).
import pandas as pd

data = {"fruits": ["apple", "orange", "banana", "strawberry", "kiwifruit"],
        "time": [1, 4, 5, 6, 3],
        "year": [2001, 2002, 2001, 2008, 2006]}
df = pd.DataFrame(data)
print(df)
>>>Résultat de sortie
       fruits  time  year
0       apple     1  2001
1      orange     4  2002
2      banana     5  2001
3  strawberry     6  2008
4   kiwifruit     3  2006
#Trier les données par ordre croissant(Spécifiez une colonne comme argument)
df = df.sort_values(by="year", ascending = True)
print(df)
#Résultat de sortie
       fruits  time  year
0       apple     1  2001
2      banana     5  2001
1      orange     4  2002
4   kiwifruit     3  2006
3  strawberry     6  2008
#Trier les données par ordre croissant(Spécifiez une liste de colonnes comme argument)
#Résultat de sortie
df = df.sort_values(by=["time", "year"] , ascending = True)
print(df)
       fruits  time  year
0       apple     1  2001
4   kiwifruit     3  2006
1      orange     4  2002
2      banana     5  2001
3  strawberry     6  2008

filtration

DataFrame est identique à Series En spécifiant une séquence de type booléen, vous pouvez effectuer un filtrage pour ne récupérer que les True.

De plus, comme Series, vous pouvez obtenir une séquence de type booléen à partir d'une expression conditionnelle à l'aide de DataFrame. Vous pouvez utiliser cette expression conditionnelle pour effectuer le filtrage.

Par exemple, le code ci-dessous extrait uniquement des lignes paires de données.

data = {"fruits": ["apple", "orange", "banana", "strawberry", "kiwifruit"],
        "year": [2001, 2002, 2001, 2008, 2006],
        "time": [1, 4, 5, 6, 3]}
df = pd.DataFrame(data)
print(df.index % 2 == 0)
print()
print(df[df.index % 2 == 0])
#Résultat de sortie
[ True False  True False  True]

      fruits  time  year
0      apple     1  2001
2     banana     5  2001
4  kiwifruit     3  2006

Lorsque la variable de type DataFrame est df

df.loc[df["colonne"]Expression conditionnelle comprenant] #Un DataFrame avec des lignes contenant des éléments correspondants est généré.
import numpy as np
import pandas as pd

np.random.seed(0)
columns = ["apple", "orange", "banana", "strawberry", "kiwifruit"]

#Générer DataFrame et ajouter des colonnes
df = pd.DataFrame()
for column in columns:
    df[column] = np.random.choice(range(1, 11), 10)
df.index = range(1, 11)

#Utilisation du filtrage, df"apple"5 colonnes ou plus"kiwifruit"Attribuez un DataFrame à df qui contient des lignes dont les colonnes ont une valeur supérieure ou égale à 5.
df = df.loc[df["apple"]>=5]
df = df.loc[df["kiwifruit"]>=5]

print(df)

#production
apple  orange  banana  strawberry  kiwifruit
1      6       8       6           3         10
5      8       2       5           4          8
8      6       8       4           8          8

Recommended Posts

Application Python: Pandas # 3: Dataframe
Application de Python: Pandas Partie 4: Concaténation et combinaison de DataFrames
Application Python: Pandas Partie 1: Basique
Application Python: Pandas Partie 2: Série
Jeu à la main Python (Pandas / DataFrame début)
[Python] Mémo d'opération de pandas DataFrame
Application de Python: Nettoyage des données Partie 2: Nettoyage des données à l'aide de DataFrame
Mes pandas (Python)
mémo pandas python
[Python] Qu'est-ce que la série pandas et DataFrame?
[Python] Ajouter le nombre total de lignes à Pandas DataFrame
[Pandas Python] Créer un DataFrame vide à partir d'un DataFrame existant
Pandas Python: recherchez DataFrame à l'aide d'expressions régulières
[python] Créer une table de pandas DataFrame vers postgres
[Python] Trier la table par sort_values (pandas DataFrame)
Installer des pandas sur python2.6
Application de Python 3 vars
Python Basic --Pandas, Numpy-
Fonctionnement de base de Python Pandas Series et Dataframe (1)
Processus d'application de la fonction pandas illustré
Lire csv avec des pandas python
[Python] Convertir la liste en Pandas [Pandas]
Espace d'en-tête de bande de pandas Python
[Python] Changer de type avec les pandas
Application Python: visualisation de données, partie 2: matplotlib
Résumé récent de l'étude des pandas python
Pandas 100 coups pour les débutants en Python
Application Web avec Python + Flask ② ③
Analyse de données à l'aide de pandas python
Exporter la trame de données pandas vers Excel
Application Web avec Python + Flask ④
Le pouvoir des pandas: Python
Conversion de Pandas DataFrame en System.Data.DataTable à l'aide de Python pour .NET
[Python] Chargement de fichiers csv à l'aide de pandas
[Présentation de l'application Udemy Python3 +] 31. Commentaire
Pandas / DataFrame Conseils pour une utilisation pratique
[Pandas] Enregistrer DataFrame en tant que JSON, charger JSON en tant que DataFrame
Application de Python: Nettoyage des données Partie 1: Notation Python
Python
Frappez les données du trésor de Python Pandas
python / pandas / dataframe / Comment obtenir la ligne / colonne / index / colonne la plus simple
Application Python: Traitement des données # 3: Format des données
Authentification à l'aide de l'authentification des utilisateurs tweepy et de l'authentification d'application (Python)
[Python] Comment utiliser la série Pandas
Python: Application de l'apprentissage supervisé (retour)
[Présentation de l'application Udemy Python3 +] 57. Décorateur
Créez un Dataframe pandas à partir d'une chaîne.
[Python] Comment ajouter des lignes et des colonnes à une table (pandas DataFrame)
Pandas
[Présentation de l'application Udemy Python3 +] 56. Clôture
Créer une nouvelle application utiliser python, django
Surveillez les performances des applications Python avec Dynatrace ♪
Convertir la liste en DataFrame avec python
[Python] Joindre deux tables avec des pandas
Python: analyse négative / positive: application d'analyse de texte
[Introduction à Python] Utilisons les pandas
Application Python: Numpy Partie 3: Double tableau
1. Statistiques apprises avec Python 1-1. Statistiques de base (Pandas)