<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Janet Kangogo</title>
    <description>The latest articles on DEV Community by Janet Kangogo (@janet_kangogo_83663d93af4).</description>
    <link>https://dev.to/janet_kangogo_83663d93af4</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4075811%2F7bfcda65-7763-4ae9-9535-5bad7da4e547.png</url>
      <title>DEV Community: Janet Kangogo</title>
      <link>https://dev.to/janet_kangogo_83663d93af4</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/janet_kangogo_83663d93af4"/>
    <language>en</language>
    <item>
      <title>Building an Interactive Excel Dashboard for E-commerce Product Analysis: A Case Study of Jumia Products</title>
      <dc:creator>Janet Kangogo</dc:creator>
      <pubDate>Fri, 11 Sep 2026 00:38:22 +0000</pubDate>
      <link>https://dev.to/janet_kangogo_83663d93af4/building-an-interactive-excel-dashboard-for-e-commerce-product-analysis-a-case-study-of-jumia-44nj</link>
      <guid>https://dev.to/janet_kangogo_83663d93af4/building-an-interactive-excel-dashboard-for-e-commerce-product-analysis-a-case-study-of-jumia-44nj</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;For this project, I used Microsoft Excel to analyze a Jumia product dataset and build an interactive dashboard.&lt;/p&gt;

&lt;p&gt;The aim was to understand how product prices, discounts, ratings, and customer reviews relate to product performance.&lt;/p&gt;

&lt;p&gt;I focused on questions such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Do higher discounts lead to more customer reviews?&lt;/li&gt;
&lt;li&gt;Do highly rated products receive more engagement?&lt;/li&gt;
&lt;li&gt;Are more expensive products rated better?&lt;/li&gt;
&lt;li&gt;Which products are performing best?&lt;/li&gt;
&lt;li&gt;Which products may need a different pricing or marketing approach?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Since the dataset did not include sales or revenue, I used the number of reviews as a way of measuring customer engagement.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Understanding the Dataset
&lt;/h2&gt;

&lt;p&gt;The original dataset had six columns:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Product&lt;/li&gt;
&lt;li&gt;Current price&lt;/li&gt;
&lt;li&gt;old price&lt;/li&gt;
&lt;li&gt;Discount&lt;/li&gt;
&lt;li&gt;Review&lt;/li&gt;
&lt;li&gt;Ratingd&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Before doing any analysis, I first checked the data to see what needed cleaning.&lt;/p&gt;

&lt;p&gt;Some of the issues I found were:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;115 rows and 6 columns&lt;/li&gt;
&lt;li&gt;58 blank Review values&lt;/li&gt;
&lt;li&gt;58 blank Rating values&lt;/li&gt;
&lt;li&gt;57 negative Review values&lt;/li&gt;
&lt;li&gt;3 duplicate rows&lt;/li&gt;
&lt;li&gt;1 product with a price range&lt;/li&gt;
&lt;li&gt;a misspelled &lt;code&gt;Ratingd&lt;/code&gt; column&lt;/li&gt;
&lt;li&gt;prices containing &lt;code&gt;KSh&lt;/code&gt; and commas&lt;/li&gt;
&lt;li&gt;ratings written like &lt;code&gt;4.5 out of 5&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I kept the original data unchanged so that I could always compare it with the cleaned version.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkwmn9jgvjrfbgh20zyps.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkwmn9jgvjrfbgh20zyps.png" alt=" " width="800" height="376"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Creating a Data Quality Audit
&lt;/h2&gt;

&lt;p&gt;Before cleaning the data, I recorded the issues I found in a &lt;code&gt;Data_Dictionary&lt;/code&gt; sheet.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxg4tmnia0xjr3gxqnmnd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxg4tmnia0xjr3gxqnmnd.png" alt=" " width="800" height="403"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I also kept a cleaning log showing what I changed and why.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5zqg181kenk0f2zvxic1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5zqg181kenk0f2zvxic1.png" alt=" " width="800" height="174"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Cleaning the Data
&lt;/h2&gt;

&lt;p&gt;I created a separate cleaned version of the dataset and kept the raw data unchanged.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cleaning Product Names
&lt;/h3&gt;

&lt;p&gt;I used the &lt;code&gt;TRIM&lt;/code&gt; function to remove extra spaces from product names.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;=TRIM(A2:A113)&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Fixing the Headers
&lt;/h3&gt;

&lt;p&gt;I renamed the columns to:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Product | Current Price | Old Price | Discount | Review | Rating&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Removing Duplicates
&lt;/h3&gt;

&lt;p&gt;I selected all six original columns so that only exact duplicates were removed.&lt;/p&gt;

&lt;p&gt;After this step, I had: &lt;strong&gt;112 product records&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fecflvlcuxix819fv9phy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fecflvlcuxix819fv9phy.png" alt=" " width="799" height="381"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Cleaning the Prices
&lt;/h3&gt;

&lt;p&gt;Some prices were written like: &lt;code&gt;KSh 2,199&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;I used &lt;strong&gt;Ctrl + H (Find and Replace)&lt;/strong&gt; to remove &lt;code&gt;KSh&lt;/code&gt; and commas, turning values like &lt;code&gt;KSh 2,199&lt;/code&gt; into &lt;code&gt;2199&lt;/code&gt; so Excel could treat them as numbers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Handling the Price Range
&lt;/h3&gt;

&lt;p&gt;One product had a current price of:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;1620 - 1980&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;and an old price of:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;2200 - 3200&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Instead of deleting the row, I used the midpoint.&lt;/p&gt;

&lt;p&gt;Current Price:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;(1620 + 1980) / 2 = 1800&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Old Price:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;(2200 + 3200) / 2 = 2700&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3u1m7rcibrlubu603ns3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3u1m7rcibrlubu603ns3.png" alt=" " width="799" height="154"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Cleaning Reviews
&lt;/h3&gt;

&lt;p&gt;The review values appeared as negative numbers.&lt;/p&gt;

&lt;p&gt;Since a review count cannot be negative, I treated the negative sign as a formatting issue and converted the values to positive numbers.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;=IF(E2="","",ABS(VALUE(E2)))&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;I left missing review values blank.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cleaning Ratings
&lt;/h3&gt;

&lt;p&gt;Ratings were written like: &lt;code&gt;4.5 out of 5&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;I converted them into normal numbers using: &lt;code&gt;=IF(F2="","",VALUE(SUBSTITUTE(F2," out of 5","")))&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Missing ratings were also left blank.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Validating the Cleaned Data
&lt;/h2&gt;

&lt;p&gt;Before moving on to analysis, I checked that the cleaned values made sense.&lt;/p&gt;

&lt;p&gt;For Rating: &lt;code&gt;=IF(OR(F2&amp;lt;0,F2&amp;gt;5),"Check rating","OK")&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;For Discount: &lt;code&gt;=IF(OR(D2&amp;lt;0,D2&amp;gt;1),"Check discount","OK")&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;For Price: &lt;code&gt;=IF(B2&amp;gt;C2,"Check prices","OK")&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg123s24q8xta8glxv1sk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg123s24q8xta8glxv1sk.png" alt=" " width="800" height="275"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After that, I converted the cleaned dataset into an Excel Table using &lt;strong&gt;Ctrl + T&lt;/strong&gt; and named it:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;tblProducts&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj9b80zztmdaub3xcxknk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj9b80zztmdaub3xcxknk.png" alt=" " width="800" height="758"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: Adding New Columns
&lt;/h2&gt;

&lt;p&gt;I added a few extra columns to make the analysis easier.&lt;/p&gt;

&lt;h3&gt;
  
  
  Discount Amount
&lt;/h3&gt;

&lt;p&gt;I calculated how much money had actually been reduced from the old price.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;=[@[Old Price]]-[@[Current Price]]&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Rating Category
&lt;/h3&gt;

&lt;p&gt;I grouped the ratings into:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Poor - below 3&lt;/li&gt;
&lt;li&gt;Average - 3 to 4.5&lt;/li&gt;
&lt;li&gt;Excellent - above 4.5&lt;/li&gt;
&lt;li&gt;Missing - blank rating&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Formula:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;=IF([@Rating]="","Missing",IF([@Rating]&amp;lt;3,"Poor",IF([@Rating]&amp;lt;=4.5,"Average","Excellent")))&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Discount Category
&lt;/h3&gt;

&lt;p&gt;I grouped the discounts into:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Low Discount - below 20%&lt;/li&gt;
&lt;li&gt;Medium Discount - 20% to 40%&lt;/li&gt;
&lt;li&gt;High Discount - above 40%&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Formula:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;=IF([@Discount]="","Missing",IF([@Discount]&amp;lt;20%,"Low Discount",IF([@Discount]&amp;lt;=40%,"Medium Discount","High Discount")))&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Price Category
&lt;/h3&gt;

&lt;p&gt;Instead of choosing random price ranges, I used quartiles.&lt;/p&gt;

&lt;p&gt;First quartile:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;=QUARTILE.INC(tblProducts[Current Price],1)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Result: &lt;strong&gt;KSh 493&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Third quartile:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;=QUARTILE.INC(tblProducts[Current Price],3)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Result: &lt;strong&gt;KSh 1,669.50&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I then grouped products into:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Low Price&lt;/li&gt;
&lt;li&gt;Medium Price&lt;/li&gt;
&lt;li&gt;High Price&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Formula:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;=IF([@[Current Price]]="","Missing",IF([@[Current Price]]&amp;lt;=[@[Price_Q1]],"Low Price",IF([@[Current Price]]&amp;lt;=[@[Price_Q3]],"Medium Price","High Price")))&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftlnxo2tl81d03grf4ae0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftlnxo2tl81d03grf4ae0.png" alt=" " width="800" height="314"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 6: Measuring Customer Engagement
&lt;/h2&gt;

&lt;p&gt;Because the dataset did not include sales, I used reviews as an engagement measure.&lt;/p&gt;

&lt;p&gt;I used the 75th percentile of Review to define strong engagement.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;=QUARTILE.INC(tblProducts[Review],3)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The result was: &lt;strong&gt;14 reviews&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So I treated products with 14 or more reviews as having strong engagement buy using the formula below&lt;/p&gt;

&lt;p&gt;&lt;code&gt;=IF([@Review]="","Missing",IF([@Review]&amp;gt;=Engagement_Threshold,"Strong Engagement","Lower Engagement"))&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 7: Descriptive Analysis
&lt;/h2&gt;

&lt;p&gt;I created an &lt;code&gt;Analysis&lt;/code&gt; sheet and calculated the main KPIs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Total Products
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;=ROWS(tblProducts[Product])&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Result: &lt;strong&gt;112&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Average Current Price
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;=AVERAGE(tblProducts[Current Price])&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Result: &lt;strong&gt;KSh 1,186.89&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Average Old Price
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;=AVERAGE(tblProducts[Old Price])&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Result: &lt;strong&gt;KSh 1,811.11&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Average Discount
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;=AVERAGE(tblProducts[Discount])&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Result: &lt;strong&gt;36.78%&lt;/strong&gt; when converted to percentage&lt;/p&gt;

&lt;h3&gt;
  
  
  Average Rating
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;=AVERAGE(tblProducts[Rating])&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Result: &lt;strong&gt;3.889473684&lt;/strong&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  Total Reviews
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;=SUM(tblProducts[Review])&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Result: &lt;strong&gt;723&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The most expensive product price
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;=MAX(tblProducts[Current Price])&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;with its name found as&lt;/p&gt;

&lt;p&gt;&lt;code&gt;=XLOOKUP(MAX(tblProducts[Current Price]),tblProducts[Current Price],tblProducts[Product])&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Result: &lt;strong&gt;KSh 3,750&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;The least expensive product price &lt;br&gt;
&lt;code&gt;=MIN(tblProducts[Current Price]) with its name =XLOOKUP(MIN(tblProducts[Current Price]),tblProducts[Current Price],tblProducts[Product])&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Result: &lt;strong&gt;KSh 38&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzky2hop3ds8xilt8l5bi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzky2hop3ds8xilt8l5bi.png" alt=" " width="800" height="275"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 8: Looking at Relationships
&lt;/h2&gt;

&lt;p&gt;I created three scatter plots to see whether the main variables were related.&lt;/p&gt;

&lt;h3&gt;
  
  
  Discount vs Reviews
&lt;/h3&gt;

&lt;p&gt;The correlation was approximately: &lt;strong&gt;-0.136822724&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This showed a very weak negative relationship.&lt;/p&gt;

&lt;p&gt;In simple terms, larger discounts were not clearly linked to more reviews.&lt;/p&gt;

&lt;h3&gt;
  
  
  Rating vs Reviews
&lt;/h3&gt;

&lt;p&gt;The correlation was approximately: &lt;strong&gt;0.057209035&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This was very close to zero, meaning highly rated products did not necessarily receive more reviews.&lt;/p&gt;

&lt;h3&gt;
  
  
  Price vs Rating
&lt;/h3&gt;

&lt;p&gt;The correlation was approximately: &lt;strong&gt;0.110090213&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This showed only a very weak positive relationship between price and rating.&lt;/p&gt;

&lt;p&gt;For each chart, I added a trendline, equation, and R-squared value.&lt;/p&gt;

&lt;p&gt;Note that correlation does not mean causation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsrz7ol8b3881awbd9dz4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsrz7ol8b3881awbd9dz4.png" alt=" " width="800" height="171"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 9: Ranking Products
&lt;/h2&gt;

&lt;p&gt;I used PivotTables to compare and rank products.&lt;/p&gt;

&lt;p&gt;I created:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Top 5 products by rating&lt;/li&gt;
&lt;li&gt;Bottom 5 products by rating&lt;/li&gt;
&lt;li&gt;Top 10 products by rating&lt;/li&gt;
&lt;li&gt;Top 10 products by reviews&lt;/li&gt;
&lt;li&gt;Top 10 products by discount&lt;/li&gt;
&lt;li&gt;High-discount products with low ratings&lt;/li&gt;
&lt;li&gt;High-discount products with low engagement&lt;/li&gt;
&lt;li&gt;Products with many reviews but average ratings&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sample shown below&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwqde4di9237se7snuf71.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwqde4di9237se7snuf71.png" alt=" " width="800" height="258"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 10: Creating PivotCharts
&lt;/h2&gt;

&lt;p&gt;I created PivotTables for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rating Category&lt;/li&gt;
&lt;li&gt;Discount Category&lt;/li&gt;
&lt;li&gt;Price Category&lt;/li&gt;
&lt;li&gt;Average Rating by Price Category&lt;/li&gt;
&lt;li&gt;Average Reviews by Discount Category&lt;/li&gt;
&lt;li&gt;Top Products by Rating&lt;/li&gt;
&lt;li&gt;Top Products by Reviews&lt;/li&gt;
&lt;li&gt;Top Products by Discount&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I then created PivotCharts from these tables.&lt;/p&gt;

&lt;p&gt;For the product rankings, I used horizontal bar charts because the product names were long and easier to read that way.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 11: Adding Slicers
&lt;/h2&gt;

&lt;p&gt;To make the dashboard interactive, I added slicers for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rating Category&lt;/li&gt;
&lt;li&gt;Discount Category&lt;/li&gt;
&lt;li&gt;Price Category&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I connected the slicers to the relevant PivotTables using &lt;strong&gt;Report Connections&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This made it possible to filter several charts at once.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzv34c1686y7xw20vazlj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzv34c1686y7xw20vazlj.png" alt=" " width="342" height="502"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 12: Building the Dashboard
&lt;/h2&gt;

&lt;p&gt;I brought the most important information together on one dashboard.&lt;/p&gt;

&lt;p&gt;The top section included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Total Products&lt;/li&gt;
&lt;li&gt;Average Price&lt;/li&gt;
&lt;li&gt;Average Discount&lt;/li&gt;
&lt;li&gt;Average Rating&lt;/li&gt;
&lt;li&gt;Total Reviews&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The dashboard also included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Top 10 Products by Rating&lt;/li&gt;
&lt;li&gt;Top 10 Products by Reviews&lt;/li&gt;
&lt;li&gt;Top 10 Products by Discount&lt;/li&gt;
&lt;li&gt;Discount vs Reviews&lt;/li&gt;
&lt;li&gt;Rating vs Reviews&lt;/li&gt;
&lt;li&gt;Price vs Rating&lt;/li&gt;
&lt;li&gt;Rating Category breakdown&lt;/li&gt;
&lt;li&gt;Discount Category breakdown&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I used consistent formatting for prices, percentages, ratings, and review counts so that the dashboard was easy to read.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr03hwvsvq2v6t9dcnmwz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr03hwvsvq2v6t9dcnmwz.png" alt=" " width="768" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Findings
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Higher discounts did not automatically mean more engagement
&lt;/h3&gt;

&lt;p&gt;The correlation between Discount and Review was about: &lt;strong&gt;-0.14&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This was a very weak relationship.&lt;/p&gt;

&lt;p&gt;Medium-discount products actually had a higher average number of reviews than high-discount products.&lt;/p&gt;

&lt;h3&gt;
  
  
  More reviews did not always mean better ratings
&lt;/h3&gt;

&lt;p&gt;The relationship between Rating and Review was almost zero.&lt;/p&gt;

&lt;p&gt;The 120W cordless vacuum cleaner had:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;69 reviews&lt;/li&gt;
&lt;li&gt;2.8 rating&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This showed that a product can attract attention but still have weak customer satisfaction.&lt;/p&gt;

&lt;h3&gt;
  
  
  Expensive products were not much better rated
&lt;/h3&gt;

&lt;p&gt;The relationship between Current Price and Rating was only about: &lt;strong&gt;0.11&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This means price alone was not a strong sign of customer satisfaction.&lt;/p&gt;

&lt;h3&gt;
  
  
  Large discounts did not guarantee strong performance
&lt;/h3&gt;

&lt;p&gt;Some products had large discounts but still had low ratings or low engagement.&lt;/p&gt;

&lt;p&gt;This suggests that sellers should not depend on discounting alone.&lt;/p&gt;

&lt;h2&gt;
  
  
  Recommendations
&lt;/h2&gt;

&lt;p&gt;Based on the analysis:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sellers should not assume that bigger discounts automatically lead to more customer engagement.&lt;/li&gt;
&lt;li&gt;Products with many reviews but low or average ratings should be investigated for possible quality or customer-experience issues.&lt;/li&gt;
&lt;li&gt;Products with strong ratings but low review counts may benefit from more promotion.&lt;/li&gt;
&lt;li&gt;High-discount products with low engagement may need a different marketing or pricing strategy.&lt;/li&gt;
&lt;li&gt;Product performance should be judged using several measures together instead of looking at only price, discount, rating, or reviews.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Limitations
&lt;/h2&gt;

&lt;p&gt;The dataset did not include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;sales&lt;/li&gt;
&lt;li&gt;revenue&lt;/li&gt;
&lt;li&gt;listing age&lt;/li&gt;
&lt;li&gt;seller information&lt;/li&gt;
&lt;li&gt;product visibility&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because of this, reviews were only used as an engagement proxy.&lt;/p&gt;

&lt;p&gt;The results show patterns in the data, but they do not prove that one variable directly caused another.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;This project gave me practical experience turning raw Jumia product data into an interactive Excel dashboard.&lt;/p&gt;

&lt;p&gt;I started by checking and cleaning the data, then added new fields, calculated KPIs, analyzed relationships, created PivotTables and PivotCharts, and finally brought everything together in a dashboard.&lt;/p&gt;

&lt;p&gt;It showed me how Excel can be used not just for calculations, but also for understanding data and turning it into useful business insights.&lt;/p&gt;

</description>
      <category>analysis</category>
      <category>data</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Getting Started with Excel for Data Analytics: From Basics to Data Cleaning.</title>
      <dc:creator>Janet Kangogo</dc:creator>
      <pubDate>Wed, 02 Sep 2026 19:13:35 +0000</pubDate>
      <link>https://dev.to/janet_kangogo_83663d93af4/getting-started-with-excel-for-data-analytics-from-basics-to-data-cleaning-hii</link>
      <guid>https://dev.to/janet_kangogo_83663d93af4/getting-started-with-excel-for-data-analytics-from-basics-to-data-cleaning-hii</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;Excel is a useful tool for working with data, but before any analysis can begin, the data needs to be in a usable state. A dataset may have blank cells, duplicate records, inconsistent entries, or values that do not follow the expected format.&lt;/p&gt;

&lt;p&gt;Cleaning the data helps correct these issues and makes the dataset more consistent. Once the data is clean, it becomes easier to use Excel tools such as formulas, Pivot Tables, filters, and charts to analyze and understand the information.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Start With a Copy of the Data
&lt;/h2&gt;

&lt;p&gt;Before making any changes, keep the original dataset untouched and work from a duplicate sheet.&lt;/p&gt;

&lt;p&gt;Keeping the original data provides a reference point in case values are accidentally changed or removed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhe92ym4ak0hjuvvmxm1j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhe92ym4ak0hjuvvmxm1j.png" alt=" " width="799" height="286"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Make the Data Easier to Read
&lt;/h2&gt;

&lt;p&gt;Formatting makes a large dataset easier to inspect without changing the actual data.&lt;/p&gt;

&lt;h3&gt;
  
  
  Wrap Text
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Wrap Text&lt;/strong&gt; displays long content on multiple lines within the same cell.&lt;/p&gt;

&lt;h3&gt;
  
  
  AutoFit
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;AutoFit&lt;/strong&gt; automatically adjusts the width of a column or height of a row according to its contents.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgssx77fgalfzdukr7rw7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgssx77fgalfzdukr7rw7.png" alt=" " width="800" height="376"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Cleaning the Data
&lt;/h2&gt;

&lt;p&gt;Before analysing the data, it is important to check for issues that could affect the results. This includes missing values, inconsistent entries, duplicates, unnecessary columns, and values that do not make sense.&lt;/p&gt;

&lt;h3&gt;
  
  
  Missing and Inconsistent Values
&lt;/h3&gt;

&lt;p&gt;Missing information may appear as an empty cell or as values such as: &lt;code&gt;None&lt;/code&gt;, &lt;code&gt;N/A&lt;/code&gt;, &lt;code&gt;Unkown&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Some of these values are not technically blank because they contain text, but they may still represent missing information.&lt;/p&gt;

&lt;p&gt;The meaning of a value should be checked before changing it. For example, &lt;code&gt;None&lt;/code&gt; may represent missing information in one column but be a valid response in another.&lt;/p&gt;

&lt;p&gt;Where different entries have the same meaning, they can be standardized. For example, &lt;code&gt;None&lt;/code&gt;, &lt;code&gt;N/A&lt;/code&gt; can be changed to &lt;code&gt;Unkown&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This keeps the data consistent and makes it easier to analyse.&lt;/p&gt;

&lt;h3&gt;
  
  
  Handling Blank Values
&lt;/h3&gt;

&lt;p&gt;How a blank value is handled depends on the type of information in the column.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fes6vkgztmx18f6juh0zl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fes6vkgztmx18f6juh0zl.png" alt=" " width="392" height="691"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A blank may be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Left blank if the correct value is not known.&lt;/li&gt;
&lt;li&gt;Replaced with &lt;code&gt;Unknown&lt;/code&gt; for categorical data.&lt;/li&gt;
&lt;li&gt;Filled with an appropriate value where its meaning is known.&lt;/li&gt;
&lt;li&gt;Investigated further before making any changes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For numerical columns, adding text such as &lt;code&gt;Unknown&lt;/code&gt; should be avoided because it can interfere with calculations.&lt;/p&gt;

&lt;h3&gt;
  
  
  Checking for Duplicates
&lt;/h3&gt;

&lt;p&gt;Duplicate records can affect totals, counts, averages, and other calculations.&lt;/p&gt;

&lt;p&gt;It is safer to select the entire dataset when removing duplicates, as similar records may contain typos or inconsistencies.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsffremx9emienm5mhtf1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsffremx9emienm5mhtf1.png" alt=" " width="800" height="361"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Checking for Unusual Values
&lt;/h3&gt;

&lt;p&gt;The dataset should also be checked for values that do not make sense when compared with other information in the same record.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;Hiring Year: 1920&lt;br&gt;
Age: 50&lt;/p&gt;

&lt;p&gt;Both are valid numbers, but they are unlikely to make sense together.&lt;/p&gt;

&lt;p&gt;Unusual values should be investigated rather than automatically deleted because some may be genuine.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1q8isltgpkouowy8sykp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1q8isltgpkouowy8sykp.png" alt=" " width="444" height="280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After these checks, the dataset is more consistent and ready for validation and further analysis.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Filters
&lt;/h2&gt;

&lt;p&gt;Once the dataset has been cleaned, filters can be used to view specific records without deleting or changing the rest of the data.&lt;/p&gt;

&lt;p&gt;For example, the HR dataset can be filtered by:&lt;br&gt;
Work Experience = 7 Years&lt;br&gt;
Education Level = Bachelors&lt;br&gt;
Employment Type = Permanent&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1u0n9s1djvqkh19x1vcc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1u0n9s1djvqkh19x1vcc.png" alt=" " width="800" height="239"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Filters are useful when checking particular categories, identifying unusual records, or focusing on a smaller part of a large dataset.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Multilevel Sorting
&lt;/h2&gt;

&lt;p&gt;Sorting arranges data in a particular order. Excel also allows sorting by more than one column.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm9rq8wis7qs6d7elwsos.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm9rq8wis7qs6d7elwsos.png" alt=" " width="800" height="359"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For example, the dataset can be sorted by:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Work Experience&lt;/li&gt;
&lt;li&gt;Education Level&lt;/li&gt;
&lt;li&gt;Employment Type&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Excel first sorts by Work Experience, then by Education Level within each department, and finally by Employment Type&lt;/p&gt;

&lt;p&gt;This is known as &lt;strong&gt;multilevel sorting&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fl1e2u73j0k0wxhtj0nhl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fl1e2u73j0k0wxhtj0nhl.png" alt=" " width="800" height="310"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Text Functions
&lt;/h2&gt;

&lt;p&gt;Excel provides several functions for working with text. These can be useful when cleaning names, codes, email addresses, and other text fields.&lt;/p&gt;

&lt;p&gt;Functions always start with the equal sign i.e &lt;code&gt;=&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;LEN()&lt;/code&gt; – Counts the number of characters in a cell.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;TRIM()&lt;/code&gt; – Removes extra spaces from text.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;LEFT()&lt;/code&gt; – Extracts characters from the left side of text.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;RIGHT()&lt;/code&gt; – Extracts characters from the right side of text.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;MID()&lt;/code&gt; – Extracts characters from the middle of text.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;FIND()&lt;/code&gt; – Finds the position of a character or text within a cell.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;CONCAT()&lt;/code&gt; – Joins text from multiple cells together.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These functions can be used individually or combined depending on how the text needs to be cleaned or changed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqkeky2dy3zir19qk4hpa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqkeky2dy3zir19qk4hpa.png" alt=" " width="800" height="157"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Conditional Formatting
&lt;/h2&gt;

&lt;p&gt;Conditional Formatting changes the appearance of cells when they meet certain conditions. This makes it easier to notice important or unusual values.&lt;/p&gt;

&lt;p&gt;Common conditions include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Greater than&lt;/li&gt;
&lt;li&gt;Less than&lt;/li&gt;
&lt;li&gt;Between&lt;/li&gt;
&lt;li&gt;Top 10&lt;/li&gt;
&lt;li&gt;Bottom 10&lt;/li&gt;
&lt;li&gt;Above average&lt;/li&gt;
&lt;li&gt;Below average&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F23rxgvtngz5gg1tosnng.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F23rxgvtngz5gg1tosnng.png" alt=" " width="800" height="250"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For example, employees who have worked for less than 18 years can be highlighted automatically.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbndd0epu3reuu4ij2j7c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbndd0epu3reuu4ij2j7c.png" alt=" " width="799" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Data Bars provide another way of comparing numerical values. Excel displays a bar inside each cell based on the size of the value.&lt;/p&gt;

&lt;p&gt;Larger values have longer bars, making differences easier to see without creating a separate chart.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvkjikuaupmyd28kmgzpv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvkjikuaupmyd28kmgzpv.png" alt=" " width="800" height="295"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Statistical and Mathematical Functions
&lt;/h2&gt;

&lt;p&gt;These are for carrying out basic calculations and understanding numerical data.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;POWER()&lt;/code&gt; – Raises a number to a specified power.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;SQRT()&lt;/code&gt; – Returns the square root of a number.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;PRODUCT()&lt;/code&gt; – Multiplies numbers together.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;MIN()&lt;/code&gt; – Returns the smallest value.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;MAX()&lt;/code&gt; – Returns the largest value.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;MODE()&lt;/code&gt; – Returns the most frequently occurring value.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;MEDIAN()&lt;/code&gt; – Returns the middle value.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;COUNT()&lt;/code&gt; – Counts cells containing numbers.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;COUNTA()&lt;/code&gt; – Counts non-empty cells.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;COUNTBLANK()&lt;/code&gt; – Counts empty cells.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These functions provide a quick way of understanding the values contained in a dataset.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. COUNTIF() &amp;amp; SUMIF()
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;COUNTIF()&lt;/code&gt; and &lt;code&gt;SUMIF()&lt;/code&gt; are useful for counting or adding values based on specific conditions in a dataset.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;COUNTIF()&lt;/code&gt; – Counts records that meet one condition.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;COUNTIFS()&lt;/code&gt; – Counts records that meet multiple conditions.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;SUMIF()&lt;/code&gt; – Adds values that meet one condition.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;SUMIFS()&lt;/code&gt; – Adds values that meet multiple conditions.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  10. Working With Dates and Time
&lt;/h2&gt;

&lt;p&gt;Dates are useful in data analysis because they can be used to calculate periods and identify trends.&lt;/p&gt;

&lt;p&gt;Some common Excel date functions include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;TODAY()&lt;/code&gt; – Returns the current date.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;NOW()&lt;/code&gt; – Returns the current date and time.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;YEAR()&lt;/code&gt; – Extracts the year from a date.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;MONTH()&lt;/code&gt; – Extracts the month from a date.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;DAY()&lt;/code&gt; – Extracts the day from a date.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;DATEDIF()&lt;/code&gt; – Calculates the difference between two dates.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;NETWORKDAYS()&lt;/code&gt; – Calculates working days between two dates, excluding weekends.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  11. Mean, Median, and Outliers
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;mean&lt;/strong&gt; is the average of a group of numbers, while the &lt;strong&gt;median&lt;/strong&gt; is the middle value when the numbers are arranged in order.&lt;/p&gt;

&lt;p&gt;Consider the below example:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe5y9280gckrp9fm583pr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe5y9280gckrp9fm583pr.png" alt=" " width="799" height="334"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The value &lt;code&gt;500,000&lt;/code&gt; is much higher than the other values. This affects the mean because it pulls the average upwards.&lt;/p&gt;

&lt;p&gt;The median is less affected by extremely high or low values.&lt;/p&gt;

&lt;p&gt;Comparing the mean and median can therefore help identify data that may be skewed or contain possible outliers.&lt;/p&gt;

&lt;p&gt;An outlier should not automatically be deleted. It may be an incorrect entry, but it could also be a genuine value that is simply different from the rest.&lt;/p&gt;

&lt;h2&gt;
  
  
  IMPORTANT: Data Validation
&lt;/h2&gt;

&lt;p&gt;Data Validation helps control what can be entered into a cell. This reduces inconsistent entries and helps keep the dataset clean when inputted at the data collection step.&lt;/p&gt;

&lt;p&gt;For example, if the Department column should contain only &lt;code&gt;HR&lt;/code&gt;, &lt;code&gt;IT&lt;/code&gt;, &lt;code&gt;Finance&lt;/code&gt; or &lt;code&gt;Unknown&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2caelo7oeze16c946ti6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2caelo7oeze16c946ti6.png" alt=" " width="800" height="371"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;a dropdown list can be created to restrict entries to these values.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc807aurj1190pwtrqxte.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc807aurj1190pwtrqxte.png" alt=" " width="396" height="280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Without data validation, the same department could be entered in different ways. Excel would treat these entries as different values, creating inconsistencies and adding more data cleaning tasks.&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;The main takeaway is that good analysis starts with clean data. Preparing and cleaning the data makes it easier to work with and analyse.&lt;/p&gt;

</description>
      <category>data</category>
      <category>datascience</category>
      <category>excel</category>
    </item>
    <item>
      <title>Understanding the Git Workflow: Working Directory, Staging, Commit and Push</title>
      <dc:creator>Janet Kangogo</dc:creator>
      <pubDate>Mon, 24 Aug 2026 17:50:30 +0000</pubDate>
      <link>https://dev.to/janet_kangogo_83663d93af4/understanding-the-git-workflow-working-directory-staging-commit-and-push-3fhp</link>
      <guid>https://dev.to/janet_kangogo_83663d93af4/understanding-the-git-workflow-working-directory-staging-commit-and-push-3fhp</guid>
      <description>&lt;p&gt;Git is used to track changes made to files in a project. The basic Git workflow has four main parts:&lt;/p&gt;

&lt;p&gt;Working Directory → Staging Area → Commit → Push&lt;/p&gt;

&lt;p&gt;A simple project can contain different types of files, for example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;hello.py&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;practice.sql&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;README.md&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The same Git workflow can be used for all these files.&lt;/p&gt;

&lt;h2&gt;
  
  
  Working Directory
&lt;/h2&gt;

&lt;p&gt;The working directory is where the project files are created and edited.&lt;/p&gt;

&lt;p&gt;For example, &lt;code&gt;hello.py&lt;/code&gt; can contain:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzd3eeqqm570wwz46w082.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzd3eeqqm570wwz46w082.png" alt=" " width="799" height="86"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A SQL file can contain:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyow10apoadjnzzhf12gs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyow10apoadjnzzhf12gs.png" alt=" " width="795" height="80"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And &lt;code&gt;README.md&lt;/code&gt; can contain:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmp6l9zkw57fa02qk91tg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmp6l9zkw57fa02qk91tg.png" alt=" " width="800" height="139"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When a file is changed, Git can detect the change.&lt;/p&gt;

&lt;p&gt;The current state of the project can be checked using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It can show modified and untracked files, staged and unstaged changes, as well as the current branch.&lt;/p&gt;

&lt;p&gt;The output can show something like:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9pz8pl9tbxem9v4nodtr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9pz8pl9tbxem9v4nodtr.png" alt=" " width="800" height="257"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Which means the file has been changed, but the change has not been staged yet.&lt;/p&gt;

&lt;h2&gt;
  
  
  Staging Area
&lt;/h2&gt;

&lt;p&gt;The staging area is used to select the changes that should go into the next commit.&lt;/p&gt;

&lt;p&gt;To stage &lt;code&gt;hello.py&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git add hello.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On checking git status, the output can show something like:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe4i17iyv4g1w3io1hf30.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe4i17iyv4g1w3io1hf30.png" alt=" " width="799" height="310"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;More than one file can also be staged:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git add hello.py practice.sql
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To stage all the changes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git add .
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi7flp26basr04bxntejr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi7flp26basr04bxntejr.png" alt=" " width="799" height="263"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Note that: Not every change has to be included in the same commit.&lt;/p&gt;

&lt;h2&gt;
  
  
  Commit
&lt;/h2&gt;

&lt;p&gt;After staging the required changes, a commit can be created:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git commit -m "Your Commit Message"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcsla2eab93pr9fe174wi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcsla2eab93pr9fe174wi.png" alt=" " width="800" height="158"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A commit records the staged changes in the local Git repository.&lt;/p&gt;

&lt;p&gt;The message after &lt;code&gt;-m&lt;/code&gt; describes the change.&lt;/p&gt;

&lt;p&gt;The commit history can be checked using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git log
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This shows the commits that have already been made.&lt;/p&gt;

&lt;h2&gt;
  
  
  Create a repository on Github
&lt;/h2&gt;

&lt;p&gt;A repository should be created on GitHub where the project would be pushed.&lt;br&gt;
The GitHub repository acts as the remote repository for the project.&lt;/p&gt;

&lt;p&gt;On GitHub, New repository or the “+” icon was selected, then a name and description were added before creating the repository.&lt;/p&gt;
&lt;h2&gt;
  
  
  Push
&lt;/h2&gt;

&lt;p&gt;A commit is stored in the local repository. It does not automatically go to GitHub.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Push:&lt;/strong&gt; Sends committed changes from the local repository to the remote repository, such as GitHub, using &lt;code&gt;git push&lt;/code&gt; or &lt;code&gt;git push origin main&lt;/code&gt; to specify the remote (&lt;code&gt;origin&lt;/code&gt;) and branch (&lt;code&gt;main&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3nvsqudn98thznmhh698.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3nvsqudn98thznmhh698.png" alt=" " width="799" height="203"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  End Result
&lt;/h2&gt;

&lt;p&gt;When you refresh git hub, the repository is updated&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6kudmzxt48i8a6h1bgo4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6kudmzxt48i8a6h1bgo4.png" alt=" " width="800" height="290"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  The Full Workflow
&lt;/h2&gt;

&lt;p&gt;The Git workflow can be shown as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Working Directory &amp;gt; git add &amp;gt; Staging Area &amp;gt; git commit&amp;gt; Local Repository &amp;gt; git push &amp;gt; Remote Repository (GitHub)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;The Git workflow shows how changes move from the working directory to GitHub. The changes are checked using git status, added using git add, committed using git commit, and then pushed using git push.&lt;/p&gt;

</description>
      <category>git</category>
      <category>github</category>
      <category>gitworkflow</category>
    </item>
  </channel>
</rss>
