Lorsque vous essayez de donner un sens à un grand DataFrame dans Pandas, vous devrez peut-être le sous-ensemble par colonnes et lignes. Dans ce didacticiel, nous allons montrer les cas d'utilisation les plus courants du partitionnement de colonnes de votre DataFrame.
Nous allons commencer par configurer notre exemple DataFrame, ce que nous ferons en exécutant le code Python suivant dans notre environnement préféré (pour plus de simplicité, j'utilise Anaconda et Jupyter Lab).
import pandas as pd # import the pandas library
languages = ({"language": [ "Python", "C-Sharp", "Javascript","PHP"] ,
"avg_difficulty_level": [3, 2, 2, 1],
"avg_salary": [120, 100, 120, 80],
"applications": [10,15,14,20]})
# Now let's convert our dict to a DataFrame
languages = pd.DataFrame.from_dict(languages)
Maintenant, examinons nos premières lignes Dataframe en utilisant la méthode head().
languages.head()
Comme vous pouvez le constater, il s'agit d'un DataFrame assez simple que nous utiliserons comme exemple dans cet article :
| |
Langue |
avg_difficulty_level |
avg_salary |
applications |
| 0 |
Python |
3 |
120 |
dix |
| 1 |
do dièse |
2 |
100 |
15 |
| 2 |
Javascript |
2 |
120 |
14 |
| 3 |
PHP |
1 |
80 |
20 |
Filtrer une seule colonne
Nous allons commencer par le cas le plus simple, qui consiste à créer un sous-ensemble d'une colonne de notre ensemble de données. L'exécution de la commande suivante créera un objet Series :
Par nom / étiquette
languages["language"]
La sortie est une série :
0Python
1 do dièse
2 Javascript
3 PHP
Nom : langage, dtype : objet
type(languages["language"])
pandas.core.series.Series
Par indice
La commande suivante renverra également une série contenant la première colonne
languages.iloc[:,0]
Sélection de plusieurs colonnes
De nom
Lors du passage d'une liste de colonnes, Pandas renverra un DataFrame contenant une partie des données.
languages[["language", "applications"]]
| |
Langue |
applications |
| 0 |
Python |
dix |
| 1 |
do dièse |
15 |
| 2 |
Javascript |
14 |
| 3 |
PHP |
20 |
Par étiquette (avec loc)
df.loc[:,["language","applications"]]
Le résultat sera similaire.
Par indice
Récupérons maintenant plusieurs colonnes en utilisant l'index :
languages.iloc[: ,[0,3]]
| |
Langue |
applications |
| 0 |
Python |
dix |
| 1 |
do dièse |
15 |
| 2 |
Javascript |
14 |
| 3 |
PHP |
20 |
Par condition
Dans ce cas, nous allons simplement afficher les colonnes dont le nom correspond à une expression spécifique. Nous allons utiliser la méthode de filtrage assez pratique :
languages.filter(axis = 1, like="avg")
Remarques:
- nous pouvons également filtrer par une expression régulière spécifique (regex).
- Nous pouvons appliquer le paramètre axis=0 pour filtrer par valeur de ligne spécifique.
Filtrer des lignes spécifiques par condition
Voici un moyen assez simple de créer un sous-ensemble du DataFrame en fonction d'une valeur de ligne :
languages[(languages["applications"] > 15)]
Nous n'avons qu'un seul résultat :
languages[(languages["applications"] > 15)]
| |
Langue |
avg_difficulty_level |
avg_salary |
applications |
| 3 |
PHP |
1 |
80 |
20 |