<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 Tutoriel sur Pandas
1. Importer pandas
L'étape la plus importante est d'importer les bibliothèques nécessaires
Step1:  2. Charger des données
Step2:  2.1 Charger des colonnes spécifiques
Step3:  2.2 Charger une colonne en index
L'index est comme une adresse, il permet d'accéder à un point de données de la DataFrame ou de la série. Les lignes et les colonnes ont toutes deux des index
Step4:  Dans cet exemple, en chargant la colonne 'ID' en index, cela permet de faciliter l'accès aux données selon le numéro du ID.
Step5:  2.3 Charger une colonne dans un type particulier
Step6:  3. Charger un fichier sans header
Step7:  3.1 Fournir un header
Avec names
Avec .columns
Avec .rename()
Step8:  4. Convertir des data types
Un type de donnée est essentiellement une construction interne qu'un langage de programmation utilise pour comprendre comment stocker et manipuler des données.
Les types de données de pandas sont
Step9:  4.2 Convertir avec les fonctions de pandas
Step10:  5. Sélectionner des données
5.1 Adresser une colonne avec une chaîne de caractère
Avec les crochets []
Avec le point .
Step11:  5.2 Sélectionner une donnée selon un critère
Step12:  6. Utiliser l'index
Step13:  7. Charger les statistiques
Step14:  La fonction Pandas dataframe.quantile() renvoie des valeurs au quantile donné sur l'axe demandé.
DataFrame.quantile(q=0.5, axis=0, numeric_only=True, interpolation=’linear’)
Step15:  8. Groupby
La fonction Pandas dataframe.groupby() est utilisée pour diviser les données en groupes en fonction de certains critères. Les objets pandas peuvent être divisés sur n'importe quels axes. La définition abstraite du regroupement est de fournir un "mapping" des étiquettes aux noms de groupe.
Step16:  9. Sauvegarder des données en CSV
Step17:  Créer des graphiques avec matplotlib
matplotlib est une bibliothèque qui sert à tracer à visualiser des données sous formes de graphiques. Par exemple, il est possible de créer des graphiques avec les dataframes de pandas.
Les dataframes en Python sont très similaires à ceux dans R
<ASSISTANT_TASK:>
Python Code:
import pandas as pd
import numpy as np
from pandas import DataFrame,read_csv
Explanation: Tutoriel sur Pandas
1. Importer pandas
L'étape la plus importante est d'importer les bibliothèques nécessaires:
End of explanation
#Emplacement des compteurs avec la correspondance pour les noms dans les fichiers de comptage.
#http://donnees.ville.montreal.qc.ca/dataset/f170fecc-18db-44bc-b4fe-5b0b6d2c7297/resource/c7d0546a-a218-479e-bc9f-ce8f13ca972c/download/localisation_des_compteurs_velo.csv
compteurFichier = './donnees/localisation_des_compteurs_velo.csv'
compteur = pd.read_csv(compteurFichier)
#cars
carsFichier = './donnees/cars.txt'
cars = pd.read_csv(carsFichier, sep=',')
# .head() affiche les 5 premieres lignes seulement
compteur.head()
Explanation: 2. Charger des données
End of explanation
colonnes_selectionnees = ['Nom', 'Statut']
compteur = pd.read_csv(compteurFichier, sep=",", usecols = colonnes_selectionnees)
compteur.head()
Explanation: 2.1 Charger des colonnes spécifiques
End of explanation
# mettre les noms des compteurs en index
compteur = pd.read_csv(compteurFichier, index_col = 0)
compteur.head()
Explanation: 2.2 Charger une colonne en index
L'index est comme une adresse, il permet d'accéder à un point de données de la DataFrame ou de la série. Les lignes et les colonnes ont toutes deux des index: les index des lignes sont appelés index tandis que pour les colonnes ce sont ses noms de colonnes.
End of explanation
#acceder a une ligne particuliere
compteur.loc[100035409]
Explanation: Dans cet exemple, en chargant la colonne 'ID' en index, cela permet de faciliter l'accès aux données selon le numéro du ID.
End of explanation
#types de donnees original de chaque colonne
compteur.dtypes
#charger la colonne Ancien_ID en string (object)
dtypes = {"Ancien_ID":"str"}
nouveauCompteur = pd.read_csv(compteurFichier, sep=',', dtype=dtypes)
nouveauCompteur.dtypes
Explanation: 2.3 Charger une colonne dans un type particulier
End of explanation
fichierNoHead = './donnees/localisation_des_compteurs_velo_noheader.csv'
noHead = pd.read_csv(fichierNoHead, sep=';', header=None)
noHead.head()
Explanation: 3. Charger un fichier sans header
End of explanation
#avec names
noHead = pd.read_csv(fichierNoHead, sep=';', header=None, names = ['ID', 'Ancien ID', 'Nom', 'Statut', 'Latitude', 'Longitude', 'Annee implantee'])
noHead.head()
# avec .columns
noHead.columns = ['A', 'B', 'C', 'D', 'E', 'F', 'G']
noHead.head()
# avec .rename()
nom = pd.DataFrame({"ID": [100041114, 100002880, 100003032], "Ancien_ID": ["NaN", 10.0, 3.0], "Nom": ["Eco-Display Parc Stanley", "Pont Jacques-Cartier", "Berri"]})
# Ancien_ID à Ancien ID
nom.rename(columns={"Ancien_ID": "Ancien ID"})
nom[:3].rename(index={0: "Premier", 1: "Deuxieme", 2: "Troisieme"})
nom[:3].rename(str.lower, axis='columns')
nom[:3].rename({0: 1, 1: 2, 2: 3}, axis='index')
Explanation: 3.1 Fournir un header
Avec names
Avec .columns
Avec .rename()
End of explanation
# convertir la colonne Annee_implante de float64 a int32
compteur = compteur.fillna(0) #remplacer les NaN en 0
compteur = compteur.astype({"Annee_implante": int})
compteur = compteur.astype({"Ancien_ID": int})
compteur.head()
Explanation: 4. Convertir des data types
Un type de donnée est essentiellement une construction interne qu'un langage de programmation utilise pour comprendre comment stocker et manipuler des données.
Les types de données de pandas sont:
* object
* int64
* float64: 
* bool
* datetime64
* timedelta[ns]
* category
4.1 Convertir avec astype()
End of explanation
#convertir en numerique
serie = pd.Series(['1.0', '2', -3])
pd.to_numeric(serie)
#convertir en datetime
date = pd.DataFrame({'day': [20, 21], 'month': [6, 7], 'year': [2019, 2020]})
pd.to_datetime(date)
Explanation: 4.2 Convertir avec les fonctions de pandas
End of explanation
#annee implantee de chaque compteur selon le ID
compteur['Annee_implante']
compteur.Annee_implante
Explanation: 5. Sélectionner des données
5.1 Adresser une colonne avec une chaîne de caractère
Avec les crochets []
Avec le point .
End of explanation
#selectionner les donnees apres 2010
compteur[compteur.Annee_implante>=2010]
# plusieurs conditions
critere1 = compteur['Ancien_ID'] > 0
critere2 = compteur['Annee_implante'] > 2010
compteur['Ancien_ID']>0
compteur[critere1].dtypes
tout_critere = critere1 & critere2
compteur[tout_critere]
# condition avec "et" (&)
compteur[(compteur['Statut']=='Actif') & (compteur['Annee_implante']==2019)]
#retourne les années implantées > 2015 ou (|) tout les ancien ID > 0
compteur[(compteur['Annee_implante'] > 2015) | (compteur['Ancien_ID'] > 0)].head()
Explanation: 5.2 Sélectionner une donnée selon un critère
End of explanation
compteur[:3]
compteur[5::-1]
Explanation: 6. Utiliser l'index
End of explanation
cars.head()
# moyenne
cars['Weight'].mean()
# mediane
cars[['Drive_Ratio', 'Horsepower']].median()
Explanation: 7. Charger les statistiques
End of explanation
# quantile
cars['Weight'].quantile()
# trouver les quantiles sur l'axe d'index
cars.quantile([.1, .25, .5, .75], axis=0)
# std
cars['Horsepower'].std()
# describe
cars[['Drive_Ratio', 'Horsepower', 'Displacement', 'Cylinders']].describe()
cars[['Country']].describe()
Explanation: La fonction Pandas dataframe.quantile() renvoie des valeurs au quantile donné sur l'axe demandé.
DataFrame.quantile(q=0.5, axis=0, numeric_only=True, interpolation=’linear’)
End of explanation
# aggregation
cars.agg({'MPG': ['min', 'max', 'median', 'skew'], 'Weight': ['min', 'max', 'median', 'mean']})
# groupby
cars[['Country', 'MPG']].groupby('Country').mean()
groupe = cars.groupby('Car')
groupe.aggregate(np.sum)
groupe = cars.groupby('Country')
groupe['Weight'].agg([np.max, np.min, np.mean, np.sum, np.std])
Explanation: 8. Groupby
La fonction Pandas dataframe.groupby() est utilisée pour diviser les données en groupes en fonction de certains critères. Les objets pandas peuvent être divisés sur n'importe quels axes. La définition abstraite du regroupement est de fournir un "mapping" des étiquettes aux noms de groupe.
End of explanation
data = pd.DataFrame({'Veh leger': [1, 2], 'Veh lourd': [5, 10], 'TC': [8, 10], 'Pietons': [2, 3]})
data.to_csv('fichierDonnees1.csv', index=False, sep='\t')
Explanation: 9. Sauvegarder des données en CSV
End of explanation
import matplotlib.pyplot as plt
#creation d'un dataframe
df = pd.DataFrame({
    'Heures': ['8:00AM', '9:00AM', '10:00AM', '11:00AM', '12:00PM'],
    'Veh lourd': [28, 98, 100, 49, 58],
    'Veh leger': [2, 8, 45, 30, 33],
    'Pietons': [3, 5, 9, 11, 21]
})
#nuage de point 'scatter'
df.plot(kind='scatter', x='Veh lourd', y='Veh leger')
ax = plt.gca() 
df.plot(kind='line', x='Heures', y='Veh leger', ax= ax)
df.plot(kind='line', x='Heures', y='Veh lourd', ax= ax)
df.plot(kind='line', x='Heures', y='Pietons', ax= ax)
plt.show()
#diagramme a bar
df.plot(kind='bar', x='Heures', y='Pietons')
#diagramme a bar avec groupby
cars.groupby('Country')['Weight'].nunique().plot(kind='bar')
plt.show()
Explanation: Créer des graphiques avec matplotlib
matplotlib est une bibliothèque qui sert à tracer à visualiser des données sous formes de graphiques. Par exemple, il est possible de créer des graphiques avec les dataframes de pandas.
Les dataframes en Python sont très similaires à ceux dans R: ils sont fournis avec la bibliothèque pandas et ils sont définis comme des structures de données étiquetées bidimensionnelles avec des colonnes de types différents.
End of explanation
<END_TASK>