0% ont trouvé ce document utile (0 vote)
102 vues13 pages

Module 5 Python-Utilisation Pour La Data Science - Week4

Ce document décrit diverses fonctionnalités de Pandas pour le traitement des données. Il présente des fonctions de résumé, de mappage et d'application pour transformer les données. Il montre également comment regrouper, trier et fusionner des données.

Transféré par

syslinux2000
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
102 vues13 pages

Module 5 Python-Utilisation Pour La Data Science - Week4

Ce document décrit diverses fonctionnalités de Pandas pour le traitement des données. Il présente des fonctions de résumé, de mappage et d'application pour transformer les données. Il montre également comment regrouper, trier et fusionner des données.

Transféré par

syslinux2000
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
Vous êtes sur la page 1/ 13

4 Traitement des données avec Pandas

4.1 Summary functions

Toute les méthodes dans cette section sont applicables à la fois pour une série et une dataframe

samples.points.describe()

Output:

count 129971.000000
mean 88.447138
...
75% 91.000000
max 100.000000
Name: points, Length: 8, dtype: float64

Par exemple, pour voir la moyenne des points attribués, nous pouvons utiliser la fonction mean ():

samples.points.mean()

Output:

88.44713820775404

Pour voir une liste de valeurs uniques, nous pouvons utiliser la fonction unique ():

samples.taster_name.unique()

Output:

array(['Kerin O’Keefe', 'Roger Voss', 'Paul Gregutt',


'Alexander Peartree', 'Michael Schachner', 'Anna Lee C. Iijima',
'Virginie Boone', 'Matt Kettmann', nan, 'Sean P. Sullivan',
'Jim Gordon', 'Joe Czerwinski', 'Anne Krebiehl\xa0MW',
'Lauren Buzzeo', 'Mike DeSimone', 'Jeff Jenssen',
'Susan Kostrzewa', 'Carrie Dykes', 'Fiona Adams',
'Christina Pickard'], dtype=object)
Pour voir une liste de valeurs uniques et leur fréquence d'apparition dans l'ensemble de données, nous
pouvons utiliser la méthode value_counts ():

samples.taster_name.value_counts()

Output:

Roger Voss 25514


Michael Schachner 15134
...
Fiona Adams 27
Christina Pickard 6
Name: taster_name, Length: 19, dtype: int64

4.2 Map() et apply()

Map est un terme, emprunté aux mathématiques, pour une fonction qui prend un ensemble de valeurs et
les «mappe» à un autre ensemble de valeurs. En science des données, nous avons souvent besoin de créer
de nouvelles représentations à partir de données existantes ou de transformer des données. Maps sont ce
qui gère ce travail, ce qui les rend extrêmement importantes pour faire votre travail!

Il existe deux façon de mappage que vous utiliserez souvent.

Par exemple, supposons que nous voulions remanier les scores moyens des vins reçus à 0. Nous pouvons le
faire comme suit:

sample_points_mean = samples.points.mean()
samples.points.map(lambda p: p - sample_points_mean)

Output:

0 -1.447138
1 -1.447138
...
129969 1.552862
129970 1.552862
Name: points, Length: 129971, dtype: float64

La fonction que vous transmettez à map () doit attendre une valeur unique de la série et renvoyer une
version transformée de cette valeur. Map () renvoie une nouvelle série dans laquelle toutes les valeurs ont
été transformées par votre fonction.
apply () est la méthode équivalente si nous voulons transformer un DataFrame entier en appelant une
méthode personnalisée sur chaque ligne(avec axis='columns' sinon axis='index' pour transformer chaque
colonne).

sample_points_mean = samples.points.mean()
def remean_points(row):
row.points = row.points - review_points_mean
return row

samples.apply(remean_points, axis='columns')


Notez que map () et apply () renvoient respectivement de nouveaux Series et DataFrames
transformés. Ils ne modifient pas les données d'origine sur lesquelles ils sont appelés

Nous pouvons aussi proposer une solution comme la façon du traitement de matrice dans Numpy :

Avec le built-in opération, nous avons:

sample_points_mean = samples.points.mean()
samples.points - sample_points_mean

Output:
0 -1.447138
1 -1.447138
...
129969 1.552862
129970 1.552862
Name: points, Length: 129971, dtype: float64

Dans ce code, nous effectuons une opération entre plusieurs valeurs sur le côté gauche (tout dans la série)
et une seule valeur sur le côté droit (la valeur moyenne). Pandas regarde cette expression et comprend que
nous devons vouloir soustraire cette valeur moyenne de chaque valeur de l'ensemble de données.

NOUS POUVONS DONC EFFECTUER DES OPERATION ENTRE COLONNES, QUI SONT DES SERIES DE LA
MEME LONGUEUR

samples.price / samples.points

4.3 Grouping & Sorting

4.3.1 grouping &aggregation

Prenons un dataframe qui s'appelle df

df = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar',


'foo', 'bar', 'foo', 'foo'],
'B': ['one', 'one', 'two', 'three',
'two', 'two', 'one', 'three'],
'C': np.random.randn(8),
'D': np.random.randn(8)})

A B C D
0 foo one 1.346061 -1.577585
1 bar one 1.511763 0.396823
2 foo two 1.627081 -0.105381
3 bar three -0.990582 -0.532532
4 foo two -0.441652 1.453749
5 bar two 1.211526 1.208843
6 foo one 0.268520 -0.080952
7 foo three 0.024580 -0.264610

Sur un DataFrame, nous obtenons un objet GroupBy en appelant groupby (). Nous pourrions naturellement
regrouper par les colonnes A ou B, ou les deux. Et si on applique sum() aux résultants GroupBy :
df.groupby('A').sum()

C D
A
bar 1.732707 1.073134
foo 2.824590 -0.574779

df.groupby(['A', 'B']).sum()

C D
A B
bar one 1.511763 0.396823
three -0.990582 -0.532532
two 1.211526 1.208843
foo one 1.614581 -1.658537
three 0.024580 -0.264610
two 1.185429 1.348368

Les fonctions d'agrégation sont celles qui réduisent la dimension des objets renvoyés. Certaines fonctions
d'agrégation courantes sont présentées ci-dessous:
Function Description

mean() Compute mean of groups

sum() Compute sum of group values

size() Compute group sizes

count() Compute count of group

std() Standard deviation of groups

var() Compute variance of groups

sem() Standard error of the mean of groups

describe() Generates descriptive statistics

first() Compute first of group values

last() Compute last of group values

nth() Take nth value, or a subset if n is a list

min() Compute min of group values

max() Compute max of group values

4.3.2 sorting

dates = pd.date_range('20130101', periods=6)


df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list('ABCD'))

output:

A B C D
2013-01-01 0.469112 -0.282863 -1.509059 -1.135632
2013-01-02 1.212112 -0.173215 0.119209 -1.044236
2013-01-03 -0.861849 -2.104569 -0.494929 1.071804
2013-01-04 0.721555 -0.706771 -1.039575 0.271860
2013-01-05 -0.424972 0.567020 0.276232 -1.087401
2013-01-06 -0.673690 0.113648 -1.478427 0.524988

Sorting by an axis:

#Sorting par colonne avec axis=1, dans l'ordre décroissant


df.sort_index(axis=1, ascending=False)
D C B A
2013-01-01 -1.135632 -1.509059 -0.282863 0.469112
2013-01-02 -1.044236 0.119209 -0.173215 1.212112
2013-01-03 1.071804 -0.494929 -2.104569 -0.861849
2013-01-04 0.271860 -1.039575 -0.706771 0.721555
2013-01-05 -1.087401 0.276232 0.567020 -0.424972
2013-01-06 0.524988 -1.478427 0.113648 -0.673690

Sorting by values:

#sorting par la valeur croissante de B


df.sort_values(by='B')

A B C D
2013-01-03 -0.861849 -2.104569 -0.494929 1.071804
2013-01-04 0.721555 -0.706771 -1.039575 0.271860
2013-01-01 0.469112 -0.282863 -1.509059 -1.135632
2013-01-02 1.212112 -0.173215 0.119209 -1.044236
2013-01-06 -0.673690 0.113648 -1.478427 0.524988
2013-01-05 -0.424972 0.567020 0.276232 -1.087401

5 Merge

5.1 Concat

pandas fournit diverses fonctionnalités pour combiner facilement des objets Series et DataFrame avec
divers types de logique d'ensemble pour les index et la fonctionnalité d'algèbre relationnelle dans le cas
d'opérations de type jointure / fusion.

df = pd.DataFrame(np.random.randn(10, 4))
df

0 1 2 3
0 -0.548702 1.467327 -1.015962 -0.483075
1 1.637550 -1.217659 -0.291519 -1.745505
2 -0.263952 0.991460 -0.919069 0.266046
3 -0.709661 1.669052 1.037882 -1.705775
4 -0.919854 -0.042379 1.247642 -0.009920
5 0.290213 0.495767 0.362949 1.548106
6 -1.131345 -0.089329 0.337863 -0.945867
7 -0.932132 1.956030 0.017587 -0.016692
8 -0.575247 0.254161 -1.143704 0.215897
9 1.193555 -0.077118 -0.408530 -0.862495

# break it into pieces


pieces = [df[:3], df[3:7], df[7:]]
pd.concat(pieces)

0 1 2 3
0 -0.548702 1.467327 -1.015962 -0.483075
1 1.637550 -1.217659 -0.291519 -1.745505
2 -0.263952 0.991460 -0.919069 0.266046
3 -0.709661 1.669052 1.037882 -1.705775
4 -0.919854 -0.042379 1.247642 -0.009920
5 0.290213 0.495767 0.362949 1.548106
6 -1.131345 -0.089329 0.337863 -0.945867
7 -0.932132 1.956030 0.017587 -0.016692
8 -0.575247 0.254161 -1.143704 0.215897
9 1.193555 -0.077118 -0.408530 -0.862495

5.2 Join

SQL style merges

left = pd.DataFrame({'key': ['foo', 'foo'], 'lval': [1, 2]})


right = pd.DataFrame({'key': ['foo', 'foo'], 'rval': [4, 5]})

left

key lval
0 foo 1
1 foo 2

right

key rval
0 foo 4
1 foo 5

pd.merge(left, right, on='key')

key lval rval


0 foo 1 4
1 foo 1 5
2 foo 2 4
3 foo 2 5

6 Plotting
6.1 Basic plottin

Nous utilisons la convention standard pour référencer l'API matplotlib:

import matplotlib.pyplot as plt

ts = pd.Series(np.random.randn(1000),
index=pd.date_range('1/1/2000', periods=1000))

ts = ts.cumsum() #somme cumulative

ts.plot()

6.2 Bar plots

df2 = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd'])

df2.plot.bar()
df2.plot.bar(stacked=True)
6.3 Scatter plot

Le nuage de points nécessite des colonnes numériques pour les axes x et y. Celles-ci peuvent être spécifiées
par les mots clés «x» et «y».

df = pd.DataFrame(np.random.rand(50, 4), columns=['a', 'b', 'c', 'd'])

df.plot.scatter(x='a', y='b');

7 CSV & Excel

Ecriture dans un fichier csv

df.to_csv('foo.csv')

Lecture à partir d'un fichier csv.

pd.read_csv('foo.csv')

Unnamed: 0 A B C D
0 2000-01-01 0.350262 0.843315 1.798556 0.782234
1 2000-01-02 -0.586873 0.034907 1.923792 -0.562651
2 2000-01-03 -1.245477 -0.963406 2.269575 -1.612566
3 2000-01-04 -0.252830 -0.498066 3.176886 -1.275581
4 2000-01-05 -1.044057 0.118042 2.768571 0.386039
.. ... ... ... ... ...
995 2002-09-22 -48.017654 31.474551 69.146374 -47.541670
996 2002-09-23 -47.207912 32.627390 68.505254 -48.828331
997 2002-09-24 -48.907133 31.990402 67.310924 -49.391051
998 2002-09-25 -50.146062 33.716770 67.717434 -49.037577
999 2002-09-26 -49.724318 33.479952 68.108014 -48.822030

[1000 rows x 5 columns]

Ecrire dans un fichier Excel.

df.to_excel('foo.xlsx', sheet_name='Sheet1')

Reading from an excel file.

pd.read_excel('foo.xlsx', 'Sheet1', index_col=None, na_values=['NA'])

Unnamed: 0 A B C D
0 2000-01-01 0.350262 0.843315 1.798556 0.782234
1 2000-01-02 -0.586873 0.034907 1.923792 -0.562651
2 2000-01-03 -1.245477 -0.963406 2.269575 -1.612566
3 2000-01-04 -0.252830 -0.498066 3.176886 -1.275581
4 2000-01-05 -1.044057 0.118042 2.768571 0.386039
.. ... ... ... ... ...
995 2002-09-22 -48.017654 31.474551 69.146374 -47.541670
996 2002-09-23 -47.207912 32.627390 68.505254 -48.828331
997 2002-09-24 -48.907133 31.990402 67.310924 -49.391051
998 2002-09-25 -50.146062 33.716770 67.717434 -49.037577
999 2002-09-26 -49.724318 33.479952 68.108014 -48.822030

[1000 rows x 5 columns]

Vous aimerez peut-être aussi