pandas
¶Pandas est une bibliothèque de données.
Series
),DataFrame
),matplotlib
)import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
Des tableaux homogènes, basés sur les arrays numpy.
s = pd.Series(range(10))
s
10*s
s * s
Méthode .plot()
, appelle matplotlib
# toujours cette ligne dans IPython pour afficher les graphiques
%matplotlib inline
x = s * s
x.plot()
L'abscisse est appelée index dans le jargon de pandas.
Elle peut contenir tout type de données, mais ses valeurs doivent être uniques.
t = pd.Series([1,2,3], ['a', 'b', 'c'])
t
t.plot()
Les Series
se comportent comme des tableaux associatifs
t['b']
Support pour les dates
pd.Series(range(10,0,-1), index=pd.date_range('2015-3-23', periods=10)).plot()
d = pd.DataFrame({
'Pression' : range(10, 22),
'Temperature' : np.random.randn(12)
})
d
d.plot()
Les colonnes sont indexables
d['Pression']
d['Temperature'].plot()
Les lignes sont indexables
d[2:7]
Ordonner
d.sort(columns="Temperature")
Statistiques
d.max()
d.describe()
Les tableaux sont modifiables
d['Pression'] = np.random.randn(12)
d
d['Volume'] = range(12,0,-1)
d
Transposée
d.T
Sélectionner des colonnes
d[['Pression', 'Volume']]
Les tableaux aussi s'additionnent composante par composante
d+d
a = pd.DataFrame({
'qui' : ['Jean', 'Garfield', 'Milou', 'Bob'],
'espece' : ['homme', 'chat', 'chien', 'chien']
})
a
a[a.espece == 'chien']
a[a.espece.isin(['homme', 'chat'])]
Une jointure est la fusion de deux tableaux le long d'une colonne
b = pd.DataFrame({
'espece' : ['chien', 'chat', 'homme', 'homme', 'homme'],
'sons' : ['abboie', 'miaule', 'parle', 'crie', 'hurle']
})
b
a.merge(b)
import urllib2, json
prenoms = urllib2.urlopen('http://opendata.paris.fr/api/records/1.0/download?dataset=liste_des_prenoms_2004_a_2012&format=json')
donnees_brutes = json.load(prenoms)
donnees_brutes[0]
p = pd.DataFrame([d['fields'] for d in donnees_brutes])
p
p.groupby(p.annee).max()
x = p.groupby(p.annee).sum()
x
x['nombre'].plot()
p.groupby(['annee', 'sexe']).sum()
p.pivot_table(values='nombre', columns='annee', index='prenoms').sort(2014, ascending=False)