{"id":514407,"date":"2024-10-01T15:32:25","date_gmt":"2024-10-01T14:32:25","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=pycharm&#038;p=514407"},"modified":"2025-09-16T15:43:50","modified_gmt":"2025-09-16T14:43:50","slug":"interactive-tables-for-data-science","status":"publish","type":"pycharm","link":"https:\/\/blog.jetbrains.com\/en\/pycharm\/2024\/10\/interactive-tables-for-data-science","title":{"rendered":"PyCharm\u2019s Interactive Tables for Data Science"},"content":{"rendered":"\n<p>Data cleaning, exploration, and visualization are some of the most time-consuming tasks for data scientists. Nearly 50% of data specialists dedicate <a href=\"https:\/\/www.jetbrains.com\/lp\/devecosystem-2023\/data-science\/#ds_perc_spent\" target=\"_blank\" rel=\"noreferrer noopener\">30% or more of their time to data preparation<\/a>. The <a href=\"https:\/\/blog.jetbrains.com\/pycharm\/2024\/07\/polars-vs-pandas\/\" target=\"_blank\" rel=\"noreferrer noopener\">pandas and Polars libraries<\/a> are widely used for these purposes, each offering unique advantages. <a href=\"https:\/\/www.jetbrains.com\/pycharm\/data-science\/\" target=\"_blank\" rel=\"noreferrer noopener\">PyCharm<\/a> supports both libraries, enabling users to efficiently explore, clean, and visualize data, even with large datasets. <\/p>\n\n\n\n<p>In this blog post, you&#8217;ll discover how PyCharm&#8217;s interactive tables can enhance your productivity when working with either Polars or pandas. You will also learn how to perform many different data exploration tasks without writing any code and how to use JetBrains AI Assistant for data analysis.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"2560\" height=\"1440\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2024\/09\/pc-featured_blog_1280x720_en-6.png\" alt=\"\" class=\"wp-image-514737\"\/><\/figure>\n\n\n\n<!--more-->\n\n\n\n<h2 class=\"wp-block-heading\">Getting started&nbsp;<\/h2>\n\n\n\n<p>To start using pandas for data analysis, import the library and load data from a file using <em>pd.read_csv(&#8220;FileName&#8221;)<\/em>, or drag and drop a CSV file into a Jupyter notebook. If you\u2019re using Polars, import the library and use <em>pl.read_csv(&#8220;FileName\/path to the file&#8221;)<\/em> to load data into a DataFrame. Then, print the dataset just by using the name of the variable.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">PyCharm\u2019s interactive tables \u2013 key features and uses<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Browse, sort, and view datasets<\/h3>\n\n\n\n<p>Interactive tables offer a wide range of features that allow you to easily explore your data. For example, you can navigate through your data with infinite horizontal and vertical scrolling, use single and multiple column sorting, and many other features.<\/p>\n\n\n\n<figure class=\"wp-block-video\"><video controls src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2024\/09\/Tables-Beginning-4K-3.mp4\"><\/video><\/figure>\n\n\n\n<p>This feature allows you to sort columns alphabetically or maintain the existing column order. You can also find specific columns by typing the column name in the <em>Column List <\/em>menu. Through the context menu or <em>Column List<\/em>, you can selectively hide or display columns. For deeper analysis, you can hide all but the essential columns or use the <em>Hide Other Columns<\/em> option to focus on a single column.<\/p>\n\n\n\n<figure class=\"wp-block-video\"><video controls src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2024\/09\/columns-HD-1080p.mov\"><\/video><\/figure>\n\n\n\n<p>Finally, you can open your dataframe in a separate window for even more in-depth analysis.<\/p>\n\n\n\n<figure class=\"wp-block-video\"><video controls src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2024\/09\/bigwindow-HD-1080p.mov\"><\/video><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Explore your data&nbsp;<\/h3>\n\n\n\n<p>You can easily understand data types directly from column headers. For example, <img decoding=\"async\" loading=\"lazy\" width=\"20\" height=\"23\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/AD_4nXfpXAbtnlxFupee8tOHs_birta9DnEduiPWQOV3V6nl5mGl3tIgSqWSzFiSszhn3hd0lv5RTrDzC3osBnsMn9QajPwFBtavvWZ4C477OJATXwq3aR__LM5WhBQroYO4sKS7ENXtreuyYm5aRXlUsDGHHRBf.png\"> is used for a data type object, while <img decoding=\"async\" loading=\"lazy\" width=\"23\" height=\"23\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/AD_4nXeiEKDmwYd4lsjJSbPcYC7v7oCpq2ehRkI1arNfGe7rXNjJIx5VlAQMYSuz1SQEYDosWuv_qHbIveWwcaLrCMYX8pne3mqFv9jK03VYiaS5P5WAS3y3y9XHIH19LibhowyUHnT6-EMwCB-Nq_aUMwQ3InHX.png\"> indicates numeric data.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img decoding=\"async\" loading=\"lazy\" width=\"662\" height=\"220\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2024\/09\/image-42.png\" alt=\"Data Types\" class=\"wp-image-514454\" style=\"aspect-ratio:3.0090909090909093;width:356px;height:auto\"\/><\/figure>\n\n\n\n<p>Additionally, you can access descriptive statistics by hovering over column headers in <em><a href=\"https:\/\/www.jetbrains.com\/help\/pycharm\/working-with-cell-outputs.html#viewing-column-statistics\" data-type=\"link\" data-id=\"https:\/\/www.jetbrains.com\/help\/pycharm\/working-with-cell-outputs.html#viewing-column-statistics\" target=\"_blank\" rel=\"noreferrer noopener\">Compact mode<\/a><\/em> or view them directly in <em><a href=\"https:\/\/www.jetbrains.com\/help\/pycharm\/working-with-cell-outputs.html#viewing-column-statistics\" data-type=\"link\" data-id=\"https:\/\/www.jetbrains.com\/help\/pycharm\/working-with-cell-outputs.html#viewing-column-statistics\" target=\"_blank\" rel=\"noreferrer noopener\">Detailed mode<\/a><\/em>, where distribution histograms are also available.<\/p>\n\n\n\n<p><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/AD_4nXf40PVNH8WcZQUH2TlSu7THdDmNGxOlvdm9iSGXGQhi1iK1NR9UHkX72rPneZro18Ctc6d_-EiJL5oDwSLzy1SN5X2-z8eOYuXgvT_lc4GBovLutKII_fPLpk_mv3h-VwwjTi9nno2D8esD4O4rbFluZnLq.png\" width=\"615\" height=\"278\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Create code-free data visualizations<\/h3>\n\n\n\n<p>Interactive tables also offer several features available in the <em><a href=\"https:\/\/www.jetbrains.com\/help\/pycharm\/working-with-cell-outputs.html#charts_py_ds\" target=\"_blank\" rel=\"noopener\">Chart view<\/a><\/em> section.<\/p>\n\n\n\n<ul>\n<li>No-code chart creation, allowing you to visualize data effortlessly.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-video\"><video controls src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2024\/09\/Graphs-Builder-4K-2.mp4\"><\/video><\/figure>\n\n\n\n<ul>\n<li>Ability to <a href=\"https:\/\/www.jetbrains.com\/help\/pycharm\/working-with-cell-outputs.html#configure-charts-py-ds\" target=\"_blank\" rel=\"noreferrer noopener\">compare graphs<\/a>.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"2752\" height=\"746\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2024\/09\/Screenshot-2024-09-30-at-13.20.27.png\" alt=\"Graphs comparison \" class=\"wp-image-514668\"\/><\/figure>\n\n\n\n<ul>\n<li>Ability to save your charts with one click.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-video\"><video controls src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2024\/09\/export-HD-1080p.mp4\"><\/video><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Use AI Assistant for data analysis and visualization<\/h3>\n\n\n\n<p>You can access the AI Assistant in the upper-left corner of the tables for the following purposes:<\/p>\n\n\n\n<ul>\n<li>To access insights about your data quickly with AI Assistant.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-video\"><video controls src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2024\/09\/Explain-dataframe-4K-1.mp4\"><\/video><\/figure>\n\n\n\n<ul>\n<li>Use AI Assistant to visualize your data. <\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-video\"><video controls src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2024\/09\/AI-Visual-4K-1.mp4\"><\/video><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Using interactive tables for reliable Exploratory Data Analysis (EDA)<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Why is EDA important?&nbsp;<\/h3>\n\n\n\n<p>Exploratory Data Analysis (EDA) is a crucial step in data science, as it allows data scientists to understand the underlying structure and patterns within a dataset before applying any modeling techniques. EDA helps you identify anomalies, detect outliers, and uncover relationships among variables \u2013 all of which are essential for making informed decisions.<\/p>\n\n\n\n<p>Interactive tables offer many features that allow you to explore your data faster and get reliable results.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Spotting statistics, patterns, and outliers&nbsp;<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Viewing the dataset information<\/h4>\n\n\n\n<p>Let\u2019s look at a real-life example of how the tables could boost the productivity of your EDA. For this example, we will use the <em>Bengaluru House Dataset<\/em><strong>. <\/strong>Normally we start with an overview of our data. This includes just viewing it to understand the size of the dataset, data types of the columns, and so on. While you can certainly do this with the help of code, using interactive tables allows you to get this data without code. So, in our example, the size of the dataset is 13,320 rows and 9 columns, as you can see in the table header.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img decoding=\"async\" loading=\"lazy\" width=\"720\" height=\"64\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2024\/09\/Screenshot-2024-09-30-at-13.10.33.png\" alt=\"Rows and columns information\" class=\"wp-image-514612\" style=\"aspect-ratio:11.25;width:422px;height:auto\"\/><\/figure>\n\n\n\n<p>Our dataset also contains different data types, including numeric and string data. This means we can use different techniques for working with data, including correlation analysis and others.<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" loading=\"lazy\" width=\"804\" height=\"70\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2024\/10\/image.png\" alt=\"Data types\" class=\"wp-image-515818\" style=\"aspect-ratio:11.485714285714286;width:420px;height:auto\"\/><\/figure>\n\n\n\n<p>And of course you can take a look at the data with the help of infinite scrolling and other features we mentioned above.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Performing statistical analysis<\/h4>\n\n\n\n<p>After getting acquainted with the data, the next step might be more in-depth analysis of the statistics. PyCharm provides a lot of important information about the columns in the table headers, including missing data, mode, mean, median, and so on.<br>For example, here we see that many columns have missing data. In the &#8220;<em>bath<\/em>&#8221; column, we obviously have an outlier, as the max value significantly exceeds the 95th percentile.<\/p>\n\n\n\n<p><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/AD_4nXf40PVNH8WcZQUH2TlSu7THdDmNGxOlvdm9iSGXGQhi1iK1NR9UHkX72rPneZro18Ctc6d_-EiJL5oDwSLzy1SN5X2-z8eOYuXgvT_lc4GBovLutKII_fPLpk_mv3h-VwwjTi9nno2D8esD4O4rbFluZnLq.png\" width=\"615\" height=\"278\"><\/p>\n\n\n\n<p>Additionally, data type mismatches, such as <em>&#8220;total_sqft&#8221;<\/em> not being a float or integer, indicate inconsistencies that could impact data processing and analysis.<\/p>\n\n\n\n<p><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/AD_4nXfuzZF3CE5iEpVJ1wOaQAH94rXHaWb54RoH_DGOwyJIhqQvJt86HTKvjiU-EVkHSf0qAfGBuRO54phx_HG-VAlWfzf3nWyk01HjVTin8DwmrRgx4AXSwjGPr7uMoWWVBP_Lz7eMYZdmXrjJl2PcsXD3znqh.png\" width=\"243\" height=\"188\"><\/p>\n\n\n\n<p>After sorting, we notice one possible reason for the problem: the use of text values in data and ranges instead of normal numerical values.<\/p>\n\n\n\n<figure class=\"wp-block-video\"><video controls src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2024\/09\/Mistype-4K-1.mp4\"><\/video><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Analyzing the data using AI<\/h4>\n\n\n\n<p>Additionally, if our dataset doesn\u2019t have hundreds of columns, we can use the help of AI Assistant and ask it to explain the DataFrame. From there, we can prompt it with any important questions, such as \u201cWhat data problems in the dataset should be addressed and how?\u201d<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"3456\" height=\"2159\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2024\/09\/Screenshot-2024-09-30-at-13.13.05.png\" alt=\"AI Assistant\" class=\"wp-image-514634\"\/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Visualizing data with built-in charting<\/h4>\n\n\n\n<p>In some cases, data visualization can help you understand your data. PyCharm interactive tables provide two options for that. The first is <em>Chart View<\/em> and the second is <em>Generate Visualizations in Chat<\/em>.&nbsp;<\/p>\n\n\n\n<p>Let\u2019s say my hypothesis is that the price of a house should be correlated with its total floor area. In other words, the bigger a house is, the more expensive it should be. In this case, I can use a scatter plot in <em>Chart View<\/em> and discover that my hypothesis is likely correct.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><img decoding=\"async\" style=\"width: 2000px;\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/AD_4nXfI5fPmrcSOiLxJm6OrEPVeg8QE6isGu-swpSC5B9FdcXfkvUS3NwCIcaCoSUD6iVz4V5S_Q0bY3kMYtgvnP9j5dpYSB5cjNoVagSfcjGX2WpO3HY0BOjy_jbTfqv7pKOABbf7319j-UzgEtZeCTisanG4.png\"><\/h2>\n\n\n\n<h2 class=\"wp-block-heading\">Wrapping up<\/h2>\n\n\n\n<p>PyCharm Professional\u2019s interactive tables offer numerous benefits that significantly boost your productivity in data exploration and data cleaning. The tables allow you to work with the most popular data science library, pandas, and the fast-growing framework Polars, without writing any code. This is because the tables provide features like browsing, sorting, and viewing datasets; code-free visualizations; and AI-assisted insights.<\/p>\n\n\n\n<p>Interactive tables in PyCharm not only save your time but also reduce the complexity of data manipulation tasks, allowing you to focus on deriving meaningful insights instead of writing boilerplate code for basic tasks.<\/p>\n\n\n\n<p><a href=\"https:\/\/www.jetbrains.com\/pycharm\/download\/\" target=\"_blank\" rel=\"noreferrer noopener\">Download PyCharm Professional<\/a>&nbsp;and get an extended 60-day trial by using the promo code \u201c<strong>PyCharmNotebooks<\/strong>\u201d. The free subscription is available for individual users only.<\/p>\n\n\n    <div class=\"buttons\">\n        <div class=\"buttons__row\">\n                                                <a href=\"https:\/\/jb.gg\/mvp4bw\" class=\"btn\" target=\"_blank\" rel=\"noopener\">Activate your 60-day trial<\/a>\n                                                    <\/div>\n    <\/div>\n\n\n\n\n\n\n\n<p>For more information on interactive tables in PyCharm, check out our related blogs, guides, and documentation:<\/p>\n\n\n\n<ul>\n<li><a href=\"https:\/\/www.jetbrains.com\/help\/pycharm\/working-with-cell-outputs.html#tables\" target=\"_blank\" rel=\"noopener\">Interactive Tables Documentation<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/blog.jetbrains.com\/pycharm\/2024\/07\/polars-vs-pandas\/\">Polars vs. pandas: What\u2019s the Difference?<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/blog.jetbrains.com\/pycharm\/2024\/06\/how-to-move-from-pandas-to-polars\/\">How to Move From pandas to Polars<\/a><\/li>\n<\/ul>\n","protected":false},"author":1407,"featured_media":515107,"comment_status":"closed","ping_status":"closed","template":"","categories":[],"tags":[],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/pycharm\/514407"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/pycharm"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/types\/pycharm"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/users\/1407"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/comments?post=514407"}],"version-history":[{"count":10,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/pycharm\/514407\/revisions"}],"predecessor-version":[{"id":611735,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/pycharm\/514407\/revisions\/611735"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/media\/515107"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/media?parent=514407"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/categories?post=514407"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/tags?post=514407"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/cross-post-tag?post=514407"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}