Contact Us!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In

Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place. Commercial Alternative to JupyterHub.

| Download
Views: 65
Image: ubuntu2004
Kernel: Python 3 (system-wide)

TP3: Listes et lectures de données 📋 📂

I-Listes

Une liste est une structure de données qui contient une série de valeurs. Python autorise la construction de liste contenant des valeurs de types différents (par exemple entier et chaîne de caractères), ce qui leur confère une grande flexibilité. Une liste est déclarée par une série de valeurs (n'oubliez pas les guillemets, simples ou doubles, s'il s'agit de chaînes de caractères) séparées par des virgules, et le tout encadré par des crochets. En voici quelques exemples :

Exercice 1 : Liste de base 😒

Voici un exemple de liste:

liste1 = ['je','tu',33,'nous',4,'ils'] liste1
['je', 'tu', 33, 'nous', 4, 'ils']

Vous pouvez avoir accès aux élément d'une liste avec les même méthode que les np.array :

liste1[0], liste1[2]
('je', 33)

Et vous pouvez afficher la liste classiquement, comme un np.array :

liste1
['je', 'tu', 33, 'nous', 4, 'ils']

Question : En utilisant la fonction index() trouvez la position dans la liste du "nous"

liste1.index('nous')
3

Exercice 2 : Manipulation de listes 😮

Voici une deuxième liste:

liste2 = ['un', 'deux', 'trois', 'quatre', 'cinq', 'six'] liste2
['un', 'deux', 'trois', 'quatre', 'cinq', 'six']

Questions :

  • Affichez le premier élément de la liste liste2,

  • Affichez le dernier élément de la liste liste2 avec deux méthodes,

  • Affichez les deux premiers éléments, Aide

  • Affichez les deux derniers éléments,

liste2[0], liste2[5], liste2[-1], liste2[0:2], liste2[4:6]
('un', 'six', 'six', ['un', 'deux'], ['cinq', 'six'])

Questions :

  • Créez un liste liste2b avec quatre éléments de votre choix

  • Créez une nouvelle liste en concaténant la liste liste2 et liste2b

  • Créez une nouvelle liste en répétant 3 fois la liste2b avec une seule ligne de code

liste2b=['helene','est','une','naine'] listec=[liste2,liste2b] listec
[['un', 'deux', 'trois', 'quatre', 'cinq', 'six'], ['helene', 'est', 'une', 'naine']]
liste3=3*liste2b liste3
['helene', 'est', 'une', 'naine', 'helene', 'est', 'une', 'naine', 'helene', 'est', 'une', 'naine']
import numpy as np

Exercice 3 : Ordre & tri 😓

Questions :

  • Trouvez le maximum de liste3

  • Trouvez le minimum de liste3

  • Trouvez le nombre d'éléments de liste3

  • Ordonnez la liste liste3 dans l'ordre croissant

  • Ordonnez la liste liste3 dans l'ordre décroissant

  • Enlevez l élément 45 de liste3

Aide

liste3 = [1, 17, 85, 4, 2, 8, 75, 45] max(liste3), min(liste3),len(liste3)
(85, 1, 8)
liste3.sort() liste3
[1, 2, 4, 8, 17, 45, 75, 85]
liste3.sort(reverse=True) liste3
[85, 75, 45, 17, 8, 4, 2, 1]
del liste3[2] liste3
[85, 75, 17, 8, 4, 2, 1]

Exercice 4 : Encore un four!😅

Questions :

  • Affichez les éléments de la liste liste4 en partant de la fin

  • Comptez le nombre d'occurence de l'élément np.nan dans la liste liste4 (Aide)

  • Afficher les éléments de la liste à l'aide d'une boucle for

import numpy as np liste4 = [np.nan, 'rien de rien', np.nan, 'Je ne', 'regrette rien', 1] # Allez voir, par curiosité, à quoi sert la commande np.nan? liste4[-1:-7:-1]
[1, 'regrette rien', 'Je ne', nan, 'rien de rien', nan]
liste4.count(np.nan)
2
for i in np.arange(0,len(liste4),1): print(liste4[i])
nan rien de rien nan Je ne regrette rien 1
#ou alors on peut aussi faire for ii in liste4: print(ii)
nan rien de rien nan Je ne regrette rien 1

Nous pouvons afficher chaque élément d'une liste avec une boucle for:

Exercice 5 : Encore un for 😡

En utilisant les boucles for que vous avez vu, ainsi que l'indexation des listes, affichez les éléments de deux listes côte à côte

liste5 = ['Narcisse', 'Jonquille', 'Primevère', 'Tulipe'] liste6 = [2, 3, 5, 7]
for k,i in zip(liste5,liste6) : print(k,i)
Narcisse 2 Jonquille 3 Primevère 5 Tulipe 7
#ou alors for j in np.arange(0,len(liste5),1): print(liste5[j],liste6[j])
Narcisse 2 Jonquille 3 Primevère 5 Tulipe 7

Exercice 6 : Vous êtes des champions de la function append() 💥

Juste pour un petit ajout:

liste7 = [] #Initialise la liste liste7 liste7.append('Youplaboum') #Ajoute un élément à la liste liste7 liste7 #Affiche la liste liste7
['Youplaboum']

Question : En utilisant la fonction append() couplée à une boucle, remplissez une liste avec les éléments de votre choix (vous pouvez aussi demander à l'utilisateur chaque élément)

liste7b=[1,3] liste7b.append('$$') for a in np.arange(0,len(liste7b),1): print(liste7b[a])
Élément

Exercice 7 : np.array([]) level BOSS 👾

Questions :

  • Construisez un array de nombres aléatoires de tailles (10,1) (voir np.random.randn())

  • En utilisant les deux points " : " multipliez les 3 derniers nombres par 3

  • En utilisant le TP précédent (conditions au sein d'un vecteur), mettez à zéros toutes les composantes supérieures à la valeur de votre choix

x=np.random.randn(10,1) x
array([[-0.90240718], [-2.00376435], [-2.47549823], [ 1.16255797], [-0.60908089], [-1.65148861], [ 0.29489513], [-0.43571231], [-0.59154004], [-1.43398657]])
x[7:11]*3
array([[ 3.7114878 ], [-0.55630615], [ 1.73038833]])
for i in x: if i>0: i=0 print(i) else: print(i)
[-0.90240718] [-2.00376435] [-2.47549823] 0 [-0.60908089] [-1.65148861] 0 [-0.43571231] [-0.59154004] [-1.43398657]

Exercice 8: Première lecture d'un fichier de données 👓

Le fichier 'pluvio.csv' contient des données annuelles de pluviométrie sur Triffouillis les oies.

Question : En utilisant la commande np.loadtxt() charger les données de pluviométrie du fichier 'pluvio.csv' dans un array 'data'.

data=np.loadtxt("pluvio.csv",delimiter=',',skiprows=1) data
array([[1950. , 889.43 ], [1951. , 783.55 ], [1952. , 773.3 ], [1953. , 678.843], [1954. , 668.378], [1955. , 768.4 ], [1956. , 526.628], [1957. , 677.722], [1958. , 751.136], [1959. , 481.248], [1960. , 594.146], [1961. , 572.032], [1962. , 545.17 ], [1963. , 585.071], [1964. , 663.469], [1965. , 572.391], [1966. , 648.993], [1967. , 724.98 ], [1968. , 354.177], [1969. , 784.589], [1970. , 399.539], [1971. , 563.44 ], [1972. , 324.672], [1973. , 374.413], [1974. , 487.135], [1975. , 572.659], [1976. , 423.848], [1977. , 354.02 ], [1978. , 539.117], [1979. , 466.177], [1980. , 397.21 ], [1981. , 466.011], [1982. , 430.324], [1983. , 271.473], [1984. , 395. ], [1985. , 450.434], [1986. , 411.182], [1987. , 487.548], [1988. , 567.756], [1989. , 590.97 ], [1990. , 354.768], [1991. , 305.715], [1992. , 356.618], [1993. , 413.27 ], [1994. , 470.671], [1995. , 372.17 ], [1996. , 292.83 ], [1997. , 309.37 ], [1998. , 324.823], [1999. , 501.127], [2000. , 447.53 ]])

Question : Quelle est la taille du fichier de données?

np.shape(data)
(51, 2)

Questions :

  • Sauver la première colonne dans un array 'temps'

  • Sauver la deuxième colonne dans un array 'pluvio'

  • Pour quelle année la pluviomètrie est-elle minimum?

  • Pour quelle année est-elle maximum?

temps=np.loadtxt("pluvio.csv",delimiter=',',skiprows=1,usecols=0) temps #sinon utilisé temps=data[:,0] pour affiher la 1e colonne de data
array([1950., 1951., 1952., 1953., 1954., 1955., 1956., 1957., 1958., 1959., 1960., 1961., 1962., 1963., 1964., 1965., 1966., 1967., 1968., 1969., 1970., 1971., 1972., 1973., 1974., 1975., 1976., 1977., 1978., 1979., 1980., 1981., 1982., 1983., 1984., 1985., 1986., 1987., 1988., 1989., 1990., 1991., 1992., 1993., 1994., 1995., 1996., 1997., 1998., 1999., 2000.])
pluvio=np.loadtxt("pluvio.csv",delimiter=',',skiprows=1,usecols=1) pluvio
array([889.43 , 783.55 , 773.3 , 678.843, 668.378, 768.4 , 526.628, 677.722, 751.136, 481.248, 594.146, 572.032, 545.17 , 585.071, 663.469, 572.391, 648.993, 724.98 , 354.177, 784.589, 399.539, 563.44 , 324.672, 374.413, 487.135, 572.659, 423.848, 354.02 , 539.117, 466.177, 397.21 , 466.011, 430.324, 271.473, 395. , 450.434, 411.182, 487.548, 567.756, 590.97 , 354.768, 305.715, 356.618, 413.27 , 470.671, 372.17 , 292.83 , 309.37 , 324.823, 501.127, 447.53 ])
for i,k in zip(temps,pluvio): if k==min(pluvio): print(i,'pour',min(pluvio)) else: None
1983.0 pour 271.473
for i,k in zip(temps,pluvio): if k==max(pluvio): print(i,'pour',max(pluvio)) else: None
1950.0 pour 889.43

Question : Faire un graphique de la pluviomètrie en fonction du temps. Rajouter des légendes aux axes.

import matplotlib.pyplot as plt plt.rcParams.update({'font.size': 22})# pour les polices de graphiques plt.plot(temps,pluvio,c='purple') plt.xlabel('temps en années') plt.ylabel('pluvio en mm') plt.title('tableau de la pluvio en fonction du temps') plt.grid()
Image in a Jupyter notebook

Question : Faire un histogramme des valeurs de pluviométrie

plt.hist(pluvio,10)
(array([6., 7., 8., 7., 8., 3., 5., 2., 4., 1.]), array([271.473 , 333.2687, 395.0644, 456.8601, 518.6558, 580.4515, 642.2472, 704.0429, 765.8386, 827.6343, 889.43 ]), <BarContainer object of 10 artists>)
Image in a Jupyter notebook

Question : Calculer des statistiques de bases sur la pluviométrie en utilisant np.mean(), np.median() et np.std()

A=np.mean(pluvio) A #moyenn
513.0484901960784
B=np.median(pluvio) B #mediane
487.135
C=np.std(pluvio) C #ecart-type
151.61793753668246

Question : Faire afficher une boite à moustache résumant ces statistiques en utilisant plt.boxplot()

plt.boxplot(pluvio,vert=False,)
{'whiskers': [<matplotlib.lines.Line2D at 0x7fc19529c520>, <matplotlib.lines.Line2D at 0x7fc19529ce80>], 'caps': [<matplotlib.lines.Line2D at 0x7fc19529ca00>, <matplotlib.lines.Line2D at 0x7fc195380280>], 'boxes': [<matplotlib.lines.Line2D at 0x7fc19529c1f0>], 'medians': [<matplotlib.lines.Line2D at 0x7fc195360f10>], 'fliers': [<matplotlib.lines.Line2D at 0x7fc195347340>], 'means': []}
Image in a Jupyter notebook

Question : Pour rigoler, executer les deux cellules suivantes

from IPython.display import Markdown, display def printmd(string): display(Markdown(string))
Nombre=1000 printmd(Nombre*':fish:')

🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟