
{"id":5707,"date":"2024-01-23T10:34:42","date_gmt":"2024-01-23T09:34:42","guid":{"rendered":"https:\/\/parlonstechs.com\/all\/?p=5707"},"modified":"2024-01-23T10:34:42","modified_gmt":"2024-01-23T09:34:42","slug":"polars-la-bibliotheque-de-frameworks-de-donnees-pour-python-evolue-de-la-version-0-19-0-a-0-20","status":"publish","type":"post","link":"https:\/\/parlonstechs.com\/all\/2024\/01\/23\/polars-la-bibliotheque-de-frameworks-de-donnees-pour-python-evolue-de-la-version-0-19-0-a-0-20\/","title":{"rendered":"Polars, la biblioth\u00e8que de frameworks de donn\u00e9es pour Python, \u00e9volue de la version 0.19.0 \u00e0 0.20,"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/typethepipe.com\/vizs-and-tips\/python-polars-pipe-function-to-one-more-columns\/featured.png\" alt=\"Pipe function in Python Polars. Don't leave the pipe flow! | TypeThePipe\" \/><\/p>\n<h3><b>Polars est une biblioth\u00e8que de frameworks de donn\u00e9es con\u00e7ue pour offrir des performances optimales dans le traitement des donn\u00e9es. Son moteur de requ\u00eate multithread, \u00e9crit en Rust, favorise un parall\u00e9lisme efficace, tandis que son traitement vectoriel et en colonnes assure des algorithmes coh\u00e9rents avec le cache et des performances \u00e9lev\u00e9es sur les processeurs modernes. La conception intuitive de ses expressions facilite l&rsquo;\u00e9criture de code lisible et performant, rendant l&rsquo;utilisation de Polars accessible aux utilisateurs familiaris\u00e9s avec la manipulation de donn\u00e9es.<\/b><\/h3>\n<p>&nbsp;<\/p>\n<p>Polars pr\u00e9sente des caract\u00e9ristiques attrayantes, telles que sa conception ax\u00e9e sur la performance, son traitement multithread et sa facilit\u00e9 d&rsquo;utilisation. Le choix d&rsquo;utiliser Rust pour le moteur de requ\u00eate contribue \u00e0 la robustesse du syst\u00e8me. La comparaison avec d&rsquo;autres solutions sur le benchmark TPCH met en avant ses avantages significatifs en termes de rapidit\u00e9 d&rsquo;ex\u00e9cution, surpassant m\u00eame des biblioth\u00e8ques populaires comme pandas. Cependant, il serait int\u00e9ressant de surveiller l&rsquo;\u00e9volution de Polars au fil du temps, notamment en termes de croissance de la communaut\u00e9 et d&rsquo;ajout de nouvelles fonctionnalit\u00e9s.<\/p>\n<div><img decoding=\"async\" src=\"https:\/\/www.developpez.net\/forums\/attachments\/p649479d1\/a\/a\/a\" \/><\/div>\n<p>Toutefois, une \u00e9valuation plus pouss\u00e9e pourrait mettre en lumi\u00e8re certaines lacunes potentielles. Tout d&rsquo;abord, bien que Polars se targue de sa rapidit\u00e9 sur le benchmark TPCH, il est important de noter que les performances peuvent varier en fonction du contexte d&rsquo;utilisation r\u00e9el et des types de donn\u00e9es sp\u00e9cifiques. Les r\u00e9sultats d&rsquo;un benchmark isol\u00e9 ne sont pas toujours repr\u00e9sentatifs de toutes les situations.<\/p>\n<p>De plus, bien que l&rsquo;accent soit mis sur la facilit\u00e9 d&rsquo;utilisation, la courbe d&rsquo;apprentissage peut donc \u00eatre plus abrupte pour ceux qui ne sont pas d\u00e9j\u00e0 familiaris\u00e9s avec la manipulation de donn\u00e9es. Un autre aspect \u00e0 consid\u00e9rer est la taille de la communaut\u00e9 des d\u00e9veloppeurs. Une communaut\u00e9 plus restreinte peut entra\u00eener des retards dans les mises \u00e0 jour, des probl\u00e8mes de support technique et un manque de diversit\u00e9 dans le d\u00e9veloppement de nouvelles fonctionnalit\u00e9s. Il serait donc crucial de suivre l&rsquo;\u00e9volution de la communaut\u00e9 autour de Polars pour garantir une croissance soutenue.<\/p>\n<p>Les utilisateurs potentiels devraient \u00e9valuer attentivement leurs besoins sp\u00e9cifiques et surveiller de pr\u00e8s l&rsquo;\u00e9volution continue de Polars avant de choisir cette biblioth\u00e8que pour des applications critiques.<\/p>\n<p>Polars a \u00e9t\u00e9 compar\u00e9 \u00e0 plusieurs autres solutions sur l&rsquo;\u00e9chelle de r\u00e9f\u00e9rence TPCH facteur 10. Les benchmarks ont \u00e9t\u00e9 ex\u00e9cut\u00e9s sur un\u00a0<i>gcp n2-highmem-16<\/i>. Il s&rsquo;agit encore d&rsquo;un travail en cours et d&rsquo;autres requ\u00eates\/biblioth\u00e8ques seront bient\u00f4t disponibles. Le benchmark TPCH initial est con\u00e7u pour les bases de donn\u00e9es SQL et ne permet aucune modification du SQL associ\u00e9 \u00e0 cette question sp\u00e9cifique. Les interfaces SQL sont \u00e9valu\u00e9es par rapport aux interfaces DataFrame, n\u00e9cessitant ainsi des ajustements mineurs des r\u00e8gles initiales. Il est n\u00e9cessaire de traduire les requ\u00eates SQL de mani\u00e8re s\u00e9mantique en requ\u00eates idiomatiques adapt\u00e9es \u00e0 l&rsquo;outil h\u00f4te. Pour accomplir cette t\u00e2che, l&rsquo;\u00e9quipe de Polars a observ\u00e9 et suivi scrupuleusement les r\u00e8gles \u00e9nonc\u00e9es ci-dessous :<\/p>\n<ul>\n<li>il n&rsquo;est pas permis d&rsquo;ins\u00e9rer de nouvelles op\u00e9rations, par exemple pas d&rsquo;\u00e9lagage d&rsquo;une table avant une jointure ;<\/li>\n<li>chaque solution doit fournir une requ\u00eate par question, ind\u00e9pendamment de la source de donn\u00e9es et solution doit appeler sa propre API ;<\/li>\n<li>elle est autoris\u00e9e \u00e0 d\u00e9clarer le type de jointures, car cela correspond au raisonnement s\u00e9mantique des API DataFrame ;<\/li>\n<li>une solution doit choisir un seul moteur\/mode pour toutes les requ\u00eates. Il est permis de proposer diff\u00e9rentes solutions du m\u00eame fournisseur, par exemple (sparks-sql, pyspark, polars-sql, polars-default, polars-streaming). Cependant, ces solutions doivent ex\u00e9cuter toutes les requ\u00eates, en montrant leurs forces et leurs faiblesses, pas de \u00ab\u00a0cherry picking\u00a0\u00bb.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<div><img decoding=\"async\" src=\"https:\/\/www.developpez.net\/forums\/attachments\/p649475d1\/a\/a\/a\" \/><\/div>\n<p><b><span style=\"font-size: medium;\">Type de donn\u00e9es Enum<\/span><\/b><\/p>\n<p>La version 0.20.0 introduit le type de donn\u00e9es\u00a0Enum, une nouvelle fa\u00e7on de traiter les donn\u00e9es cat\u00e9gorielles. Il garantit un encodage coh\u00e9rent entre les colonnes ou les ensembles de donn\u00e9es, ce qui rend les op\u00e9rations telles que l&rsquo;ajout ou la fusion plus efficaces sans n\u00e9cessiter de r\u00e9encodage ou de recherches suppl\u00e9mentaires dans le cache.<\/p>\n<p>Ce type de donn\u00e9es est diff\u00e9rent du type Categorical, qui peut entra\u00eener des co\u00fbts de performance dus \u00e0 l&rsquo;inf\u00e9rence des cat\u00e9gories. Toutefois, il est important de noter que le type\u00a0Enum\u00a0ne permet d&rsquo;utiliser que des cat\u00e9gories pr\u00e9d\u00e9finies et que toute valeur non sp\u00e9cifi\u00e9e entra\u00eenera des erreurs.\u00a0Enum\u00a0est une option fiable pour les ensembles de donn\u00e9es dont les valeurs cat\u00e9gorielles sont connues, ce qui am\u00e9liore les performances lors de la manipulation des donn\u00e9es. Exemples d&rsquo;utilisation du nouveau type\u00a0Enum\u00a0:<\/p>\n<p>Example 1<\/p>\n<div class=\"bbcode_container\">\n<table border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td>Code :<\/td>\n<td>S\u00e9lectionner tout<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"26\">\n<div>1<br \/>\n2<br \/>\n3<\/div>\n<\/td>\n<td valign=\"top\">\n<pre>&gt;&gt;&gt; enum_dtype = pl.Enum<span class=\"br0\">(<\/span><span class=\"br0\">[<\/span>\"Polar\", \"Brown\", \"Grizzly\"<span class=\"br0\">]<\/span><span class=\"br0\">)<\/span>\r\n&gt;&gt;&gt; pl.Series<span class=\"br0\">(<\/span><span class=\"br0\">[<\/span>\"Polar\", \"Grizzly\", \"Teddy\"<span class=\"br0\">]<\/span>, dtype=enum_dtype<span class=\"br0\">)<\/span>\r\nComputeError: value 'Teddy' is not present in Enum: LargeUtf8Array<span class=\"br0\">[<\/span>Polar, Brown, Grizzly<span class=\"br0\">]<\/span><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Example 2<\/p>\n<div class=\"bbcode_container\">\n<table border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td>Code :<\/td>\n<td>S\u00e9lectionner tout<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"26\">\n<div>1<br \/>\n2<br \/>\n3<br \/>\n4<\/div>\n<\/td>\n<td valign=\"top\">\n<pre>&gt;&gt;&gt; enum_series = pl.Series<span class=\"br0\">(<\/span><span class=\"br0\">[<\/span>\"Polar\", \"Grizzly\", \"Brown\", \"Brown\", \"Polar\"<span class=\"br0\">]<\/span>, dtype=enum_dtype<span class=\"br0\">)<\/span>\r\n&gt;&gt;&gt; cat_series = pl.Series<span class=\"br0\">(<\/span><span class=\"br0\">[<\/span>\"Teddy\", \"Brown\", \"Brown\", \"Polar\", \"Polar\"<span class=\"br0\">]<\/span><span class=\"br0\">)<\/span>\r\n&gt;&gt;&gt; enum_series.append<span class=\"br0\">(<\/span>cat2_series<span class=\"br0\">)<\/span>\r\nSchemaError: cannot extend\/append Categorical<span class=\"br0\">(<\/span>Some<span class=\"br0\">(<\/span>enum<span class=\"br0\">)<\/span>, Physical<span class=\"br0\">)<\/span> with Utf8<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p><b>Polar Plugins<\/b><\/p>\n<p>Les plugins d&rsquo;expression ont fait leur entr\u00e9e. Ils vous permettent de compiler une UDF (fonction d\u00e9finie par l&rsquo;utilisateur) en Rust et de l&rsquo;enregistrer en tant qu&rsquo;expression dans le binaire principal de Python Polars. Le binaire principal de Python Polars appellera la fonction via FFI. Cela signifie que vous aurez les performances de Rust et tout le parall\u00e9lisme du moteur Polars car il n&rsquo;y a pas de verrouillage GIL.<\/p>\n<p>Un autre avantage est que vous pouvez utiliser toutes les caisses disponibles dans le paysage Rust pour acc\u00e9l\u00e9rer votre logique d&rsquo;entreprise.<\/p>\n<p><b>Acc\u00e9l\u00e9rations algorithmiques<\/b><\/p>\n<p>Polars apporte de nombreuses am\u00e9liorations li\u00e9es aux performances. Voici, ci-dessous, le script pour ex\u00e9cuter le benchmark :<\/p>\n<div class=\"bbcode_container\">\n<table border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td>Code :<\/td>\n<td>S\u00e9lectionner tout<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"33\">\n<div>1<br \/>\n2<br \/>\n3<br \/>\n4<br \/>\n5<br \/>\n6<br \/>\n7<br \/>\n8<br \/>\n9<br \/>\n10<br \/>\n11<br \/>\n12<br \/>\n13<br \/>\n14<br \/>\n15<br \/>\n16<br \/>\n17<br \/>\n18<br \/>\n19<br \/>\n20<br \/>\n21<br \/>\n22<br \/>\n23<br \/>\n24<br \/>\n25<br \/>\n26<br \/>\n27<br \/>\n28<br \/>\n29<br \/>\n30<br \/>\n31<br \/>\n32<br \/>\n33<br \/>\n34<br \/>\n35<br \/>\n36<br \/>\n37<br \/>\n38<br \/>\n39<br \/>\n40<br \/>\n41<br \/>\n42<br \/>\n43<br \/>\n44<br \/>\n45<br \/>\n46<br \/>\n47<br \/>\n48<br \/>\n49<br \/>\n50<br \/>\n51<br \/>\n52<br \/>\n53<br \/>\n54<br \/>\n55<br \/>\n56<br \/>\n57<br \/>\n58<br \/>\n59<br \/>\n60<br \/>\n61<br \/>\n62<\/div>\n<\/td>\n<td valign=\"top\">\n<pre>import numpy as np\r\n\timport pandas as pd\r\n\timport polars as pl\r\n\timport matplotlib.pyplot as plt\r\n\u00a0\r\n\u00a0\r\n\tdef plot_grouped_benchmark_results<span class=\"br0\">(<\/span>results: dict<span class=\"br0\">)<\/span>:\r\n\t    libraries = <span class=\"br0\">[<\/span>\r\n\t        f\"Polars {pl.__version__}\",\r\n\t        f\"Pandas {pd.__version__}\",\r\n\t        f\"NumPy {np.__version__}\",\r\n\t    <span class=\"br0\">]<\/span>\r\n\t    operations = <span class=\"br0\">[<\/span>\"Corr\", \"Cov\"<span class=\"br0\">]<\/span>\r\n\u00a0\r\n\u00a0\r\n\t    data = <span class=\"br0\">{<\/span>\r\n\t        op: <span class=\"br0\">[<\/span>results<span class=\"br0\">[<\/span>f\"{op} with {lib.split()[0]}\"<span class=\"br0\">]<\/span> for lib in libraries<span class=\"br0\">]<\/span>\r\n\t        for op in operations\r\n\t    <span class=\"br0\">}<\/span>\r\n\u00a0\r\n\u00a0\r\n\t    x = range<span class=\"br0\">(<\/span>len<span class=\"br0\">(<\/span>operations<span class=\"br0\">)<\/span><span class=\"br0\">)<\/span>\r\n\u00a0\r\n\u00a0\r\n\t    x = range<span class=\"br0\">(<\/span>len<span class=\"br0\">(<\/span>operations<span class=\"br0\">)<\/span><span class=\"br0\">)<\/span>\r\n\u00a0\r\n\u00a0\r\n\t    custom_colors = <span class=\"br0\">[<\/span>'#0075FF', '#73bfb8', '#26413c'<span class=\"br0\">]<\/span>\r\n\u00a0\r\n\u00a0\r\n\t    plt.figure<span class=\"br0\">(<\/span>figsize=<span class=\"br0\">(<\/span>10, 6<span class=\"br0\">)<\/span><span class=\"br0\">)<\/span>\r\n\u00a0\r\n\u00a0\r\n\t    for i, library in enumerate<span class=\"br0\">(<\/span>libraries<span class=\"br0\">)<\/span>:\r\n\t        plt.bar<span class=\"br0\">(<\/span>\r\n\t            <span class=\"br0\">[<\/span>pos + i * 0.2 for pos in x<span class=\"br0\">]<\/span>,\r\n\t            <span class=\"br0\">[<\/span>data<span class=\"br0\">[<\/span>operation<span class=\"br0\">]<\/span><span class=\"br0\">[<\/span>i<span class=\"br0\">]<\/span> for operation in operations<span class=\"br0\">]<\/span>,\r\n\t            width=0.15,\r\n\t            label=library,\r\n\t            color=custom_colors<span class=\"br0\">[<\/span>i<span class=\"br0\">]<\/span>\r\n\t        <span class=\"br0\">)<\/span>\r\n\u00a0\r\n\u00a0\r\n\t    plt.xlabel<span class=\"br0\">(<\/span>\"Operation\"<span class=\"br0\">)<\/span>\r\n\t    plt.ylabel<span class=\"br0\">(<\/span>\"Average Time (s)\"<span class=\"br0\">)<\/span>\r\n\u00a0\r\n\u00a0\r\n\t    plt.title<span class=\"br0\">(<\/span>\"Benchmarking Results Grouped by Operation\"<span class=\"br0\">)<\/span>\r\n\u00a0\r\n\u00a0\r\n\t    ax = plt.gca<span class=\"br0\">(<\/span><span class=\"br0\">)<\/span>\r\n\t    ax.spines<span class=\"br0\">[<\/span>'right'<span class=\"br0\">]<\/span>.set_visible<span class=\"br0\">(<\/span>False<span class=\"br0\">)<\/span>\r\n\t    ax.spines<span class=\"br0\">[<\/span>'top'<span class=\"br0\">]<\/span>.set_visible<span class=\"br0\">(<\/span>False<span class=\"br0\">)<\/span>\r\n\u00a0\r\n\u00a0\r\n\t    plt.xticks<span class=\"br0\">(<\/span><span class=\"br0\">[<\/span>pos + 0.2 for pos in x<span class=\"br0\">]<\/span>, operations<span class=\"br0\">)<\/span>\r\n\t    plt.legend<span class=\"br0\">(<\/span><span class=\"br0\">)<\/span>\r\n\t    plt.savefig<span class=\"br0\">(<\/span>'algorithmic_speedups_results.png'<span class=\"br0\">)<\/span>\r\n\t    plt.show<span class=\"br0\">(<\/span><span class=\"br0\">)<\/span>\r\n\u00a0\r\n\u00a0\r\n\tplot_grouped_benchmark_results<span class=\"br0\">(<\/span>benchmark_results<span class=\"br0\">)<\/span><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Polars vise \u00e0 cr\u00e9er une API coh\u00e9rente, expressive et lisible. Cependant, cela peut \u00eatre en contradiction avec l&rsquo;\u00e9criture d&rsquo;un code interactif rapide &#8211; par exemple, lors de l&rsquo;exploration de donn\u00e9es dans un carnet de notes.<\/p>\n<p>L&rsquo;\u00e9quipe de d\u00e9veloppement de Polars a r\u00e9cemment annonc\u00e9 la transition de la version 0.19.0 \u00e0 la version 0.20, introduisant le type de donn\u00e9es\u00a0Enum. Bien que Polars soit vant\u00e9 comme une biblioth\u00e8que de frameworks de donn\u00e9es offrant des performances optimales, plusieurs points critiques m\u00e9ritent d&rsquo;\u00eatre examin\u00e9s de plus pr\u00e8s.<\/p>\n<p><b><span style=\"font-size: medium;\">Entre promesses et r\u00e9alit\u00e9s : un regard prudent sur Polars<\/span><\/b><\/p>\n<p>Bien que le moteur de requ\u00eate multithread de Polars, r\u00e9dig\u00e9 en Rust, soit lou\u00e9 pour son parall\u00e9lisme efficace et que son traitement vectoriel en colonnes garantisse des performances \u00e9lev\u00e9es, il est important de souligner que les r\u00e9sultats obtenus sur le benchmark TPCH ne sont pas n\u00e9cessairement repr\u00e9sentatifs de toutes les situations r\u00e9elles. Les performances peuvent varier en fonction du contexte d&rsquo;utilisation et des types de donn\u00e9es sp\u00e9cifiques, remettant en question la fiabilit\u00e9 de l&rsquo;\u00e9valuation bas\u00e9e sur un benchmark isol\u00e9.<\/p>\n<p>&nbsp;<\/p>\n<p>Malgr\u00e9 la conception intuitive de Polars qui facilite l&rsquo;\u00e9criture de code lisible et performant, la courbe d&rsquo;apprentissage peut s&rsquo;av\u00e9rer abrupte pour les utilisateurs non familiers avec la manipulation de donn\u00e9es. Cette caract\u00e9ristique pourrait poser des obstacles \u00e0 l&rsquo;adoption de Polars pour ceux cherchant une solution conviviale et rapide pour l&rsquo;exploration de donn\u00e9es dans un carnet de notes, o\u00f9 l&rsquo;aspect interactif est essentiel.<\/p>\n<p>Un autre point de pr\u00e9occupation r\u00e9side dans la taille de la communaut\u00e9 des d\u00e9veloppeurs autour de Polars. Une communaut\u00e9 plus limit\u00e9e pourrait entra\u00eener des retards dans les mises \u00e0 jour, des probl\u00e8mes de support technique et un manque de diversit\u00e9 dans le d\u00e9veloppement de nouvelles fonctionnalit\u00e9s. La croissance continue de la communaut\u00e9 devrait donc \u00eatre surveill\u00e9e attentivement pour assurer la p\u00e9rennit\u00e9 du projet.<\/p>\n<p>Source :\u00a0<a href=\"https:\/\/pola.rs\/posts\/polars_in_aggregrate-0.20\/\" target=\"_blank\" rel=\"noopener\">Polars<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Polars est une biblioth\u00e8que de frameworks de donn\u00e9es con\u00e7ue pour offrir des performances optimales dans le traitement des donn\u00e9es. Son moteur de requ\u00eate multithread, \u00e9crit en Rust, favorise un parall\u00e9lisme [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":5708,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[21,7,200,12,189],"tags":[],"class_list":["post-5707","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-actualite","category-afrique","category-langage","category-logiciels","category-programmation"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Polars, la biblioth\u00e8que de frameworks de donn\u00e9es pour Python, \u00e9volue de la version 0.19.0 \u00e0 0.20, - Parlons Techs - Store<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/parlonstechs.com\/all\/2024\/01\/23\/polars-la-bibliotheque-de-frameworks-de-donnees-pour-python-evolue-de-la-version-0-19-0-a-0-20\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Polars, la biblioth\u00e8que de frameworks de donn\u00e9es pour Python, \u00e9volue de la version 0.19.0 \u00e0 0.20, - ParlonsTechs\" \/>\n<meta property=\"og:description\" content=\"Polars est une biblioth\u00e8que de frameworks de donn\u00e9es con\u00e7ue pour offrir des performances optimales dans le traitement des donn\u00e9es. Son moteur de requ\u00eate multithread, \u00e9crit en Rust, favorise un parall\u00e9lisme [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/parlonstechs.com\/all\/2024\/01\/23\/polars-la-bibliotheque-de-frameworks-de-donnees-pour-python-evolue-de-la-version-0-19-0-a-0-20\/\" \/>\n<meta property=\"og:site_name\" content=\"Parlons Techs - Store\" \/>\n<meta property=\"article:published_time\" content=\"2024-01-23T09:34:42+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/parlonstechs.com\/all\/wp-content\/uploads\/2024\/01\/social-25.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"900\" \/>\n\t<meta property=\"og:image:height\" content=\"500\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"wisdom\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Polars, la biblioth\u00e8que de frameworks de donn\u00e9es pour Python, \u00e9volue de la version 0.19.0 \u00e0 0.20, - ParlonsTechs\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/parlonstechs.com\/all\/wp-content\/uploads\/2024\/01\/social-25.jpg\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"wisdom\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/parlonstechs.com\\\/all\\\/2024\\\/01\\\/23\\\/polars-la-bibliotheque-de-frameworks-de-donnees-pour-python-evolue-de-la-version-0-19-0-a-0-20\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/parlonstechs.com\\\/all\\\/2024\\\/01\\\/23\\\/polars-la-bibliotheque-de-frameworks-de-donnees-pour-python-evolue-de-la-version-0-19-0-a-0-20\\\/\"},\"author\":{\"name\":\"wisdom\",\"@id\":\"https:\\\/\\\/parlonstechs.com\\\/all\\\/#\\\/schema\\\/person\\\/a93526e9c6c72ccb484abb7008892823\"},\"headline\":\"Polars, la biblioth\u00e8que de frameworks de donn\u00e9es pour Python, \u00e9volue de la version 0.19.0 \u00e0 0.20,\",\"datePublished\":\"2024-01-23T09:34:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/parlonstechs.com\\\/all\\\/2024\\\/01\\\/23\\\/polars-la-bibliotheque-de-frameworks-de-donnees-pour-python-evolue-de-la-version-0-19-0-a-0-20\\\/\"},\"wordCount\":1328,\"image\":{\"@id\":\"https:\\\/\\\/parlonstechs.com\\\/all\\\/2024\\\/01\\\/23\\\/polars-la-bibliotheque-de-frameworks-de-donnees-pour-python-evolue-de-la-version-0-19-0-a-0-20\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/parlonstechs.com\\\/all\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/ab-25.jpg\",\"articleSection\":[\"Actualit\u00e9\",\"Afrique\",\"langage\",\"Logiciels\",\"Programmation\"],\"inLanguage\":\"fr-FR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/parlonstechs.com\\\/all\\\/2024\\\/01\\\/23\\\/polars-la-bibliotheque-de-frameworks-de-donnees-pour-python-evolue-de-la-version-0-19-0-a-0-20\\\/\",\"url\":\"https:\\\/\\\/parlonstechs.com\\\/all\\\/2024\\\/01\\\/23\\\/polars-la-bibliotheque-de-frameworks-de-donnees-pour-python-evolue-de-la-version-0-19-0-a-0-20\\\/\",\"name\":\"Polars, la biblioth\u00e8que de frameworks de donn\u00e9es pour Python, \u00e9volue de la version 0.19.0 \u00e0 0.20, - Parlons Techs - Store\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/parlonstechs.com\\\/all\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/parlonstechs.com\\\/all\\\/2024\\\/01\\\/23\\\/polars-la-bibliotheque-de-frameworks-de-donnees-pour-python-evolue-de-la-version-0-19-0-a-0-20\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/parlonstechs.com\\\/all\\\/2024\\\/01\\\/23\\\/polars-la-bibliotheque-de-frameworks-de-donnees-pour-python-evolue-de-la-version-0-19-0-a-0-20\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/parlonstechs.com\\\/all\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/ab-25.jpg\",\"datePublished\":\"2024-01-23T09:34:42+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/parlonstechs.com\\\/all\\\/#\\\/schema\\\/person\\\/a93526e9c6c72ccb484abb7008892823\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/parlonstechs.com\\\/all\\\/2024\\\/01\\\/23\\\/polars-la-bibliotheque-de-frameworks-de-donnees-pour-python-evolue-de-la-version-0-19-0-a-0-20\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/parlonstechs.com\\\/all\\\/2024\\\/01\\\/23\\\/polars-la-bibliotheque-de-frameworks-de-donnees-pour-python-evolue-de-la-version-0-19-0-a-0-20\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/parlonstechs.com\\\/all\\\/2024\\\/01\\\/23\\\/polars-la-bibliotheque-de-frameworks-de-donnees-pour-python-evolue-de-la-version-0-19-0-a-0-20\\\/#primaryimage\",\"url\":\"https:\\\/\\\/parlonstechs.com\\\/all\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/ab-25.jpg\",\"contentUrl\":\"https:\\\/\\\/parlonstechs.com\\\/all\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/ab-25.jpg\",\"width\":265,\"height\":119},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/parlonstechs.com\\\/all\\\/2024\\\/01\\\/23\\\/polars-la-bibliotheque-de-frameworks-de-donnees-pour-python-evolue-de-la-version-0-19-0-a-0-20\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/parlonstechs.com\\\/all\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Polars, la biblioth\u00e8que de frameworks de donn\u00e9es pour Python, \u00e9volue de la version 0.19.0 \u00e0 0.20,\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/parlonstechs.com\\\/all\\\/#website\",\"url\":\"https:\\\/\\\/parlonstechs.com\\\/all\\\/\",\"name\":\"Parlons Techs - Store\",\"description\":\"Toute L&#039;Actualit\u00e9 sur La Technologie et La Science\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/parlonstechs.com\\\/all\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/parlonstechs.com\\\/all\\\/#\\\/schema\\\/person\\\/a93526e9c6c72ccb484abb7008892823\",\"name\":\"wisdom\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e752642935d05c7ef20c7ff136e0baadd18b8f39f34dbcffed7f1221cb763284?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e752642935d05c7ef20c7ff136e0baadd18b8f39f34dbcffed7f1221cb763284?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e752642935d05c7ef20c7ff136e0baadd18b8f39f34dbcffed7f1221cb763284?s=96&d=mm&r=g\",\"caption\":\"wisdom\"},\"sameAs\":[\"https:\\\/\\\/parlonstechs.com\\\/all\"],\"url\":\"https:\\\/\\\/parlonstechs.com\\\/all\\\/author\\\/wisdom\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Polars, la biblioth\u00e8que de frameworks de donn\u00e9es pour Python, \u00e9volue de la version 0.19.0 \u00e0 0.20, - Parlons Techs - Store","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/parlonstechs.com\/all\/2024\/01\/23\/polars-la-bibliotheque-de-frameworks-de-donnees-pour-python-evolue-de-la-version-0-19-0-a-0-20\/","og_locale":"fr_FR","og_type":"article","og_title":"Polars, la biblioth\u00e8que de frameworks de donn\u00e9es pour Python, \u00e9volue de la version 0.19.0 \u00e0 0.20, - ParlonsTechs","og_description":"Polars est une biblioth\u00e8que de frameworks de donn\u00e9es con\u00e7ue pour offrir des performances optimales dans le traitement des donn\u00e9es. Son moteur de requ\u00eate multithread, \u00e9crit en Rust, favorise un parall\u00e9lisme [&hellip;]","og_url":"https:\/\/parlonstechs.com\/all\/2024\/01\/23\/polars-la-bibliotheque-de-frameworks-de-donnees-pour-python-evolue-de-la-version-0-19-0-a-0-20\/","og_site_name":"Parlons Techs - Store","article_published_time":"2024-01-23T09:34:42+00:00","og_image":[{"width":900,"height":500,"url":"https:\/\/parlonstechs.com\/all\/wp-content\/uploads\/2024\/01\/social-25.jpg","type":"image\/jpeg"}],"author":"wisdom","twitter_card":"summary_large_image","twitter_title":"Polars, la biblioth\u00e8que de frameworks de donn\u00e9es pour Python, \u00e9volue de la version 0.19.0 \u00e0 0.20, - ParlonsTechs","twitter_image":"https:\/\/parlonstechs.com\/all\/wp-content\/uploads\/2024\/01\/social-25.jpg","twitter_misc":{"\u00c9crit par":"wisdom","Dur\u00e9e de lecture estim\u00e9e":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/parlonstechs.com\/all\/2024\/01\/23\/polars-la-bibliotheque-de-frameworks-de-donnees-pour-python-evolue-de-la-version-0-19-0-a-0-20\/#article","isPartOf":{"@id":"https:\/\/parlonstechs.com\/all\/2024\/01\/23\/polars-la-bibliotheque-de-frameworks-de-donnees-pour-python-evolue-de-la-version-0-19-0-a-0-20\/"},"author":{"name":"wisdom","@id":"https:\/\/parlonstechs.com\/all\/#\/schema\/person\/a93526e9c6c72ccb484abb7008892823"},"headline":"Polars, la biblioth\u00e8que de frameworks de donn\u00e9es pour Python, \u00e9volue de la version 0.19.0 \u00e0 0.20,","datePublished":"2024-01-23T09:34:42+00:00","mainEntityOfPage":{"@id":"https:\/\/parlonstechs.com\/all\/2024\/01\/23\/polars-la-bibliotheque-de-frameworks-de-donnees-pour-python-evolue-de-la-version-0-19-0-a-0-20\/"},"wordCount":1328,"image":{"@id":"https:\/\/parlonstechs.com\/all\/2024\/01\/23\/polars-la-bibliotheque-de-frameworks-de-donnees-pour-python-evolue-de-la-version-0-19-0-a-0-20\/#primaryimage"},"thumbnailUrl":"https:\/\/parlonstechs.com\/all\/wp-content\/uploads\/2024\/01\/ab-25.jpg","articleSection":["Actualit\u00e9","Afrique","langage","Logiciels","Programmation"],"inLanguage":"fr-FR"},{"@type":"WebPage","@id":"https:\/\/parlonstechs.com\/all\/2024\/01\/23\/polars-la-bibliotheque-de-frameworks-de-donnees-pour-python-evolue-de-la-version-0-19-0-a-0-20\/","url":"https:\/\/parlonstechs.com\/all\/2024\/01\/23\/polars-la-bibliotheque-de-frameworks-de-donnees-pour-python-evolue-de-la-version-0-19-0-a-0-20\/","name":"Polars, la biblioth\u00e8que de frameworks de donn\u00e9es pour Python, \u00e9volue de la version 0.19.0 \u00e0 0.20, - Parlons Techs - Store","isPartOf":{"@id":"https:\/\/parlonstechs.com\/all\/#website"},"primaryImageOfPage":{"@id":"https:\/\/parlonstechs.com\/all\/2024\/01\/23\/polars-la-bibliotheque-de-frameworks-de-donnees-pour-python-evolue-de-la-version-0-19-0-a-0-20\/#primaryimage"},"image":{"@id":"https:\/\/parlonstechs.com\/all\/2024\/01\/23\/polars-la-bibliotheque-de-frameworks-de-donnees-pour-python-evolue-de-la-version-0-19-0-a-0-20\/#primaryimage"},"thumbnailUrl":"https:\/\/parlonstechs.com\/all\/wp-content\/uploads\/2024\/01\/ab-25.jpg","datePublished":"2024-01-23T09:34:42+00:00","author":{"@id":"https:\/\/parlonstechs.com\/all\/#\/schema\/person\/a93526e9c6c72ccb484abb7008892823"},"breadcrumb":{"@id":"https:\/\/parlonstechs.com\/all\/2024\/01\/23\/polars-la-bibliotheque-de-frameworks-de-donnees-pour-python-evolue-de-la-version-0-19-0-a-0-20\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/parlonstechs.com\/all\/2024\/01\/23\/polars-la-bibliotheque-de-frameworks-de-donnees-pour-python-evolue-de-la-version-0-19-0-a-0-20\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/parlonstechs.com\/all\/2024\/01\/23\/polars-la-bibliotheque-de-frameworks-de-donnees-pour-python-evolue-de-la-version-0-19-0-a-0-20\/#primaryimage","url":"https:\/\/parlonstechs.com\/all\/wp-content\/uploads\/2024\/01\/ab-25.jpg","contentUrl":"https:\/\/parlonstechs.com\/all\/wp-content\/uploads\/2024\/01\/ab-25.jpg","width":265,"height":119},{"@type":"BreadcrumbList","@id":"https:\/\/parlonstechs.com\/all\/2024\/01\/23\/polars-la-bibliotheque-de-frameworks-de-donnees-pour-python-evolue-de-la-version-0-19-0-a-0-20\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/parlonstechs.com\/all\/"},{"@type":"ListItem","position":2,"name":"Polars, la biblioth\u00e8que de frameworks de donn\u00e9es pour Python, \u00e9volue de la version 0.19.0 \u00e0 0.20,"}]},{"@type":"WebSite","@id":"https:\/\/parlonstechs.com\/all\/#website","url":"https:\/\/parlonstechs.com\/all\/","name":"Parlons Techs - Store","description":"Toute L&#039;Actualit\u00e9 sur La Technologie et La Science","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/parlonstechs.com\/all\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Person","@id":"https:\/\/parlonstechs.com\/all\/#\/schema\/person\/a93526e9c6c72ccb484abb7008892823","name":"wisdom","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/secure.gravatar.com\/avatar\/e752642935d05c7ef20c7ff136e0baadd18b8f39f34dbcffed7f1221cb763284?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/e752642935d05c7ef20c7ff136e0baadd18b8f39f34dbcffed7f1221cb763284?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e752642935d05c7ef20c7ff136e0baadd18b8f39f34dbcffed7f1221cb763284?s=96&d=mm&r=g","caption":"wisdom"},"sameAs":["https:\/\/parlonstechs.com\/all"],"url":"https:\/\/parlonstechs.com\/all\/author\/wisdom\/"}]}},"_links":{"self":[{"href":"https:\/\/parlonstechs.com\/all\/wp-json\/wp\/v2\/posts\/5707","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/parlonstechs.com\/all\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/parlonstechs.com\/all\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/parlonstechs.com\/all\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/parlonstechs.com\/all\/wp-json\/wp\/v2\/comments?post=5707"}],"version-history":[{"count":1,"href":"https:\/\/parlonstechs.com\/all\/wp-json\/wp\/v2\/posts\/5707\/revisions"}],"predecessor-version":[{"id":5710,"href":"https:\/\/parlonstechs.com\/all\/wp-json\/wp\/v2\/posts\/5707\/revisions\/5710"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/parlonstechs.com\/all\/wp-json\/wp\/v2\/media\/5708"}],"wp:attachment":[{"href":"https:\/\/parlonstechs.com\/all\/wp-json\/wp\/v2\/media?parent=5707"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/parlonstechs.com\/all\/wp-json\/wp\/v2\/categories?post=5707"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/parlonstechs.com\/all\/wp-json\/wp\/v2\/tags?post=5707"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}