Dans cette présentation, nous utiliserons notre jeu de données sur les courses hippiques.
#Import de nos librairies
import pandas as pd
import matplotlib.pyplot as plt
# Chargement de notre jeu de données
data = pd.read_csv('../exportfeature.csv',parse_dates=['date'],infer_datetime_format=True,dayfirst=True,sep=";",encoding='ANSI')
data.head()

# regardons les valeurs de la variable Hippodrome
data['Hippodrome'].unique()
On a la liste de tous les hippodromes présents dans notre jeu de test
array(['Vincennes', 'Wolvega', 'Argentan', 'Toulouse', 'Cagnes-sur-Mer',
'Mons', 'Cagnes', 'Cordemais', 'Marseille', 'Geelong',
'Marseille-Vivaux', 'Gelsenkirchen', 'Son Pardo Majorque',
'Nantes', 'Lyon', 'Lyon-La Soie', 'Son Pardo', 'Agen',
'Vienne Krieau', 'Saint', 'Saint-Galmier', 'Bordeaux',
'Bordeaux Le Bouscat', 'Mauquenchy', 'Châteaubriant', 'Kuurne',
'Angers', 'Grenade-sur-Garonne', 'Graignes', 'Laval', 'Vire',
'Enghien', 'Le Croisé-Laroche', 'Berlin-Mariendorf', 'Avenches',
'Le Croisé', 'Pontchâteau', 'Chartres', 'Caen', 'Amiens',
'Munich-Daglfing', 'Machecoul', 'Lyon-Parilly', 'Lisieux',
'Hyères', 'Fougères', 'Reims', 'Castillonnès', 'Cherbourg',
'Marseille-Borély', 'Maure', 'Maure-de-Bretagne',
'Ebreichsdorf (Magna Racino)', 'La Capelle', 'Beaumont', 'Tours',
'Beaumont-de-Lomagne', 'Tours-Chambray', 'Nort-sur-Erdre',
'Le Mans', 'Tongres', 'Chatillon', 'Strasbourg',
'Chatillon-sur-Chalaronne', 'Challans', 'Meslay',
'Meslay-du-Maine', 'Cavaillon', 'Saint-Malo', 'Rambouillet',
'Oraison', 'Aby', 'Alençon', 'Cholet', 'Montluçon', 'Nîmes',
'Vitré', 'Avignon', 'Charlottenlund', 'Paray-le-Monial',
'Montauban', 'Vichy', 'Laon', 'Villeneuve-sur-Lot', 'Solvalla',
'Vannes', 'Nancy', 'La Roche', 'La Roche-Posay', 'Frauenfeld',
'Lignières', 'Saint-Brieuc', 'Chatelaillon',
'Chatelaillon-La Rochelle', 'Feurs', 'Ostersund', 'Erbray',
'Marsa', 'Bjerke', 'Kouvola', 'Boden', 'Arras', 'Segré',
'Duindigt', 'La Gacilly', 'Agon-Coutainville', 'Sablé-sur-Sarthe',
'Cabourg', 'Pornichet', 'Biarritz', 'Jarlsberg', 'Eauze', 'Arjang',
'Royan-la Palmyre', 'Mikkeli', 'Clairefontaine',
'Les Sables-d'Olonne', 'Bernay', 'L'Isle-sur-La Sorgue',
'Jägersro', 'Le Touquet', 'Aix-les-Bains', 'Saint-Jean-de-Monts',
'Carpentras', 'Bréhal', 'Vittel', 'Auch', 'Dieppe',
'Langon-Libourne', 'Villeréal', 'Zonza', 'Le Mont-Saint-Michel',
'Craon', 'Montier-en-Der', 'Divonne-les-Bains', 'Bergsaker',
'Carentan', 'Waregem', 'Ajaccio', 'Baden', 'Ecommoy', 'Angoulême',
'Salon-de-Provence', 'Castera-Verduzan', 'Eskilstuna', 'Ballarat',
'Melton', 'Loudéac', 'Vermo', 'Hambourg Bahrenfeld', 'Niort',
'Dundalk', 'Saint-Omer', 'Montluçon-Néris-les-Bains', 'Straubing',
'Ostende', 'Dielsdorf', 'Landivisiau', 'Prunelli-di-Fiumorbo',
'Dinslaken', 'Yonkers-New York', 'Kilmore', 'Saint-Moritz',
'Hambourg Horn', '(Q+ du mardi 25', 'Moenchengladbach', '<br',
'lundi 02', '(R1C5) lundi 14', 'Singapour', 'Farjestad',
'Halmstad', 'Axevalla', 'Gavle', 'Hagmyren', 'Mantorp', 'Orebro',
'Bollnas', 'Romme', 'Umaker', 'Dannero', 'Rattvik', 'Vaggeryd',
'Aalborg', 'Leangen', 'Biri', 'Skive', 'Bergen', 'Momarken',
'Amal', 'Forus', 'Odense', 'Harstad', 'Visby', 'Skelleftea',
'Kalmar', 'Meadowlands', '(Gr.II) jeudi 12', '(R1C1) Vendredi 04'],
dtype=object)
# On peut créer un graphique avec ces valeurs
fig = data['Hippodrome'].value_counts().plot.bar()
fig.set_title('Hippodrome')
fig.set_ylabel('Fréquence')

Ce n’est pas très parlant comme graphique car il y a beaucoup trop d’hippodromes.
On va créer un nouveau graphique avec les 10 premiers hippodromes.
# Les 10 fréquences les plus élevées
data['Hippodrome'].value_counts().sort_values(ascending=False)[:10].plot(kind='bar')

De suite, c’est beaucoup mieux. On voit que l’hippodrome de Vincenne est sur représenté par rapport aux autres hippodromes. Si à la fin de notre analyse on utilise la variable hippodrome, il faudra garder cela à l’esprit en encodant correctement cette variable.
# On peut afficher les différentes fréquences
data['Hippodrome'].value_counts()
Vincennes 3834
Cagnes-sur-Mer 1110
Enghien 948
Mons 916
Avenches 721
...
Tours 1
Saint-Moritz 1
lundi 02 1
Kilmore 1
Montluçon 1
Name: Hippodrome, Length: 199, dtype: int64
# dans notre jeu de données les variables concernant la musique sont de type catégorielle
# Regardons les valeurs de cette variable
data['M1'].unique()
array(['3a', '1a', 'Da', '8a', '2a', '9a', '4a', '5a', '10a', 'Aa', 'Dm',
'13a', '7a', '6m', '11a', '6a', '2Da', '0a', '1Disqa', '10m', '3m',
'3Da', '14a', '5m', '4Dista', '1m', '1Dista', '2Dm', '4Da', '15a',
'1Da', '10Dista', '3Dista', '5Da', '4m', '6Da', '12a', '0m', '2m',
'7Da', '8m', '2Dista', 'Rpa', '9m', '7m', '4Disqa', 'Dista',
'7Dista', '4Distm', '2Dpga', '6Dista', '5Dista', '1Dpga', '1Dm',
'Am', 'Ta', '16a', '17a', '8Dista', '2Disqa', 'Dpga', '12m', '3Dm',
'11m', '3Dpga', '9Da', '8Dm'], dtype=object)
On peut se demander quelles sont les valeurs les plus représentées. On va afficher un graphiques avec les 10 valeurs les plus communes de cette variable M1
# Les 10 fréquence les plus élevées
data['M1'].value_counts().sort_values(ascending=False)[:10].plot(kind='bar')

Enfin, regardons une variable qui est numérique. La variable id.
Mais ses chiffres n’ont pas de réelle signification. Leurs valeurs sont plus des « étiquettes » que des chiffres réels. Chaque identifiant représente un cheval. Ce numéro est attribué pour identifier le cheval si nécessaire, tout en préservant la confidentialité et en assurant la protection des données. Quoique je ne sais pas si les chevaux rentre dans le cadre de la RGPD ;=)
data['id'].head()
0 56005
1 98833
2 98834
3 98835
4 98836
Name: id, dtype: int64
Il peut être interessant de voir combien il y a de chevaux uniques.
len(data['id'].unique())
20504 Chevaux uniques

Je télécharge mon guide gratuit
Thank you!
You have successfully joined our subscriber list.
Vous recevrez votre guide par email sans aucun engagement de votre part.