{"id":323,"date":"2023-08-11T05:12:58","date_gmt":"2023-08-11T04:12:58","guid":{"rendered":"https:\/\/datascihubs.com\/?p=323"},"modified":"2023-09-14T20:48:36","modified_gmt":"2023-09-14T12:48:36","slug":"a-complete-guide-to-pandas-in-python","status":"publish","type":"post","link":"https:\/\/datascihubs.com\/index.php\/2023\/08\/11\/a-complete-guide-to-pandas-in-python\/","title":{"rendered":"A Complete Guide to Pandas in Python"},"content":{"rendered":"\n<p class=\"has-text-align-justify\">Pandas in Python is a widely used library for data scientists. It emerges as a foundation library for data manipulation and analysis. If you are contemplating working with any type of data, Pandas is the go-to tool for data cleaning, transforming, and exploring complex datasets. In this article, we will see the concepts of data exploration and some Pandas functions that are commonly used.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Table of Contents<\/h4>\n\n\n\n<div class=\"wp-block-aioseo-table-of-contents\"><ul><li><a href=\"#aioseo-introduction-to-pandas-in-python\">Introduction to Pandas in Python<\/a><ul><li><a href=\"#aioseo-versatile-data-types\">Versatile Data Types<\/a><\/li><li><a href=\"#aioseo-data-cleaning-and-transformation\">Data Cleaning and Transformation<\/a><\/li><li><a href=\"#aioseo-compatibility-with-libraries\">Compatibility with Libraries<\/a><\/li><\/ul><\/li><li><a href=\"#aioseo-top-pandas-data-exploration-functions\">Top Pandas Data Exploration Functions<\/a><\/li><\/ul><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-introduction-to-pandas-in-python\">Introduction to Pandas in Python<\/h2>\n\n\n\n<p class=\"has-text-align-justify\">Pandas in Python serves as a bridge between the raw data you have and the insights you seek. Think of it as a data powerhouse that enables you to clean, transform, and explore your datasets with unmatched ease. There are two fundamental data structures at the core of Pandas library: <strong>Series<\/strong> and <strong>DataFrame<\/strong>. A Series is like a column in an Excel spreadsheet, it holds data of a single type, such as numbers or strings. DataFrame, on the other hand, is just like the entire spreadsheet, a two-dimensional table containing multiple columns and rows. Here are some benefits Pandas offers:<\/p>\n\n\n\n<h3 class=\"wp-block-heading has-medium-font-size\" id=\"aioseo-versatile-data-types\"><strong>Versatile Data Types<\/strong><\/h3>\n\n\n\n<p>DataFrame can combine a wide range of data types within a single structure, including integers, floats, strings, and even more complex data structures like lists and dictionaries.<\/p>\n\n\n\n<h3 class=\"wp-block-heading has-medium-font-size\" id=\"aioseo-data-cleaning-and-transformation\"><strong>Data Cleaning and Transformation<\/strong><\/h3>\n\n\n\n<p class=\"has-text-align-justify\">By converting the dataset into Pandas&#8217; DataFrame format, we could utilize functions provided by Pandas to perform data manipulation and apply mathematical operations. <\/p>\n\n\n\n<h3 class=\"wp-block-heading has-medium-font-size\" id=\"aioseo-compatibility-with-libraries\" style=\"font-style:normal;font-weight:500\">Compatibility with Libraries<\/h3>\n\n\n\n<p class=\"has-text-align-justify\">Pandas is compatible with a wide range of Python libraries and tools, making it an integral part of end-to-end data analysis workflows. For example, it seamlessly integrates with popular visualization libraries like Matplotlib and Seaborn. <\/p>\n\n\n\n<p class=\"has-medium-font-size\" style=\"font-style:normal;font-weight:500\">Community and Documentation<\/p>\n\n\n\n<p>Most importantly, it has a huge community, which means there is a wealth of resources, tutorials, and documentation available for learning and troubleshooting. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-top-pandas-data-exploration-functions\">Top Pandas Data Exploration Functions<\/h2>\n\n\n\n<p>In this section, I will show some useful Pandas functions on an online store&#8217;s sales dataset. <\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes has-small-font-size\"><table class=\"has-black-color has-text-color has-fixed-layout\" style=\"border-width:3px\"><thead><tr><th>ID<\/th><th>Product<\/th><th>Category<\/th><th>Price<\/th><th>Quantity<\/th><\/tr><\/thead><tbody><tr><td>1<\/td><td>Laptop<\/td><td>Electronics<\/td><td>800<\/td><td>10<\/td><\/tr><tr><td>2<\/td><td>Tablet<\/td><td>Electronics<\/td><td>300<\/td><td>15<\/td><\/tr><tr><td>3<\/td><td>Shirt<\/td><td>Clothing<\/td><td>25<\/td><td>50<\/td><\/tr><tr><td>4<\/td><td>Jeans<\/td><td>Clothing<\/td><td>40<\/td><td>30<\/td><\/tr><tr><td>5<\/td><td>Book<\/td><td>Books<\/td><td>15<\/td><td>100<\/td><\/tr><tr><td>6<\/td><td>Headphones<\/td><td>Electronics<\/td><td>50<\/td><td>25<\/td><\/tr><tr><td>7<\/td><td>Dress<\/td><td>Clothing<\/td><td>35<\/td><td>40<\/td><\/tr><tr><td>8<\/td><td>Phone<\/td><td>Electronics<\/td><td>600<\/td><td>8<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code># Python code to generate the online store sales \nimport pandas as pd\n\ndata = {\n    'ID': &#91;1, 2, 3, 4, 5, 6, 7, 8],\n    'Product': &#91;'Laptop', 'Tablet', 'Shirt', 'Jeans', 'Book', 'Headphones', 'Dress', 'Phone'],\n    'Category': &#91;'Electronics', 'Electronics', 'Clothing', 'Clothing', 'Books', 'Electronics', 'Clothing', 'Electronics'],\n    'Price': &#91;800, 300, 25, 40, 15, 50, 35, 600],\n    'Quantity': &#91;10, 15, 50, 30, 100, 25, 40, 8]\n}\n\ndf = pd.DataFrame(data)<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-palette-color-4-color has-alpha-channel-opacity has-palette-color-4-background-color has-background is-style-wide\" style=\"margin-top:var(--wp--preset--spacing--70);margin-bottom:var(--wp--preset--spacing--70)\"\/>\n\n\n\n<p><strong>1.  <code>head()<\/code> and <code>tail()<\/code><\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>head()<\/code>: Returns the first few rows of a DataFrame. By default, it shows the first five rows, but you can specify the number of rows you want to display.<\/li>\n\n\n\n<li><code>tail()<\/code>: Returns the last few rows of a DataFrame. Like <code>head()<\/code>, it shows the last five rows by default.<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code># Display the first few rows of the DataFrame\nprint(\"First 3 rows:\")\nprint(df.head(3))<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-table is-style-stripes has-small-font-size\"><table class=\"has-black-color has-text-color has-fixed-layout\" style=\"border-width:3px\"><thead><tr><th>ID<\/th><th>Product<\/th><th>Category<\/th><th>Price<\/th><th>Quantity<\/th><\/tr><\/thead><tbody><tr><td>1<\/td><td>Laptop<\/td><td>Electronics<\/td><td>800<\/td><td>10<\/td><\/tr><tr><td>2<\/td><td>Tablet<\/td><td>Electronics<\/td><td>300<\/td><td>15<\/td><\/tr><tr><td>3<\/td><td>Shirt<\/td><td>Clothing<\/td><td>25<\/td><td>50<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code># Display the last few rows of the DataFrame\nprint(\"Last 3 rows:\")\nprint(df.tail(3))<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-table is-style-stripes has-small-font-size\"><table class=\"has-black-color has-text-color has-fixed-layout\" style=\"border-width:3px\"><thead><tr><th>ID<\/th><th>Product<\/th><th>Category<\/th><th>Price<\/th><th>Quantity<\/th><\/tr><\/thead><tbody><tr><td>6<\/td><td>Headphones<\/td><td>Electronics<\/td><td>50<\/td><td>25<\/td><\/tr><tr><td>7<\/td><td>Dress<\/td><td>Clothing<\/td><td>35<\/td><td>40<\/td><\/tr><tr><td>8<\/td><td>Phone<\/td><td>Electronics<\/td><td>600<\/td><td>8<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-palette-color-4-color has-alpha-channel-opacity has-palette-color-4-background-color has-background is-style-wide\" style=\"margin-top:var(--wp--preset--spacing--70);margin-bottom:var(--wp--preset--spacing--70)\"\/>\n\n\n\n<p><strong>2. <code>info()<\/code><\/strong><\/p>\n\n\n\n<p class=\"has-text-align-justify\"><strong><code>info()<\/code><\/strong> provides a concise summary of a DataFrame, including data types, non-null counts, and memory usage. This is useful to quickly understand the structure of your dataset.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Get a summary of the DataFrame\nprint(\"DataFrame summary:\")\nprint(df.info())<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table class=\"has-fixed-layout\"><thead><tr><th>#<\/th><th>Columns<\/th><th>Non-Null Count<\/th><th>Dtype<\/th><\/tr><\/thead><tbody><tr><td>0<\/td><td>ID<\/td><td>8 non-null<\/td><td>int64<\/td><\/tr><tr><td>1<\/td><td>Product<\/td><td>8 non-null<\/td><td>object<\/td><\/tr><tr><td>2<\/td><td>Category<\/td><td>8 non-null<\/td><td>object<\/td><\/tr><tr><td>3<\/td><td>Price<\/td><td>8 non-null<\/td><td>int64<\/td><\/tr><tr><td>4<\/td><td>Quantity<\/td><td>8 non-null<\/td><td>int64<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-palette-color-4-color has-alpha-channel-opacity has-palette-color-4-background-color has-background is-style-wide\" style=\"margin-top:var(--wp--preset--spacing--70);margin-bottom:var(--wp--preset--spacing--70)\"\/>\n\n\n\n<p><strong>3. <code>describe()<\/code><\/strong><\/p>\n\n\n\n<p class=\"has-text-align-justify\"><strong><code>describe()<\/code><\/strong> generates descriptive statistics for numerical columns in a DataFrame. It provides information like mean, standard deviation, minimum, maximum, and quartile values.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Generate descriptive statistics for numerical columns\nprint(\"Descriptive statistics:\")\nprint(df.describe())<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table class=\"has-fixed-layout\"><thead><tr><th><\/th><th>ID<\/th><th>Price<\/th><th>Quantity<\/th><\/tr><\/thead><tbody><tr><td>count<\/td><td>8.00000<\/td><td>8.00000<\/td><td>8.000000<\/td><\/tr><tr><td>mean<\/td><td>4.50000<\/td><td>233.12500<\/td><td>34.750000<\/td><\/tr><tr><td>std<\/td><td>2.44949<\/td><td>307.38456<\/td><td>30.127112<\/td><\/tr><tr><td>min<\/td><td>1.00000<\/td><td>15.00000<\/td><td>8.000000<\/td><\/tr><tr><td>25%<\/td><td>2.75000<\/td><td>32.50000<\/td><td>13.750000<\/td><\/tr><tr><td>50%<\/td><td>4.50000<\/td><td>45.00000<\/td><td>27.500000<\/td><\/tr><tr><td>75%<\/td><td>6.25000<\/td><td>375.00000<\/td><td>42.500000<\/td><\/tr><tr><td>max<\/td><td>8.00000<\/td><td>800.00000<\/td><td>100.00000<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Note: Non-numeric data cannot be shown in the table.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-palette-color-4-color has-alpha-channel-opacity has-palette-color-4-background-color has-background is-style-wide\" style=\"margin-top:var(--wp--preset--spacing--70);margin-bottom:var(--wp--preset--spacing--70)\"\/>\n\n\n\n<p><strong>4. value_counts()<\/strong><\/p>\n\n\n\n<p class=\"has-text-align-justify\"><strong><code>value_counts()<\/code><\/strong> returns a Series with the count of unique values in a specified column. It&#8217;s particularly useful for understanding the distribution of categorical data.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Count the occurrences of each category in the 'Category' column\nprint(\"Value counts for 'Category' column:\")\nprint(df&#91;'Category'].value_counts())<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table class=\"has-fixed-layout\"><thead><tr><th>Category<\/th><th>Count<\/th><\/tr><\/thead><tbody><tr><td>Electronics<\/td><td>4<\/td><\/tr><tr><td>Clothing<\/td><td>3<\/td><\/tr><tr><td>Books<\/td><td>1<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-palette-color-4-color has-alpha-channel-opacity has-palette-color-4-background-color has-background is-style-wide\" style=\"margin-top:var(--wp--preset--spacing--70);margin-bottom:var(--wp--preset--spacing--70)\"\/>\n\n\n\n<p>5. <code>groupby()<\/code><\/p>\n\n\n\n<p class=\"has-text-align-justify\"><strong><code>groupby()<\/code><\/strong> splits the data into groups based on a specified criterion, typically a column. This function is often followed by an aggregation operation, like <code>sum()<\/code>, <code>mean()<\/code>, or <code>count()<\/code>, to compute summary statistics within each group.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Group the data by 'Category' and calculate the total quantity in each category\nprint(\"\\nGrouped by 'Category' with total quantity:\")\nprint(df.groupby('Category')&#91;'Quantity'].sum())<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table class=\"has-fixed-layout\"><thead><tr><th>Category<\/th><th>Quantity<\/th><\/tr><\/thead><tbody><tr><td>Books<\/td><td>100<\/td><\/tr><tr><td>Clothing<\/td><td>120<\/td><\/tr><tr><td>Electronics<\/td><td>58<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-palette-color-4-color has-alpha-channel-opacity has-palette-color-4-background-color has-background is-style-wide\" style=\"margin-top:var(--wp--preset--spacing--70);margin-bottom:var(--wp--preset--spacing--70)\"\/>\n\n\n\n<p>6. <code>pivot_table()<\/code><\/p>\n\n\n\n<p class=\"has-text-align-justify\"><strong><code>pivot_table()<\/code><\/strong> creates a pivot table that summarizes data in a more structured format. You can define rows, columns, and values to create a multidimensional summary of the data.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Create a pivot table to show average price for each category\npivot_table = df.pivot_table(index='Category', values='Price', aggfunc='mean')\nprint(\"Pivot table for average price:\")\nprint(pivot_table)<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table class=\"has-fixed-layout\"><thead><tr><th>Category<\/th><th>Price<\/th><\/tr><\/thead><tbody><tr><td>Books<\/td><td>15.00000<\/td><\/tr><tr><td>Clothing<\/td><td>33.33333<\/td><\/tr><tr><td>Electronics<\/td><td>437.50000<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-palette-color-4-color has-alpha-channel-opacity has-palette-color-4-background-color has-background is-style-wide\" style=\"margin-top:var(--wp--preset--spacing--70);margin-bottom:var(--wp--preset--spacing--70)\"\/>\n\n\n\n<p>7. <code>isnull()<\/code> <\/p>\n\n\n\n<p class=\"has-text-align-justify\"><strong><code>isnull()<\/code> <\/strong>returns a DataFrame of the same shape as the input, with <code>True<\/code> for missing values (NaN) and <code>False<\/code> otherwise.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Check for missing values\nprint(\"\\nMissing values check:\")\nprint(df.isnull())<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table class=\"has-fixed-layout\"><thead><tr><th><\/th><th>ID Product<\/th><th>Product <\/th><th>Category <\/th><th>Price<\/th><th>Quantity<\/th><\/tr><\/thead><tbody><tr><td>0<\/td><td>False<\/td><td>False<\/td><td>False<\/td><td>False<\/td><td>False<\/td><\/tr><tr><td>1<\/td><td>False<\/td><td>False<\/td><td>False<\/td><td>False<\/td><td>False<\/td><\/tr><tr><td>2<\/td><td>False<\/td><td>False<\/td><td>False<\/td><td>False<\/td><td>False<\/td><\/tr><tr><td>3<\/td><td>False<\/td><td>False<\/td><td>False<\/td><td>False<\/td><td>False<\/td><\/tr><tr><td>4<\/td><td>False<\/td><td>False<\/td><td>False<\/td><td>False<\/td><td>False<\/td><\/tr><tr><td>5<\/td><td>False<\/td><td>False<\/td><td>False<\/td><td>False<\/td><td>False<\/td><\/tr><tr><td>6<\/td><td>False<\/td><td>False<\/td><td>False<\/td><td>False<\/td><td>False<\/td><\/tr><tr><td>7<\/td><td>False<\/td><td>False<\/td><td>False<\/td><td>False<\/td><td>False<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>You can also combine <code>isnull()<\/code> with <code>sum()<\/code> functions for a more comprehensive view.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># return the count of null value in every column \nprint(df.isna().sum())<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table class=\"has-fixed-layout\"><tbody><tr><td>ID<\/td><td>0<\/td><\/tr><tr><td>Product<\/td><td>0<\/td><\/tr><tr><td>Category<\/td><td>0<\/td><\/tr><tr><td>Price<\/td><td>0<\/td><\/tr><tr><td>Quantity<\/td><td>0<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-palette-color-4-color has-alpha-channel-opacity has-palette-color-4-background-color has-background is-style-wide\" style=\"margin-top:var(--wp--preset--spacing--70);margin-bottom:var(--wp--preset--spacing--70)\"\/>\n\n\n\n<p>8. <code>fillna()<\/code><\/p>\n\n\n\n<p class=\"has-text-align-justify\"><strong><code>fillna()<\/code><\/strong> replaces missing values in a DataFrame with specified values or uses certain filling methods, such as mean, median, and mode (mostly for categorical features).<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Fill missing values in 'Price' with the mean price\ndf&#91;'Price'].fillna(df&#91;'Price'].mean(), inplace=True)\nprint(\"DataFrame after filling missing values:\")\nprint(df)<\/code><\/pre>\n\n\n\n<p>Since the table doesn&#8217;t contain any missing value, it will return the exact same table.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-palette-color-4-color has-alpha-channel-opacity has-palette-color-4-background-color has-background is-style-wide\" style=\"margin-top:var(--wp--preset--spacing--70);margin-bottom:var(--wp--preset--spacing--70)\"\/>\n\n\n\n<p>9. <code>plot()<\/code><\/p>\n\n\n\n<p class=\"has-text-align-justify\"><strong><code>plot()<\/code><\/strong> creates basic plots like line, bar, scatter, and more directly from a DataFrame. It simplifies the process of generating visualizations to aid in data exploration.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import matplotlib.pyplot as plt\ndf.groupby('Category')&#91;'Quantity'].sum().plot(kind='bar')\nplt.title('Total Quantity by Category')\nplt.xlabel('Category')\nplt.ylabel('Total Quantity')\nplt.show()<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/datascihubs.com\/wp-content\/uploads\/2023\/08\/Pandas-Plot-min.png?resize=448%2C336&#038;ssl=1\" alt=\"Pandas in Python\" class=\"wp-image-329\" style=\"width:448px;height:336px\" width=\"448\" height=\"336\" srcset=\"https:\/\/i0.wp.com\/datascihubs.com\/wp-content\/uploads\/2023\/08\/Pandas-Plot-min.png?w=640&amp;ssl=1 640w, https:\/\/i0.wp.com\/datascihubs.com\/wp-content\/uploads\/2023\/08\/Pandas-Plot-min.png?resize=300%2C225&amp;ssl=1 300w, https:\/\/i0.wp.com\/datascihubs.com\/wp-content\/uploads\/2023\/08\/Pandas-Plot-min.png?resize=600%2C450&amp;ssl=1 600w\" sizes=\"auto, (max-width: 448px) 100vw, 448px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pandas in Python is a widely used library for data scientists. It emerges as a foundation library for data manipulation and analysis. If you are contemplating working with any type of data, Pandas is the go-to tool for data cleaning, transforming, and exploring complex datasets. In this article, we will see the concepts of data [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":331,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[1],"tags":[28,47],"class_list":["post-323","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-information","tag-data-analysis","tag-python"],"blocksy_meta":[],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/datascihubs.com\/wp-content\/uploads\/2023\/08\/Feature-Image-Python-min.png?fit=1280%2C720&ssl=1","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/datascihubs.com\/index.php\/wp-json\/wp\/v2\/posts\/323","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/datascihubs.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/datascihubs.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/datascihubs.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/datascihubs.com\/index.php\/wp-json\/wp\/v2\/comments?post=323"}],"version-history":[{"count":1,"href":"https:\/\/datascihubs.com\/index.php\/wp-json\/wp\/v2\/posts\/323\/revisions"}],"predecessor-version":[{"id":833,"href":"https:\/\/datascihubs.com\/index.php\/wp-json\/wp\/v2\/posts\/323\/revisions\/833"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/datascihubs.com\/index.php\/wp-json\/wp\/v2\/media\/331"}],"wp:attachment":[{"href":"https:\/\/datascihubs.com\/index.php\/wp-json\/wp\/v2\/media?parent=323"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/datascihubs.com\/index.php\/wp-json\/wp\/v2\/categories?post=323"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/datascihubs.com\/index.php\/wp-json\/wp\/v2\/tags?post=323"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}