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
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
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
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
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.
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
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
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
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
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