Prise en main de Pandas - Le guide ultime
Pandas est une libraire Open Source sous licence BSD. Il s'agit d'une librairie de manipulaion et d'analyse de données en python. Elle est très intuitive et facile à prendre.
Installation#
Pandas est disponible sur Pypi, vous pouvez l'installer via pip
. Si vous utilisez Aanaconda, il est installé par défaut.
Importation#
Une fois installé, il ne manque plus qu'à l'importer.
Vous pouvez vérifier la version de Pandaspandas.Series#
pandas.DataFrame#
Un DataFrame est l'équivalent des table de base de données relationnelle ou d'un tableau Excel. Un dataframe est organisé en lignes et colonne. Chaque colonne a un type donné et ne peut
2. Lecture d'un fichier#
-
- Texte (CSV, TXT)
-
- Json
-
- Excel
-
- Pickle
Importer des doonnées avec Pandas#
Pandas permet d'importer des données depuis de sources différentes.
Retrouvez l'ensemble du projet sur github (https://github.com/joekakone/Get-data-with-Pandas.git)
1. TXT: Plain Text
#
parcelle | variete | phyto | rdt | |
---|---|---|---|---|
0 | 1 | V1 | Avec | 5652 |
1 | 2 | V1 | Avec | 5583 |
2 | 3 | V1 | Avec | 5612 |
3 | 4 | V1 | Avec | 5735 |
4 | 5 | V1 | Avec | 5704 |
2. CSV: Comma Separated Values
#
date | home_team | away_team | home_score | away_score | tournament | city | country | neutral | |
---|---|---|---|---|---|---|---|---|---|
0 | 1872-11-30 | Scotland | England | 0 | 0 | Friendly | Glasgow | Scotland | False |
1 | 1873-03-08 | England | Scotland | 4 | 2 | Friendly | London | England | False |
2 | 1874-03-07 | Scotland | England | 2 | 1 | Friendly | Glasgow | Scotland | False |
3 | 1875-03-06 | England | Scotland | 2 | 2 | Friendly | London | England | False |
4 | 1876-03-04 | Scotland | England | 3 | 0 | Friendly | Glasgow | Scotland | False |
3. JSON: JavaScript Object Notation
#
Country_Region | Confirmed | Deaths | Recovered | Active | |
---|---|---|---|---|---|
0 | Benin | 5143 | 65 | 4119 | 959 |
1 | Burkina Faso | 11763 | 139 | 11130 | 494 |
2 | Cabo Verde | 14948 | 142 | 14470 | 336 |
3 | Cote d'Ivoire | 31825 | 185 | 30056 | 1584 |
4 | Gambia | 4543 | 143 | 3933 | 467 |
4. HTML: HyperText Markup Language
#
# | First Name | Last Name | Username | |
---|---|---|---|---|
0 | 1 | Mark | Otto | @mdo |
1 | 2 | Jacob | Thornton | @fat |
2 | 3 | Larry | the Bird | |
3 | 4 | Mark | Otto | @mdo |
4 | 5 | Jacob | Thornton | @fat |
5. XML: Extensible Markup Language
#
sepal_length | sepal_width | petal_length | petal_width | species | |
---|---|---|---|---|---|
0 | 5.1 | 3.5 | 1.4 | 0.2 | setosa |
1 | 4.9 | 3.0 | 1.4 | 0.2 | setosa |
2 | 4.7 | 3.2 | 1.3 | 0.2 | setosa |
3 | 4.6 | 3.1 | 1.5 | 0.2 | setosa |
4 | 5.0 | 3.6 | 1.4 | 0.2 | setosa |
6. Excel
#
Country | Region | Expenditures \n(US Dollars) | Total Libraries | Total Librarians | Total Volumes | Total Users | |
---|---|---|---|---|---|---|---|
0 | Afghanistan | Asia | NaN | 150 | NaN | 577300 | 48133.0 |
1 | Albania | Europe | 134036.0 | 2107 | 32.0 | 12398795 | 581298.0 |
2 | Algeria | Africa | 641176.0 | 760 | 56.0 | 4363718 | 1430.0 |
3 | American Samoa | Oceania | NaN | 32 | NaN | 170009 | NaN |
4 | Andorra | Europe | 5777651.0 | 39 | 6.0 | 222869 | 16596.0 |
7. Sqlite Database
#
# Connect to database
conn = sqlite3.connect("ipldatabase.sqlite")
data = pd.read_sql_query("SELECT * FROM Player;", con=conn)
# Close connection
conn.close()
data.head()
Player_Id | Player_Name | DOB | Batting_hand | Bowling_skill | Country_Name | |
---|---|---|---|---|---|---|
0 | 1 | SC Ganguly | 1972-07-08 00:00:00 | 1 | 1.0 | 1 |
1 | 2 | BB McCullum | 1981-09-27 00:00:00 | 2 | 1.0 | 4 |
2 | 3 | RT Ponting | 1974-12-19 00:00:00 | 2 | 1.0 | 5 |
3 | 4 | DJ Hussey | 1977-07-15 00:00:00 | 2 | 2.0 | 5 |
4 | 5 | Mohammad Hafeez | 1980-10-17 00:00:00 | 2 | 2.0 | 6 |
Prise en main des données#
Les dataframes Pandas disposent de plusieurs méthodes qui permettent de prendre en main les données très rapidement.
# | Méthode | Description |
---|---|---|
1 | .head | affiche les premières n lignes (5 par défaut) |
2 | .tail | affiche les dernières n lignes (5 par défaut) |
3 | .sample | affiche n lignes tirées au hasard (1 par défaut) |
3 | .info | affiche les types des colonnes et le nombres de valeurs non nulles |
4 | .describe | affiche un réumé statistique des colonnes numériques |
5 | .shape | retourne le nombre de lignes et de colonnes |
Sélection#
Il s'agit de
Projection#
La projection est similaire à la sélection, il s'agit de sélectionner quelques colonnes, on projette ainsi les données sur un colonne. Imaginez que vos colonnes représentent les coordonnées, alors cette notion de projection prend tout son sens.
Restriction et Filtrage#
Je vous propose de voir cela avec un exemple. Nous voulons voir seulement les lignes dont la note en mathématiques est supérieure à 10 par exemple. Alors nous procédons à une restriction avec la condition. Vous l'aurez compris Restriction -> Condition. Pour le besoin de certains traitements, l'on désire avoir
df_students.loc[df_students['Name']=='Aisha']
df_students[df_students['Name']=='Aisha']
df_students[df_students.Name == 'Aisha']
df_students.query('Name=="Aisha"')
Trier les données#
Tableau des effectifs#
Nous attaquons ici, la statistique descriptive.
Aggrégation#
Concaténation ou Union de tables#
Conca
Jointure de tables#
Une jointure de tables
Tableau croisé#
Si vous êtes un utilisateur de Microsoft Excel alors vous connaissez très bien les tableaux croisés dynamiques. Pandas implémente également cette fonctionnalité.
Remplacer les valeurs manquantes#
8. Visualisation#
Pandas permet également de construire des visuels. Pour cela Pandas utilise Matplotlib en arrière-plan.