Aller au contenu

đź“‘ Les fichiers csv et json

Fichiers de données

Le site data.gouv propose de nombreux jeux de données en libre accès. Ces données sont souvent proposées aux formats :

  • csv pour Comma Separated Values,
  • json pour JavaScript Object Notation.

Ces deux formats de fichiers permettent de présenter des données textuelles. Voici par exemple les mêmes informations présentées dans chacun des formats :

  • au format csv (le fichier s'appelle amis.csv):

    📑 Données CSV
    nom,âge,ville,passion
    Jean,26,Paris,VTT
    Marion,28,Lyon,badminton
    
  • au format json (le fichier s'appelle amis.json):

    { "amis": [
        {"nom": "Jean","âge": 26,"ville": "Paris","passion": "VTT"},
        {"nom": "Marion","âge": 28,"ville": "Lyon","passion": "badminton"},
            ]
    }
    
Autres formats...

Les fichiers csv et json ne sont pas les seuls formats de fichiers de données. Par exemple on trouve souvent les fichiers xml.

📑 Données XML
<?xml version="1.0" encoding="UTF-8"?>
<amis>
    <personne>
        <nom>Jean</nom>
        <âge>26</âge>
        <ville>Paris</ville>
        <passion>VTT</passion>
    </personne>
    <personne>
        <nom>Marion</nom>
        <âge>28</âge>
        <ville>Lyon</ville>
        <passion>badminton</passion>
    </personne>
</amis>
Remarques

Nous travaillerons désormais avec les fichiers csv. L'exemple précédent permet de remarquer plusieurs choses :

  • un fichier csv contient des donnĂ©es textuelles,

  • les donnĂ©es sont organisĂ©es en lignes,

  • la première ligne regroupe le nom des descripteurs (il y en a quatre ici : nom, âge, ville et passion),

  • les autres lignes contiennent des enregistrements (il y en a deux ici : Jean,26,Paris,VTT et Marion,28,Lyon,badminton),

  • au sein de chaque ligne, les valeurs sont dĂ©limitĂ©es par un sĂ©parateur (ici le caractère ","),

  • les donnĂ©es peuvent ĂŞtre de types diffĂ©rents. Ici le nom, la ville et la passion sont des chaĂ®nes de caractères, l'âge un entier.

Attention

  • il arrive que la première ligne ne contienne pas les entĂŞtes. Ils peuvent ĂŞtre listĂ©s dans un fichier annexe ou... perdus !

  • on trouve parfois une seconde ligne contenant les types des donnĂ©es (entier, texte...).

  • le sĂ©parateur n'est pas toujours une virgule. Il est courant que l'on trouve des ";" dans les fichiers français car la virgule est utilisĂ©e comme sĂ©parateur dĂ©cimal.

  • Les fichiers csv et json Ă©tant de simples fichiers « texte », il est donc possible de les crĂ©er avec un quelconque Ă©diteur de texte.

Création d'un fichier csv

Activité 1 - Premiers contacts

On considère les deux fichiers csv ci-dessous (on n'en donne que les trois première lignes) :

📑 Données CSV
geo_point_2d;nb_equipement;commune;cp
(47.3392380011,0.7162219998);1;Chambray-lès-Tours;37170
(47.3300100011,0.6120900019);5;Ballan-Miré;37510
📑 Données CSV
session,academie,sexe,diplome_specialite,nombre_d_inscrits,nombre_d_admis_totaux
INT,TEXT,TEXT,TEXT,INT,INT
2021,AIX-MARSEILLE,FILLES,BAC PRO AG 21302 GEST MILIEUX NATURELS FAUNE,16,13

Cochez la ou les bonnes réponses.

  • Le sĂ©parateur du fichier petanque.csv est la virgule
  • Le fichier petanque.csv compte quatre descripteurs
  • Le sĂ©parateur du fichier bac.csv est la virgule
  • INT est un descripteur du fichier bac.csv
  • ❌ Le sĂ©parateur du fichier petanque.csv est le point-virgule
  • âś… Le fichier petanque.csv compte bien quatre descripteurs
  • âś… Le sĂ©parateur du fichier bac.csv est bien la virgule
  • ❌ INT est un type de donnĂ©es
Activité 2 - Problème

On propose ci-dessous un extrait d'un fichier csv. Identifiez les trois problèmes présents :

📑 Données CSV
nom,prenom,identifiant;mdp,derniere_connexion
Clark,Sarah,sclark,k012345,20230105,
Mapple,Marc,marc.mapple,20221231
Solution
  1. Le séparateur n'est pas constant : il y a un point-virgule dans la première ligne
  2. Il y a une virgule en trop en fin de deuxième ligne
  3. Il manque un champs sur la troisième ligne

On pourrait aussi noter le gros problème qui consiste à stocker les mots de passe des utilisateurs en clair dans un fichier !

Activité 3 - « Créer » un fichier csv

On souhaite « créer » un fichier csv recensant les jours fériés en France durant l'année 2023.

Afin de rester dans l'interface proposée par ce site nous travaillerons dans un éditeur Python.

Pour de vrai !

Au lieu de travailler dans l'éditeur Python proposé ci-dessous, vous pouvez utiliser votre propre éditeur et réellement créer le fichier csv en l'enregistrant avec l'extension .csv. Vous pourrez ensuite le lire comme vu plus haut. Remarquez qu'un "copié/collé" de cet écran peut vous faire gagner du temps. Il faudra juste le transformer un peu ...

Ces jours sont présentés dans le tableau ci-dessous :

motif jour numero mois
Jour de l'an dimanche 1 janvier
Lundi de Pâques lundi 10 avril
FĂŞte du travail lundi 1 mai
Victoire 1945 lundi 8 mai
Ascension jeudi 18 mai
FĂŞte Nationale vendredi 14 juillet
Assomption mardi 15 août
Toussaint mercredi 1 novembre
Armistice 1918 samedi 11 novembre
Noël lundi 25 décembre

Compléter la chaîne de caractère contenu ci-dessous en saisissant le contenu du fichier csv :

  • on saisira les descripteurs sur la première ligne,
  • on utilisera la virgule comme sĂ©parateur.

Vous pouvez saisir les descripteurs dans l'ordre que vous souhaitez, il faut par contre faire en sorte de saisir les valeurs dans le mĂŞme ordre !

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 5/5

.128013tĂ»ClJ12/vygj.Ts9huqiV6PĂ©Ndm0rA=7fĂ«bI ĂŞe:,8Rnp5aSo3LFk_4;âc050A0N0b0V0u0e0p0L0*0e0V0p0p0F010b0u0T010406050p0s0B0B0V0D0k040W0X0e0s0~0X0S0L020V0B0T0(0L0R0N180D0t0s0N0p050i1517191b130T04051G1z1J0i1G130A0u0j0?0^0`0|0r0u0l0r0e1X0r0b11050.0J0e0N1S0_0{011W1Y1!1Y0b1*1,1(0b0D1H0b0r0?1e0p0T0V0S0|0h011.1U010H0:0N0S1m0N1(24262b1:2e1,2h0B2j040a0L0x0D0X0T0X0p0u1h1j0,220D0D0N0*2E1z2l0S1H0i202Q1}1 1~1)0A2n0|1!0S2g2B1(1P1R0@1/2!0u2$0S0X2*1(0T2J1H2O2Q2{14251j2,2c2;0D180e110L0g2N2 122~2m311:3335370h3a263c2O2Z013h0V36040L0Y3l2P133o3f0|3r3t0L0%3x3n2 3p3D370U3H3z3J3B3q0X343s370w3O3d301T3g3T3i3u0G3Y3A3#3C3%3V3u0Q3+3Q3-3S3U3E0q3?3e3^3L040g0C3}3!2-3_3(0g391A3b3P3~46400g3k4b3m4d45323/3t0g3w4j2P1K2_1z2*2T0A1 2Y3R0*2=2t0+1Q1H2^0N2`3b3H054D0,4L4e32114D0S0b2g0s3H0L3Z3p0X110F4!4$3R0p2904021v0X0b0(4;0s4?4^[email protected]?0u0H0P0m0X0s0D0P0S160N2y0P530u1y4s3I4S1:51040f590D0L2G0e02030Y0q0(260P1P180S0*0r0N0P0g57260j0u5f4 4-4/0Z0s0S1P5u1-0x0)1v1x0P1f5W0u5K0C0P0V0j0D0:5R3^5p0!0M4X5u0s0L1}5/0/0e5(5V1P5K5h0/5?465p0v0u2L0X0u2J380q0%0U635*0P0Q670u692c5p0E0p0*2g2C1i570N0s650g6p186r5l4l504/5_5{0z0V2E3s5J0j2g0A2J6E0%570s0:1,0b6s5o4/6v0p0X1n2E670D6E6l0V0X0c6(6J4,5@4/0o590`0/4W5h5f0*6X5+5L2;6U0B0J2J6)0|6u345j0~6x6i6F0P0p2i6E7a0X7c7e0N7g015p0z0X0I625)650h6l0A0y6x7d7f6|3,6a4/4_4{7S4@7U0(3Y0i4P4K4u7#0i4x1z0b4z7*2W2R0V1+7%4x1F4R4m1:2J0B0$0H0V0#0N0$0r0Y111r1t5$0=0O4N1M3c1G0d6.2s0L2/1P1v0y5u260=0e000y2;5G0y0P0L8q3T6W1-0,0=8C770 4X5a0=0S000V0L258D000u1n3T0.5G0N0n0L0K0e0L7~1g0L2C1n1,2s4W0L5`6h4D0r0y2J8-8a8c1O1Q3p1=1Z1#1%4I4v2}5l4O4E7^3K4U1i4X5d4+7P2c4(044*5l4#9f6*117W9p4}7X7O3@7Q115d2s5g5i0p5h5456585a7y5p5L0m5N5P5b5r5a5Y8x5x5z5B0S5D8R265H7x9t5n7h4/425.5:0:0P5U5*9Q5!886m1P9H9(6q0P6N8B5}5 0j619?6I2{6K5S116G0/0P6c6e6g1-0g6j6l7Fa34c6}9v41a85+6v6x0S6z9V0m6C9@9#7_9%110g6Z0m6#0e6%9{5`1-6P6R1,0P6U5W789^aB6@6_0b0P6,6.0T6:1taxa4al6t9_7b1s7w0P700s722/aW9y770Na%ak9maA417t7v2JaX7j0p7lae0q7o7q2sa{4ka)9n047H5D7Ka-b27B7Da2aS4:9r9q4`4~6|7Z977$2Q7?4w0-610p04.
Activité 4 - « Créer » un fichier json

On souhaite « créer » un fichier json recensant les jours fériés en France durant l'année 2023. Ces jours sont présentés dans le tableau ci-dessous :

motif jour numero mois
Jour de l'an dimanche 1 janvier
Lundi de Pâques lundi 10 avril
FĂŞte du travail lundi 1 mai
Victoire 1945 lundi 8 mai
Ascension jeudi 18 mai
FĂŞte Nationale vendredi 14 juillet
Assomption mardi 15 août
Toussaint mercredi 1 novembre
Armistice 1918 samedi 11 novembre
Noël lundi 25 décembre

Compléter le dictionnaire contenu ci-dessous en saisissant le contenu du fichier json.

Ce dictionnaire contient une unique clé jours_fériés pour laquelle la valeur associée est une liste.

Chacun des éléments de cette liste est un dictionnaire contenant les couples descripteur: valeur.

L'ordre est important !

Les données étant saisies dans une liste, leur ordre importe.

Vous devez donc saisir les lignes dans l'ordre dans lequel elles apparaissent dans le tableau ci-dessus.

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 5/5

.128013tĂ»lJ1{2/vygj]Ts9huq}iV6PĂ©[Ndm0rA=7fĂ«b ĂŞe:,8np5aSo3LF_4;âc050C0O0b0V0v0d0p0M0)0d0V0p0p0H010b0v0T010406050p0s0D0D0V0F0k040W0X0d0s0}0X0S050i1416181a120T04051q1j1t0i1q120C0v0j0=0@0_0{0r0v0l0r0d1H0r0b10050-0L0d0O1C0^0`011G1I1K1I0b1Q1S1O0b0F1r0b0r0=1d0p0T0V0S0{0h011U1E010J0/0O0S0V0D0O1O1;1?1{1W1~1S2123100a0M0y0F0X0T0X0p0v1g0S0M0+1/0F0F0O0)2o1j260S1r0i1-2B1*1,1+1P0C280{1K0S202l1O1z1B0?1V2L0v2N0S0X2R1O0T2u1r2z2B2)131=2p2T1|2Y0F170d100M0f2y2-112,272/1W2;2?2^0h2{1?2}2z2K01320V2@040M0Y362A1239300{3c3e0M0$3i382-3a3o2^0U3s3k3u3m3b0X2=3d2^0x3z2~2.1D313E333f0I3J3l3M3n3O3G3f0R3S3B3U3D3F3p0q3!2 3$3w040f0E3+3L2U3%3P0f2`1k2|3A3,[email protected]|373~3?2:3W3e0f3h443j3K3v49100f3r4d2B2$0O2B2R2E0C1,2J3C0)2Z241r4q1s2%3K2*2|054w0+2(3#40104w0S0b200s3s0M4f3C0X100H4S4U3$0 040g3z0M4*4T3T3@0p1_04020t0s0X0b0%0m0X0s0F0p0#0J0z0F0v0z0p4=4@4_3s4!3@4$0P4Z4-1|4$0A4)4+5l5b5h104(4l5n1W4/10574^0%0D4^0v0J5w595r5g1W5d5f4K1|5u4;4?5x0e4|0F2q1T0d02030Y0q0%1?5D0%5a5G0{4$0Q5J3 5L4:5$4{4}5$5(5K5H105e4l4,5_0{5M5$1z170S0)0r0O5@5F5 015+5-475t5:5O4_0S150O2i692+5)6c5{6e3a616i0%0f6o4F6q6d5}5s606h585y0X0v566w5^5.5`045|2)5~6O6F5v6w0m1?0j0v6m6z376E6r040u5,4l065l5m6B5p6N6f6V5N6H5z0}5C6M6a6U6*6R2|6T6^016v6H0Z0s0S1z5T2g0(4?0O6L6H6@3a6C6S6)785x5=0F6%2A6)5I6D6q7q4_1e7c0v7u4J717n747p6G5x6k236n6 6p6b7x7o7z7L4_3:7F7w106-7U6b7A6I6K7Z6=6Q6t3C7)0V0j535V7Q6A7S106,5k6:757m6?70767)6|5B7,7{7.7y7(7W0%0!0N4P2q0s0M1*7=0.7^7k8381047$7J7V6W6H7s887H6s8b717)7C1z8z767I37807:8d7N6m0X8H8r738K7K8w5x6y7_6(7-8t8U8v6`5x5z7+8Z7v7-8T2A8L3$850.8R3C4$7}6.7 4*7!4%7l8M8W4_866~8p7R8A8a7%8D8d0w0v2w6J2u2_0q0$0U8_4#7#7/8?8d8y8-7G8I8B9c848d8F7E9v908$8;8V8)6j6l7P987`9a8:3f9I5$0R9o5c9q8C9A947*7j5x929p9b8u8c9!179D9N8!898|2)6/8~905q999Z9J6I6}9V5o9*8%9,9~0G0p0)202m1ha16P9G9R8(5;5Rad5*9y9+9d9!0m0O0s8G9E8#9r4.8N9L8Qau899Q8=ax9!0f9UaB9aafaE5/9-6J9$5E9|8SawaN9~9.ak6*9?3}8~aM6P9{9O9}5$96aY7Tana+6w8f8h0B0V2o3d68aJ9x8saU6gapaja}aT9Y6u8d0j200C2uat9:8.89aL9S6w8O9M9%8q8`ama4ao9~4ja.9X9zb7aO8,be9wb5bw939~0m0s0/1S0bbu6+af9^7 9`9(aFaW5A97bmaSboa39Hah6wa70p0X0D0T2obLbhb#8xb3bA90aDbi6{18bdbWa*8rb.a55$bkaAb=8/b06_5$0f9nb4bYb bra,aPbLb@b/5x0V0X0cbKcb9)a!45a$bQbn9saOa0cp9WbZagc06w0o4|0_0.4Ob-c6779tb;b|9;9PcL856m0)bc9/cPbfaKcSay7Oc3cYbBbYcicD6H8Yc4bgc#byaQ5%cvcAc,cebj0Xb90D0L2ubLcr3jct7-a)cQa;6{bUchc=a62=6K0}a99kaHcKb6bEai5?cza2c{da5x0p220Ob{aRb}ccdec1azdddncwbsc/c)9FdD6w8+c@bRdsdN6H2Yc d1a|c:9ad411d689d8cZdu95dcdr6Pdtbx9~0B0X0K8odLavdHbSdp7td.alcBa%c76w9CdmbDdIdEc%dGe8d}6w0hcadZa~cdd+9#eca:d;620za9d0d2e0aZbN6;890n3=8r0u3J0i4H4o1u4C0i4A2C4s1j2FeO0V1ReHeK1A2}eK0,8n0p04.