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.