{"id":517369,"date":"2024-10-14T10:43:40","date_gmt":"2024-10-14T09:43:40","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=pycharm&#038;p=517369"},"modified":"2025-09-16T15:30:03","modified_gmt":"2025-09-16T14:30:03","slug":"7-facons-d-utiliser-les-notebooks-jupyter-dans-pycharm","status":"publish","type":"pycharm","link":"https:\/\/blog.jetbrains.com\/fr\/pycharm\/2024\/10\/7-facons-d-utiliser-les-notebooks-jupyter-dans-pycharm\/","title":{"rendered":"7 fa\u00e7ons d&#8217;utiliser les notebooks Jupyter dans PyCharm"},"content":{"rendered":"<p>Les notebooks Jupyter vous permettent de pr\u00e9senter des analyses en cr\u00e9ant et en partageant des donn\u00e9es, des \u00e9quations et des visualisations de fa\u00e7on s\u00e9quentielle, tout en d\u00e9veloppant un r\u00e9cit structur\u00e9 au fil du notebook.<\/p>\n<p>L&#8217;utilisation de notebooks Jupyter dans <a href=\"https:\/\/www.jetbrains.com\/fr-fr\/pycharm\/data-science\/\" target=\"_blank\" rel=\"noopener\">PyCharm Professional<\/a> donne acc\u00e8s \u00e0 des fonctionnalit\u00e9s allant bien au-del\u00e0 de celles dont on peut disposer avec des notebooks bas\u00e9s sur un navigateur, parmi lesquelles la saisie semi-automatique de code, les graphiques dynamiques et les statistiques rapides, qui facilitent l&#8217;exploration des donn\u00e9es et vous aident \u00e0 les manipuler rapidement et efficacement.<\/p>\n<p>Nous allons voir 7 fa\u00e7ons d&#8217;utiliser les notebooks Jupyter dans PyCharm pour atteindre les objectifs suivants :<\/p>\n<ul>\n<li>Cr\u00e9er un notebook ou se connecter \u00e0 un notebook existant<\/li>\n<li>Importer vos donn\u00e9es<\/li>\n<li>Vous familiariser avec les donn\u00e9es<\/li>\n<li>Tirer parti de l&#8217;AI Assistant de JetBrains<\/li>\n<li>Explorer votre code avec PyCharm<\/li>\n<li>Obtenir des informations sur les donn\u00e9es \u00e0 partir du code<\/li>\n<li>Partager vos analyses et vos graphiques<\/li>\n<\/ul>\n<p>Le notebook Jupyter utilis\u00e9 dans cette d\u00e9mo est disponible sur <a href=\"https:\/\/github.com\/t-redactyl\/pycon-us-demos\/blob\/main\/demos\/airlines-analysis\/notebooks\/airport-exploration.ipynb\" target=\"_blank\" rel=\"noopener\">GitHub<\/a>.<\/p>\n<h2 class=\"wp-block-heading\">1. Cr\u00e9er un notebook ou se connecter \u00e0 un notebook existant<\/h2>\n<p>Vous pouvez cr\u00e9er vos notebooks Jupyter et les utiliser localement ou vous connecter \u00e0 un notebook distant avec PyCharm. Examinons les deux possibilit\u00e9s.<\/p>\n<h3 class=\"wp-block-heading\">Cr\u00e9er un nouveau notebook Jupyter<\/h3>\n<p>Pour travailler localement avec un notebook Jupyter, ouvrez la fen\u00eatre d&#8217;outils <em>Project<\/em> dans PyCharm, naviguez jusqu&#8217;\u00e0 l&#8217;emplacement o\u00f9 vous voulez ajouter le notebook et appelez un nouveau fichier. Pour ce faire, vous pouvez utiliser un raccourci clavier <em>\u2318N<\/em> (macOS) \/ <em>Alt+Ins<\/em> (Windows\/Linux) ou faire un clic droit et s\u00e9lectionner <em>New | Jupyter Notebook<\/em>.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/AD_4nXfwT8pNDpQ171gUzvybVm7kVab9V1BmIrlBkUxFOoGvowrafx8TeTbcIvHBY4rOtWLIM8Zjwb9e_SNQoQPgzpoA4TrivtOZ0AKu680rw7MpMuVneYYuKalay3oRA8M9CWgcwD-lUKZ7eaHBxOks8uKyYlTN-6.png\" width=\"353\" height=\"555\" \/><\/p>\n<p>Une fois que vous aurez nomm\u00e9 votre nouveau notebook, PyCharm l&#8217;ouvrira et vous pourrez commencer \u00e0 l&#8217;utiliser. Vous pouvez \u00e9galement faire glisser vos notebooks Jupyter enregistr\u00e9s localement dans PyCharm et l&#8217;IDE les reconna\u00eetra automatiquement.<\/p>\n<h3 class=\"wp-block-heading\">Se connecter \u00e0 un notebook Jupyter distant<\/h3>\n<p>Pour vous connecter \u00e0 un notebook Jupyter distant, s\u00e9lectionnez <em>Tools | Add Jupyter Connection<\/em>. Vous pouvez ensuite choisir entre d\u00e9marrer un serveur Jupyter local, vous connecter \u00e0 un serveur Jupyter local existant ou vous connecter \u00e0 un serveur Jupyter via une URL \u2013 toutes ces options sont prises en charge.<\/p>\n<p>Maintenant que vous disposez de votre notebook Jupyter, il s&#8217;agit d&#8217;avoir des donn\u00e9es !<\/p>\n<h2 class=\"wp-block-heading\">2. Importer vos donn\u00e9es<\/h2>\n<p>Les donn\u00e9es se pr\u00e9sentent g\u00e9n\u00e9ralement dans deux formats, CSV ou base de donn\u00e9es. Nous allons commencer par l&#8217;importation de donn\u00e9es \u00e0 partir d&#8217;un fichier CSV.<\/p>\n<h3 class=\"wp-block-heading\">Importation depuis un fichier CSV<\/h3>\n<p><a href=\"https:\/\/pola.rs\/\" target=\"_blank\" rel=\"noopener\">Polars<\/a> et <a href=\"https:\/\/pandas.pydata.org\/pandas-docs\/stable\/reference\/index.html\" target=\"_blank\" rel=\"noopener\">Pandas<\/a> sont les biblioth\u00e8ques les plus utilis\u00e9es pour l&#8217;importation de donn\u00e9es dans des notebooks Jupyter. Dans cette section, je vais vous fournir du code pour les deux. Vous pouvez consulter la documentation afin de <a href=\"https:\/\/blog.jetbrains.com\/pycharm\/2024\/07\/polars-vs-pandas\/\">comprendre en quoi elles sont diff\u00e9rentes<\/a>.<\/p>\n<p>Vous devez d&#8217;abord vous assurer que votre fichier CSV se trouve bien dans votre projet PyCharm, par exemple dans un dossier appel\u00e9 \u00ab data \u00bb. Ensuite, vous pouvez appeler Pandas et l&#8217;utiliser pour lire le code :<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import pandas as pd\ndf = pd.read_csv(\"..\/data\/airlines.csv\")<\/pre>\n<p>Dans cet exemple, <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">airlines.csv<\/code> est le fichier contenant les donn\u00e9es \u00e0 manipuler. Pour ex\u00e9cuter cette cellule de code ou toute autre cellule de code dans PyCharm, utilisez <em>\u21e7\u23ce <\/em>(macOS) \/ <em>Maj+Entr\u00e9e <\/em>(Windows\/Linux). Vous pouvez \u00e9galement utiliser les fl\u00e8ches vertes disponibles dans la barre d&#8217;outils situ\u00e9e en haut.<\/p>\n<p>Si vous pr\u00e9f\u00e9rez utiliser Polars, vous pouvez le faire avec le code suivant :<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import polars as pl\ndf = pl.read_csv(\"..\/data\/airlines.csv\")<\/pre>\n<h3 class=\"wp-block-heading\">Importation depuis une base de donn\u00e9es<\/h3>\n<p>Si vos donn\u00e9es sont dans une base, ce qui est g\u00e9n\u00e9ralement le cas pour les projets internes, leur importation dans un notebook Jupyter ne demande que quelques lignes de code en plus. Commencez par configurer votre connexion \u00e0 la base de donn\u00e9es. Dans cet exemple, nous utilisons <a href=\"https:\/\/www.jetbrains.com\/help\/idea\/postgresql.html#connect-to-postgresql-database\" target=\"_blank\" rel=\"noopener\">PostgreSQL<\/a>.<\/p>\n<p>Pour pandas, vous devez utiliser le code suivant pour importer les donn\u00e9es :<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import pandas as pd\nengine = create_engine(\"postgresql:\/\/jetbrains:jetbrains@localhost\/demo\")\ndf = pd.read_sql(sql=text(\"SELECT * FROM airlines\"),\n                      con=engine.connect())<\/pre>\n<p>Pour Polars, utilisez ce code :<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import polars as pl\nengine = create_engine(\"postgresql:\/\/jetbrains:jetbrains@localhost\/demo\")\nconnection = engine.connect()\nquery = \"SELECT * FROM airlines\"\ndf = pl.read_database(query, connection)<\/pre>\n<h2 class=\"wp-block-heading\">3. Vous familiariser avec les donn\u00e9es<\/h2>\n<p>Maintenant que nous avons import\u00e9 nos donn\u00e9es, nous pouvons examiner le DataFrame ou \u00ab df \u00bb comme nous l&#8217;appellerons dans notre code. L&#8217;impression du DataFrame ne requiert qu&#8217;une seule ligne de code, quelle que soit la m\u00e9thode utilis\u00e9e pour importer les donn\u00e9es :<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">df<\/pre>\n<h3 class=\"wp-block-heading\">DataFrames<\/h3>\n<p>En premier lieu, PyCharm affiche votre DataFrame sous forme de table. Vous pouvez faire d\u00e9filer le DataFrame horizontalement et cliquer sur n&#8217;importe quel en-t\u00eate de colonne pour trier les donn\u00e9es en fonction de cette colonne. Pour obtenir des statistiques sur chaque colonne de donn\u00e9es, cliquez sur l&#8217;ic\u00f4ne <em>Show Column Statistics<\/em> situ\u00e9e \u00e0 droite et s\u00e9lectionnez <em>Compact<\/em> ou <em>Detailed<\/em>.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/AD_4nXeeHyIhlM6F4WuvzJRJupS3UCT3l3f8Ws__i6IA1K9Oc8cTqxz7caSppL4AH1ldvzxhAsEPLr2hvDB_2dSdPlHekZoXHw_fFrjmt2Is74R4-0I9Ttwt8ind8JAhHa9xWFZSGU001ItCf3W3Uv8EWjPmvYUL-6.png\" width=\"624\" height=\"152\" \/><\/p>\n<h3 class=\"wp-block-heading\">Graphiques dynamiques<\/h3>\n<p>PyCharm vous permet de cr\u00e9er un graphique dynamique \u00e0 partir de votre DataFrame en cliquant sur l&#8217;ic\u00f4ne <em>Chart View<\/em> situ\u00e9e \u00e0 gauche. Nous utilisons pandas dans cet exemple, mais la m\u00eame option est disponible pour les DataFrames Polars.<\/p>\n<p>Cliquez sur l&#8217;ic\u00f4ne <em>Show Series Settings<\/em> (rouage) situ\u00e9e \u00e0 droite pour configurer votre graphique en fonction de vos besoins :<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/AD_4nXcTv1goFCpMckuoW8Lmbo7oqAgsrHiB8egyhg8YfZwxZVj2aTQ1-aSYOK5keFz1TqTCsz-s-_UnTLOqgvXUikzpPjiHlh4_si3zRDRzakQ-BpVUUBlz4M1lLrrSeSyaJKduSvGDRlo4YQ96kNCdARPMs_k-6.png\" width=\"624\" height=\"159\" \/><\/p>\n<p>Dans cette vue, vous pouvez obtenir plus d&#8217;informations sur les donn\u00e9es en les survolant et rep\u00e9rer facilement les valeurs aberrantes :<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/AD_4nXeKwC_Tde-D05J7J0HgBJQTljKNoIXj0wDYGc3ch96P86GEBjZInhENRXvJJ5jAG7Xz5uluclDu_cCxiUsy_yewg9nYMLMrPXx9_ALeR2qYnY-jFA2RB-J8XyxIIR-ron4DtsF3tL-ne-OPQi3b5yKzDKDm-5.png\" width=\"624\" height=\"159\" \/><\/p>\n<p>Il est possible de faire de m\u00eame avec Polars.<\/p>\n<h2 class=\"wp-block-heading\">4. Tirer parti de l&#8217;AI Assistant de JetBrains<\/h2>\n<p>L&#8217;<a href=\"https:\/\/www.jetbrains.com\/fr-fr\/ai\/\" target=\"_blank\" rel=\"noopener\">AI Assistant de JetBrains<\/a> propose plusieurs fonctionnalit\u00e9s pour am\u00e9liorer votre productivit\u00e9 lors de l&#8217;utilisation des notebooks Jupyter dans PyCharm. Examinons plus en d\u00e9tail comment utiliser l&#8217;AI Assistant pour expliquer un DataFrame, \u00e9crire du code et m\u00eame obtenir des explications sur les erreurs.<\/p>\n<h3 class=\"wp-block-heading\">Expliquer les DataFrames<\/h3>\n<p>Si vous avez un DataFrame mais que vous ne savez pas par o\u00f9 commencer, cliquez sur l&#8217;ic\u00f4ne AI violette dans la partie droite de ce DataFrame et s\u00e9lectionnez <em>Explain DataFrame<\/em>. L&#8217;AI Assistant utilisera son contexte pour vous fournir une vue d&#8217;ensemble du DataFrame :<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/AD_4nXd8TLPM_ZDIlGDMZXagXLvA0BUNHHwuzLjft2Ksdse24RB2LCTQLB8O6Gkf3KQxT0gqJzH2Wg5DXPb_pM9mQ-qddBeSt1wyzYI1j8DhuU8jIkPuglhwBc6CfUqa0nLMqV0O-OxO3rv4lK1ubBi7pKyRZSI-6.png\" width=\"624\" height=\"149\" \/><\/p>\n<h3 class=\"wp-block-heading\">\u00c9crire du code<\/h3>\n<p>L&#8217;AI Assistant peut aussi vous aider pour l&#8217;\u00e9criture de code, par exemple, si vous savez quel type de graphique vous voulez mais que vous n&#8217;\u00eates pas totalement s\u00fbr du code \u00e0 utiliser. Supposons que vous souhaitiez utiliser matplotlib pour cr\u00e9er un graphique qui trouvera la relation entre \u00ab TimeMonthName \u00bb et \u00ab MinutesDelayedWeather \u00bb. En sp\u00e9cifiant les noms des colonnes, on fournit davantage de contexte \u00e0 la requ\u00eate, ce qui augmente la fiabilit\u00e9 du code g\u00e9n\u00e9r\u00e9. Essayez avec le prompt suivant :<\/p>\n<p><em>Give me code using matplotlib to create a chart which finds the relationship between \u2018TimeMonthName\u2019 and \u2018MinutesDelayedWeather\u2019 for my dataframe df<\/em><\/p>\n<p>Si le code g\u00e9n\u00e9r\u00e9 vous convient, utilisez le bouton <em>Insert Snippet at Caret<\/em> pour l&#8217;ins\u00e9rer et l&#8217;ex\u00e9cuter :<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import matplotlib.pyplot as plt\n# Assuming your data is in a DataFrame named 'df'\n# Replace 'df' with the actual name of your DataFrame if different\n\n\n# Plotting\nplt.figure(figsize=(10, 6))\nplt.bar(df['TimeMonthName'], df['MinutesDelayedWeather'], color='skyblue')\nplt.xlabel('Month')\nplt.ylabel('Minutes Delayed due to Weather')\nplt.title('Relationship between TimeMonthName and MinutesDelayedWeather')\nplt.xticks(rotation=45)\nplt.grid(axis='y', linestyle='--', alpha=0.7)\nplt.tight_layout()\n\n\nplt.show()<\/pre>\n<p>Si vous ne voulez pas ouvrir la fen\u00eatre d&#8217;outils de l&#8217;<em>AI Assistant<\/em>, vous pouvez utiliser le prompt de la cellule d&#8217;IA pour poser vos questions. Par exemple, nous pouvons poser la m\u00eame question ici et obtenir le code souhait\u00e9 :<\/p>\n<p><strong><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/AD_4nXfazGx_aQ1FpXPhCwSfG0D5ipaLDVbIoWwObso8-BlPOtTon1uSs-JEUtH-ouS_WQqFx8eG2kJ2i9AiW0Y6nViJ291x_7KsOPAfx5rZa9DrM9SikstHGzSJ4JXr3Gw9EwAhVnRnimHVX3B4zUD0MNTBMAE-4.png\" width=\"624\" height=\"39\" \/><\/strong><\/p>\n<h3 class=\"wp-block-heading\">Obtenir des explications sur les erreurs<\/h3>\n<p>Si vous souhaitez que l&#8217;AI Assistant vous fournisse des explications sur une erreur, cliquez simplement sur <em>Explain with AI<\/em> :<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/AD_4nXe7Ay9Gra0mk3qisHKGCc5GghTb5uwNfDjYayTEUakBjwXzUBEv8VsI5CfHU6RWhEmDNjVIbeDheVdaBzXs_FU-_avwV8mVTHvAaDva9APxuESjY43W8iCDRDqkt7U8jMtVXP-C0xlaIC3ZgHjaJDcv3ZI-4.png\" width=\"624\" height=\"121\" \/><\/p>\n<p>Vous pouvez utiliser le r\u00e9sultat obtenu pour mieux comprendre le probl\u00e8me, voire obtenir du code pour le r\u00e9soudre !<\/p>\n<h2 class=\"wp-block-heading\">5. Explorer votre code<\/h2>\n<p>PyCharm peut vous aider \u00e0 obtenir une vue d&#8217;ensemble de votre notebook Jupyter, \u00e0 compl\u00e9ter des parties de votre code pour vous simplifier la t\u00e2che, \u00e0 le refactoriser si n\u00e9cessaire, \u00e0 le d\u00e9boguer, et m\u00eame \u00e0 ajouter des int\u00e9grations pour enrichir vos projets.<\/p>\n<h3 class=\"wp-block-heading\">Conseils pour naviguer dans votre code et l&#8217;optimiser<\/h3>\n<p>Nos notebooks Jupyter peuvent rapidement devenir tr\u00e8s volumineux, mais heureusement vous pouvez utiliser la vue <em>Structure<\/em> de PyCharm pour voir tous vos en-t\u00eates en appuyant sur <em>\u23187 <\/em>(macOS) \/ <em>Alt+7<\/em> (Windows\/Linux).<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/AD_4nXcajjp8eHZs59P6b3qHIg1b-1GLYMQyTJKTovQCw5VTLd37bDx0XHvTkccCOboObIHi-9NEIIGoqkeLwSPv-BAjrMU7j9yQA4IJiBWEU-P65JwRu492cVtyxVayT92h9x1_amgrGpAZIeh9SlbNk7gKRQZS-4.png\" width=\"309\" height=\"505\" \/><\/p>\n<h3 class=\"wp-block-heading\">Saisie semi-automatique de code<\/h3>\n<p>Une autre fonctionnalit\u00e9 dont vous pouvez b\u00e9n\u00e9ficier lorsque vous travaillez avec des notebooks Jupyter dans PyCharm est la saisie semi-automatique de code. Vous disposez automatiquement de la saisie semi-automatique de base de PyCharm, et PyCharm Professional propose la <a href=\"https:\/\/blog.jetbrains.com\/blog\/2024\/04\/04\/full-line-code-completion-in-jetbrains-ides-all-you-need-to-know\/\">saisie semi-automatique du code en ligne enti\u00e8re<\/a>, qui utilise un mod\u00e8le d&#8217;IA local pour fournir des suggestions. Enfin, l&#8217;AI Assistant peut aussi vous aider \u00e0 \u00e9crire du code et \u00e0 d\u00e9couvrir de nouvelles biblioth\u00e8ques et de nouveaux frameworks.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/AD_4nXdw93wNuTrSuviFywxOg50ZcBEz6zYspitk3Cdkn8lMlnhzhQVOWp6rk-hKy1Fy0HxY06zOknFWW-0AXmZ8WllzPkRTwNmAUgPNuR7NvNCUW4LyZqpGmyNMdR9UPfA0w-Bw907ALaq8JijM6lyQBfjvKJUp-4.png\" width=\"624\" height=\"69\" \/><\/p>\n<h3 class=\"wp-block-heading\">Refactoriser<\/h3>\n<p>Lorsque vous avez besoin de refactoriser votre code, il vous suffit d&#8217;un seul raccourci clavier, <em>\u2303T<\/em> (macOS) \/ <em>Maj+Ctrl+Alt+T<\/em> (Windows\/Linux), pour choisir la refactorisation \u00e0 appeler. Vous pouvez choisir une refactorisation populaire, telle que <em>Rename<\/em>, <em>Change Signature,<\/em> ou <em>Introduce Variable<\/em>, ou une option moins connue comme <em>Extract Method<\/em>, pour modifier votre code sans modifier la s\u00e9mantique :<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/AD_4nXdKFjKIIi3JS7pC6pzNKursr8LCQtpanJSj6kmK6VHZ4u7kU5cCKF6wm4xkkWOm7IsGFAfq3U0s4MFacG-B_yjAC0B_2xkaz_uIreoNLFDHLDILSkXlYZF4RRoKnwx3UGlgmY9VgJGipw5aVwVfmFwTu-eS-4.png\" width=\"624\" height=\"480\" \/><\/p>\n<p>Au fur et \u00e0 mesure de la croissance de votre notebook Jupyter, il est probable que vos instructions d&#8217;importation croissent elles aussi. Il peut arriver d&#8217;importer un paquet tel que <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">polars<\/code> ou <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">numpy<\/code>, mais d&#8217;oublier que <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">numpy<\/code> est une d\u00e9pendance transitive de la biblioth\u00e8que Polars, et qu&#8217;il n&#8217;est donc pas n\u00e9cessaire de l&#8217;importer s\u00e9par\u00e9ment.<\/p>\n<p>Pour identifier ces cas et conserver un code propre, appelez <em>Optimize Imports<\/em> <em>\u2303\u2325O<\/em> (macOS) \/ <em>Ctrl+Alt+O <\/em>(Windows\/Linux) afin que PyCharm supprime ce dont nous n&#8217;avez pas besoin.<\/p>\n<h3 class=\"wp-block-heading\">D\u00e9boguer votre code<\/h3>\n<p>Dans PyCharm, vous pouvez utiliser le d\u00e9bogueur \u00e0 tout moment pour mieux comprendre certains comportements de votre notebook Jupyter.<\/p>\n<p>Placez un point d&#8217;arr\u00eat sur la ligne de votre choix en cliquant sur la goutti\u00e8re ou en utilisant <em>\u2318F8 <\/em>(macOS) \/<em> Ctrl+F8<\/em> (Windows\/Linux), puis ex\u00e9cutez votre code avec le d\u00e9bogueur attach\u00e9 avec l&#8217;ic\u00f4ne de d\u00e9bogage de la barre d&#8217;outils sup\u00e9rieure :<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/AD_4nXeWsTKJ2K3n4PSxwCQKt5O6fJ07mZgDOBIogEp67urHjaUw9Bk00lwxJbG50JPxAPqayn2vhE6GwEg3jxCXUwZ6DDhhjNduU22NmpB4vzmBzLIIunP1M7JkZ4aARyp8daE08z8CsgIWBO2P_APxbUQol2o5-4.png\" width=\"624\" height=\"64\" \/><\/p>\n<p>Vous pouvez \u00e9galement appeler le d\u00e9bogueur de PyCharm dans votre notebook Jupyter avec <em>\u2325\u21e7\u23ce<\/em> (macOS) \/ <em>Maj+Alt+Entr\u00e9e<\/em> (Windows\/Linux). Le d\u00e9bogage du code dans un notebook Jupyter est sujet \u00e0 quelques <a href=\"https:\/\/www.jetbrains.com\/help\/pycharm\/running-jupyter-notebook-cells.html#debug-code-in-jupyter-notebooks\" target=\"_blank\" rel=\"noopener\">limitations<\/a>, mais nous vous invitons \u00e0 l&#8217;essayer et \u00e0 nous faire part de votre d&#8217;exp\u00e9rience.<\/p>\n<h3 class=\"wp-block-heading\">Ajouter des int\u00e9grations dans PyCharm<\/h3>\n<p>L&#8217;utilisation d&#8217;un IDE ne serait pas aussi int\u00e9ressante si on ne pouvait pas y trouver les int\u00e9grations dont on a besoin. PyCharm Professional 2024.2 apporte deux nouvelles int\u00e9grations \u00e0 votre workflow : <a href=\"https:\/\/www.jetbrains.com\/help\/pycharm\/databricks.html\" target=\"_blank\" rel=\"noopener\">DataBricks<\/a> et <a href=\"https:\/\/www.jetbrains.com\/help\/pycharm\/hugging-face.html\" target=\"_blank\" rel=\"noopener\">HuggingFace<\/a>.<\/p>\n<p>Pour activer l&#8217;une ou l&#8217;autre de ces int\u00e9grations, allez dans Param\u00e8tres <kbd><em>\u2318<\/em><\/kbd> (macOS) \/ <kbd><em>Ctrl+Alt+S<\/em><\/kbd> (Windows\/Linux), s\u00e9lectionnez <em>Plugins<\/em> et recherchez le plugin correspondant \u00e0 l&#8217;int\u00e9gration de votre choix dans l&#8217;onglet <em>Marketplace<\/em>.<\/p>\n<h2 class=\"wp-block-heading\">6. Obtenir des informations sur les donn\u00e9es \u00e0 partir du code<\/h2>\n<p>Lors de l&#8217;analyse de vos donn\u00e9es, il faut faire une distinction entre les variables cat\u00e9goriques et les variables continues. Les donn\u00e9es cat\u00e9goriques ont un nombre <strong>fini<\/strong> de groupes discrets ou de cat\u00e9gories, tandis que les donn\u00e9es continues consistent en une mesure <strong>continue<\/strong>. Nous allons voir comment extraire diff\u00e9rentes informations des variables cat\u00e9goriques et des variables dans notre jeu de donn\u00e9es sur les compagnies a\u00e9riennes.<\/p>\n<h3 class=\"wp-block-heading\">Variables continues<\/h3>\n<p>Nous pouvons avoir une id\u00e9e de la distribution des donn\u00e9es continues en examinant les mesures de la valeur moyenne de ces donn\u00e9es et la dispersion de ces donn\u00e9es autour de la moyenne. Pour les donn\u00e9es distribu\u00e9es normalement, nous pouvons utiliser la moyenne pour mesurer la valeur moyenne et l&#8217;\u00e9cart type pour mesurer la dispersion. Toutefois, lorsque les donn\u00e9es ne sont pas distribu\u00e9es normalement, nous pouvons obtenir des informations plus pr\u00e9cises en utilisant la m\u00e9diane et la plage des quartiles (la diff\u00e9rence entre le 75e et le 25e percentile). Nous allons examiner l&#8217;une de nos variables continues pour comprendre la diff\u00e9rence entre ces mesures.<\/p>\n<p>Dans notre ensemble de donn\u00e9es, nous avons beaucoup de variables continues, mais nous allons travailler avec \u00ab NumDelaysLateAircraft \u00bb pour voir ce que nous pouvons apprendre. Nous allons utiliser le code suivant pour obtenir des statistiques r\u00e9sumant le contenu de cette colonne\u00a0:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">df['NumDelaysLateAircraft'].describe()<\/pre>\n<p>En examinant ces donn\u00e9es, nous constatons une grande diff\u00e9rence entre la \u00ab moyenne de l&#8217;ensemble de donn\u00e9es \u00bb, qui est d&#8217;environ 789, et la \u00ab m\u00e9diane \u00bb (notre 5e percentile, soit \u00ab 50 % \u00bb dans le tableau ci-dessous), d&#8217;environ 618.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/AD_4nXeAHHdgze4ZM9yyzws28yWI3Oz7rwEnl_yRQd6smGAgwgCwYHgORdn8Hf2rsC1Nlc_ZZO2vy0zJsDx2kn8tDnR0raH97RqeDZSQHGe9huExTTd-fd2QpT71FnOeQxB1Ljvh3RLNr2OHwMt2CyD0YMhlucua-4.png\" width=\"419\" height=\"315\" \/><\/p>\n<p>Cela indique une asym\u00e9trie dans la distribution de notre variable. Utilisons PyCharm pour l&#8217;examiner plus en d\u00e9tail. Cliquez sur l&#8217;ic\u00f4ne <em>Chart View<\/em> dans le coin sup\u00e9rieur gauche. Une fois le graphique rendu, nous allons modifier les param\u00e8tres de la s\u00e9rie repr\u00e9sent\u00e9s par l&#8217;e rouage dans le coin sup\u00e9rieur droit de l&#8217;\u00e9cran. Utilisez NumDelaysLateAircraft \u00bb pour les axes x et y.<\/p>\n<p>Faites d\u00e9filer l&#8217;axe des y vers le bas \u00e0 l&#8217;aide de la petite fl\u00e8che et s\u00e9lectionnez \u00ab count \u00bb. La derni\u00e8re \u00e9tape consiste \u00e0 d\u00e9finir le type de graphique sur <em>Histogram<\/em> en utilisant les ic\u00f4nes dans le coin sup\u00e9rieur droit :<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/AD_4nXdGZ9Fbh2pDo5-2698IF9FmTC2h6Yq7njRJ0eiWU4-RHZNrq3AQQnhRZvPbk3ivzmcyitMRz3YfN04SpD7mih-n4GZIyiLUpNLnJj07YSfQ4-NwbcFxjEbL8dD1-1C3v1ZLjTdESYAKqMIQzTHQTR8G8Kh-4.png\" width=\"624\" height=\"140\" \/><\/p>\n<p>Maintenant que la distorsion est devenue visible, nous pouvons constater que dans la plupart des cas les retards ne sont pas excessifs. Toutefois, nous avons plusieurs retards extr\u00eames \u2013 on voit notamment un point en dehors de la courbe \u00e0 droite indiquant qu&#8217;un avion a \u00e9t\u00e9 retard\u00e9 de 4 509 minutes, soit un peu plus de trois jours !<\/p>\n<p>En statistiques, la moyenne est tr\u00e8s sensible aux valeurs aberrantes, car il s&#8217;agit d&#8217;une moyenne g\u00e9om\u00e9trique, contrairement \u00e0 la m\u00e9diane qui, si vous avez ordonn\u00e9 toutes les observations dans votre variable, se situe exactement au milieu de ces valeurs. Une moyenne sup\u00e9rieure \u00e0 la m\u00e9diane est r\u00e9v\u00e9latrice de la pr\u00e9sence de donn\u00e9es aberrantes dans la partie droite des donn\u00e9es, la partie sup\u00e9rieure, comme c&#8217;est le cas ici. Dans de tels cas, la m\u00e9diane est un meilleur indicateur du moyen r\u00e9el, comme on peut le voir dans l&#8217;histogramme.<\/p>\n<h3 class=\"wp-block-heading\">Variables cat\u00e9goriques<\/h3>\n<p>Nous allons voir comment utiliser du code pour extraire des informations exploitables de nos variables cat\u00e9goriques. Pour obtenir quelque chose d&#8217;un peu plus int\u00e9ressant que \u00ab AirportCode \u00bb, nous allons analyser combien d&#8217;avions ont \u00e9t\u00e9 retard\u00e9s \u00e0 cause des conditions m\u00e9t\u00e9o, \u00ab NumDelaysWeather \u00bb, au cours des diff\u00e9rents mois de l&#8217;ann\u00e9e, \u00ab TimeMonthName \u00bb.<\/p>\n<p>Utilisez ce code pour grouper \u00ab NumDelaysWeather \u00bb avec \u00ab TimeMonthName \u00bb :<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">result = df[['TimeMonthName', 'NumDelaysWeather']].groupby('TimeMonthName').sum()\nresult<\/pre>\n<p>Cela nous donne de nouveau le DataFrame sous forme de tableau, mais cliquons sur l&#8217;ic\u00f4ne <em>Chart View<\/em> situ\u00e9 dans la partie gauche de l&#8217;interface utilisateur de PyCharm pour voir ce que nous pouvons apprendre :<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/AD_4nXdFqHb_RhAPVTkFb8wlt7KKpTAOknEJtX2-N7639d4haf3vj_2b6QhmGcg-pmn8BRy-s9qa9rZ4aVV4rT87-mEuBmr_L6MHLe8OZc9CvO_HtRO7DXeTTUZ1ZT00omerHcclv4SK_n-Jv7a9Dzs_nIq8C4S1-4.png\" width=\"624\" height=\"179\" \/><\/p>\n<p>Il serait utile de trier les mois en fonction du calendrier gr\u00e9gorien. Nous allons commencer par cr\u00e9er une valeur pour les mois attendus :<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">month_order = [\n   \"January\", \"February\", \"March\", \"April\", \"May\", \"June\",\n   \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"\n]<\/pre>\n<p>Maintenant, nous pouvons demander \u00e0 PyCharm d&#8217;utiliser l&#8217;ordre que nous venons de d\u00e9finir dans \u00ab month_order \u00bb :<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># Convert the 'TimeMonthName' column to a categorical type with the specified order\ndf[\"TimeMonthName\"] = pd.Categorical(df[\"TimeMonthName\"], categories=month_order, ordered=True)\n\n\n# Now you can group by 'TimeMonthName' and perform sum operation, specifying observed=False\nresult = df[['TimeMonthName', 'NumDelaysWeather']].groupby('TimeMonthName', observed=False).sum()\n\n\nresult<\/pre>\n<p>Puis, nous cliquons de nouveau sur l&#8217;ic\u00f4ne sur <em>Chart View<\/em>. Et l\u00e0, on peut voir que quelque chose ne va pas !<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/AD_4nXebdqRWDc_nmTiiXwBUCEtBJ98Swl8AePLQ4EvVXjq5quhVVkYkzDlKeNX0HKTMn3vLZTJZvORzVDa6nBa-84XLyPkPCi7jYMkjNVBEXREkbgIgx2GDAvMNecw0Ix_8Q3YDmnn1Z48ssDhTK00jC1-ff-YO-4.png\" width=\"624\" height=\"137\" \/><\/p>\n<p>Aucun vol n&#8217;aurait eu de retard en f\u00e9vrier, vraiment ? Ce n&#8217;est pas possible. V\u00e9rifions notre hypoth\u00e8se avec du code suppl\u00e9mentaire :<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">df['TimeMonthName'].value_counts()<\/pre>\n<p>Aha ! Nous voyons que \u00ab\u00a0February\u00a0\u00bb \u00e9tait \u00e9crit \u00ab\u00a0Febuary\u00a0\u00bb dans notre jeu de donn\u00e9es, ce qui a cr\u00e9\u00e9 une incoh\u00e9rence avec notre nom de variable. Nous allons corriger l&#8217;orthographe dans notre jeu de donn\u00e9es avec ce code :<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">df[\"TimeMonthName\"] = df[\"TimeMonthName\"].replace(\"Febuary\", \"February\")\ndf['TimeMonthName'].value_counts()<\/pre>\n<p>Super, tout semble ok maintenant. Nous devrions maintenant pouvoir ex\u00e9cuter \u00e0 nouveau le code et obtenir un graphique que nous pourrons interpr\u00e9ter :<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/AD_4nXeYH9NBuDErLvgymXVNSfiBI_3uHNU6Jby8lYI3Eer4Q3ffLV8rXOWhxgwFy7XHU8VuqkJKXg7J9d6cM2ID7sYQpkVVrxqZQUjp2bm7Z_Ezh2HuDsOOo9Cn1bRS9C-FhVzh4A8Qg_JF1IYZe8SmhFCGITz-4.png\" width=\"624\" height=\"140\" \/><\/p>\n<p>Dans cette vue, nous constatons un nombre sup\u00e9rieur de retards pendant les mois de d\u00e9cembre, janvier et f\u00e9vrier, puis de nouveau en juin, juillet et ao\u00fbt. Toutefois, nous n&#8217;avons pas standardis\u00e9 ces donn\u00e9es par rapport au nombre total de vols, il est donc possible qu&#8217;il y ait plus de vols pendant ces mois, ce qui pourrait expliquer le nombre plus \u00e9lev\u00e9 de retards en \u00e9t\u00e9 et en hiver.<\/p>\n<h2 class=\"wp-block-heading\">7. Partager vos analyses et vos graphiques<\/h2>\n<p>Une fois votre chef-d&#8217;\u0153uvre termin\u00e9, vous souhaiterez certainement exporter vos donn\u00e9es, ce que vous pouvez faire de diff\u00e9rentes fa\u00e7ons avec les notebooks Jupyter dans PyCharm.<\/p>\n<h3 class=\"wp-block-heading\">Exporter un DataFrame<\/h3>\n<p>Vous pouvez exporter un DataFrame en cliquant sur la fl\u00e8che vers le bas dans la partie droite :<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/AD_4nXd5al-G_ee0U-hn-FrIkjRSebNxXNdVv2nLkvJwcAqI4t2FjAvEemqqUlJotTL238gQlx6rzLjWZjA0sqstdsneggr73NcvHFPqfSZkkBWAX_S56L76SE3UJqqYvteZf_F35b5QX0A6Axo-VZF39vZnEI-4.png\" width=\"624\" height=\"187\" \/><\/p>\n<p>De nombreux formats vous sont propos\u00e9s, parmi lesquels SQL, CSV et JSON :<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/AD_4nXfSziNPOkbJHjZTh64dyeOq6OUQ601LaDNSSrN6J1qZyyFua4WkmiHU_J9BBjARa7ll2hGJCf2nJRfFmeViMMyNhm-6-YHxvBZrW7xZvPys1uwDDbgL7UZ5rn58txWQtNNmYsMiDXSNFf7mYZJEWiUcBdSe-3.png\" width=\"548\" height=\"387\" \/><\/p>\n<h3 class=\"wp-block-heading\">Exporter des graphiques<\/h3>\n<p>Si vous pr\u00e9f\u00e9rez exporter le graphique interactif, cliquez sur l&#8217;ic\u00f4ne <em>Export to PNG<\/em> dans la partie droite :<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/AD_4nXfvbwsqz5I7hxizY1YnUwbiLI8lG6IjTC8fwzmFshOgJZm-wG2huCTIx0H6KhpmAe_LMR328eOFcf7JE95od71vyIav3FDP3aq8cK3cZFkjlLE8eCD6pYbulwL-EqwVOwDZunbF6DLiKj4DiyhCamX7H34-3.png\" width=\"624\" height=\"164\" \/><\/p>\n<h3 class=\"wp-block-heading\">Visualiser votre notebook dans un navigateur<\/h3>\n<p>Vous pouvez visualiser l&#8217;int\u00e9gralit\u00e9 de votre notebook Jupyter \u00e0 tout moment dans un navigateur en cliquant sur l&#8217;ic\u00f4ne dans le coin sup\u00e9rieur droit de votre notebook :<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/AD_4nXd_N3aGqlCFR-aWIWGibLUE_8r76hKFcOt0GvPYOyURwA2oKWEyfJaZ4TUsmo112kGEUXG38tOSIjFX0dh6lM1s95Ve5o-n486GPs1sToZzkvWJjNCkl1fY5_SKj0GghXrwyEAdjHxI4FMx44mvjs-JBBi-3.png\" width=\"624\" height=\"93\" \/><\/p>\n<p>Enfin, si vous souhaitez exporter votre notebook Jupyter vers un fichier Python, la version 2024.2 de PyCharm vous permet de le faire aussi ! Faites un clic droit sur votre notebook Jupyter dans la fen\u00eatre d&#8217;outils <em> Project<\/em> et s\u00e9lectionnez <em>Convert to Python File<\/em>, puis suivez simplement les instructions, et c&#8217;est tout !<\/p>\n<h2 class=\"wp-block-heading\">En r\u00e9sum\u00e9<\/h2>\n<p>L&#8217;utilisation des notebooks Jupyter dans <a href=\"https:\/\/www.jetbrains.com\/fr-fr\/pycharm\/data-science\/\" target=\"_blank\" rel=\"noopener\">PyCharm Professional<\/a> donne acc\u00e8s \u00e0 de nombreuses fonctionnalit\u00e9s qui permettent de cr\u00e9er du code plus rapidement, d&#8217;explorer les donn\u00e9es facilement et d&#8217;exporter vos projets aux formats de votre choix.<\/p>\n<p>T\u00e9l\u00e9chargez PyCharm Professional pour l&#8217;essayer et vous faire votre propre id\u00e9e ! Profitez de l&#8217;essai prolong\u00e9 d\u00e8s maintenant et d\u00e9couvrez les avantages qu&#8217;offre PyCharm Professional pour les travaux de science des donn\u00e9es.<\/p>\n<p>Pour activer votre abonnement gratuit de 60 jours \u00e0 PyCharm Professional, utilisez le code promotionnel \u00ab <strong>PyCharmNotebooks<\/strong> \u00bb \u00e0 l&#8217;\u00e9tape du paiement. L&#8217;abonnement gratuit est r\u00e9serv\u00e9 aux utilisateurs individuels.<\/p>\n<div class=\"buttons\">\n<div class=\"buttons__row\"><a class=\"btn\" href=\"https:\/\/www.jetbrains.com\/fr-fr\/store\/redeem\/\" target=\"\" rel=\"noopener\">Activez votre essai gratuit de 60 jours<\/a><\/div>\n<\/div>\n\n\n<p><em>Auteur de l&#8217;article original en anglais<\/em> :<\/p>\n\n\n    <div class=\"about-author \">\n        <div class=\"about-author__box\">\n            <div class=\"row\">\n                <div class=\"about-author__box-img\">\n                    <img decoding=\"async\" src=\"https:\/\/secure.gravatar.com\/avatar\/193dd3accbb2e467f1b46a7f38ea929d?s=200&#038;r=g\" width=\"200\" height=\"200\" alt=\"Helen Scott\" loading=\"lazy\"  class=\"avatar avatar-200 wp-user-avatar wp-user-avatar-200 photo avatar-default\">\n                <\/div>\n                <div class=\"about-author__box-text\">\n                                            <h4>Helen Scott<\/h4>\n                                                        <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n","protected":false},"author":813,"featured_media":510335,"comment_status":"closed","ping_status":"closed","template":"","categories":[952,1401],"tags":[953,7057],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/pycharm\/517369"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/pycharm"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/types\/pycharm"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/users\/813"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/comments?post=517369"}],"version-history":[{"count":10,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/pycharm\/517369\/revisions"}],"predecessor-version":[{"id":611376,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/pycharm\/517369\/revisions\/611376"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media\/510335"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media?parent=517369"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/categories?post=517369"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/tags?post=517369"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/cross-post-tag?post=517369"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}