<?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: Alex Majale</title>
    <description>The latest articles on DEV Community by Alex Majale (@alex_majale_d64efa6d81883).</description>
    <link>https://dev.to/alex_majale_d64efa6d81883</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%2F4070903%2F17fb8e54-8213-48a8-8c48-2f8a9a49e779.png</url>
      <title>DEV Community: Alex Majale</title>
      <link>https://dev.to/alex_majale_d64efa6d81883</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/alex_majale_d64efa6d81883"/>
    <language>en</language>
    <item>
      <title>Building an Interactive Excel Dashboard for E-commerce Product Analysis: A Case Study of Jumia Products</title>
      <dc:creator>Alex Majale</dc:creator>
      <pubDate>Sun, 06 Sep 2026 12:02:19 +0000</pubDate>
      <link>https://dev.to/alex_majale_d64efa6d81883/building-an-interactive-excel-dashboard-for-e-commerce-product-analysis-a-case-study-of-jumia-8o</link>
      <guid>https://dev.to/alex_majale_d64efa6d81883/building-an-interactive-excel-dashboard-for-e-commerce-product-analysis-a-case-study-of-jumia-8o</guid>
      <description>&lt;p&gt;If you've ever wondered what actually happens between "I have a spreadsheet full of messy data" and "I have a dashboard I'd be proud to show someone," this article walks through that whole journey, step by step, using a real example.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Project Introduction and Objective
&lt;/h2&gt;

&lt;p&gt;Online stores discount things constantly. But here's a question that's easy to assume the answer to and actually get wrong: &lt;em&gt;Does a bigger discount get you more customer interest?&lt;/em&gt;&lt;br&gt;
The goal wasn't just "make some charts." It was to build something a manager could actually open and trust because every number on it either comes from a live formula or is clearly an assumption.&lt;/p&gt;
&lt;h2&gt;
  
  
  2. Dataset and Business Questions
&lt;/h2&gt;

&lt;p&gt;The raw data is : 116 rows, 6 columns.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Column&lt;/th&gt;
&lt;th&gt;What it holds&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Product&lt;/td&gt;
&lt;td&gt;The product&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Current price&lt;/td&gt;
&lt;td&gt;The price you'd actually pay&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;old price&lt;/td&gt;
&lt;td&gt;The original price before the discount&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Discount&lt;/td&gt;
&lt;td&gt;The advertised discount&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Review&lt;/td&gt;
&lt;td&gt;Number of customer reviews&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ratingd&lt;/td&gt;
&lt;td&gt;rating&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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%2F629cziw14kyekqwfv41u.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%2F629cziw14kyekqwfv41u.png" alt=" " width="800" height="438"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Business questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;whether larger discounts are associated with more reviews&lt;/li&gt;
&lt;li&gt;whether highly rated products attract stronger engagement&lt;/li&gt;
&lt;li&gt;whether price and rating move together&lt;/li&gt;
&lt;li&gt;which products perform best based on ratings and reviews&lt;/li&gt;
&lt;li&gt;which products may need a different pricing or marketing strategy.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  3. Initial Data-Quality Audit
&lt;/h2&gt;

&lt;p&gt;I audited the raw data for problems. Here's what I actually found:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;58 rows&lt;/strong&gt; had no value in &lt;code&gt;Review&lt;/code&gt; or &lt;code&gt;Ratingd&lt;/code&gt; at all.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;58 rows&lt;/strong&gt; had negative numbers in the &lt;code&gt;Review&lt;/code&gt; column. Reviews are a count of people, so a negative count is impossible.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;3 rows&lt;/strong&gt; were exact duplicates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;6 different product names&lt;/strong&gt; appeared more than once, but with different prices.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;1 row&lt;/strong&gt; had a price range instead of a single value.&lt;/li&gt;
&lt;li&gt;Prices were stored as &lt;strong&gt;text&lt;/strong&gt;, with a currency prefix.&lt;/li&gt;
&lt;li&gt;Ratings were stored as &lt;strong&gt;text&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  4. Cleaning and Preparation Decisions
&lt;/h2&gt;

&lt;p&gt;Every cleaning decision went into a documented "data dictionary" &lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Issue&lt;/th&gt;
&lt;th&gt;Rows affected&lt;/th&gt;
&lt;th&gt;Decision&lt;/th&gt;
&lt;th&gt;Reason&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Negative review counts&lt;/td&gt;
&lt;td&gt;58 rows&lt;/td&gt;
&lt;td&gt;Converted to positive&lt;/td&gt;
&lt;td&gt;A review count can't be negative&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Exact duplicate rows&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Removed&lt;/td&gt;
&lt;td&gt;They were duplicates&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Duplicate product names, different prices&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Kept as separate rows&lt;/td&gt;
&lt;td&gt;interpreted as different types of the same product&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;One price stored as a range&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Replaced with the midpoint&lt;/td&gt;
&lt;td&gt;A single number was required for any calculation to work&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Prices stored as text with currency symbols&lt;/td&gt;
&lt;td&gt;113&lt;/td&gt;
&lt;td&gt;Converted to numbers&lt;/td&gt;
&lt;td&gt;Can't calculate on text&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ratings stored as &lt;code&gt;"4.5 out of 5"&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;58&lt;/td&gt;
&lt;td&gt;Extracted the numeric &lt;code&gt;4.5&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Text can't be calculated&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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%2Fx0miu4uu5t7pz6kmdddq.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%2Fx0miu4uu5t7pz6kmdddq.png" alt=" " width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  5. Excel Formulas and Enrichment Fields
&lt;/h2&gt;

&lt;p&gt;This is the part that turns "a cleaned spreadsheet" into "a dataset you can actually analyze." &lt;br&gt;
Breaking down what these do:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;Rating Status&lt;/code&gt;&lt;/strong&gt; &lt;code&gt;=IF(OR(F2&amp;lt;0,F2&amp;gt;5,ISBLANK(F2)),"Check rating","OK")&lt;/code&gt;&lt;br&gt;
Rating must be between 0 and 5. If it isn't (or it's blank), this flags it instead of silently trusting the data.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;Calculated Discount&lt;/code&gt;&lt;/strong&gt; &lt;code&gt;=IFERROR((C2-B2)/C2,"")&lt;/code&gt;&lt;br&gt;
Instead of trusting the &lt;em&gt;advertised&lt;/em&gt; discount, I recalculated it independently from the old and new prices. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;Discount Check&lt;/code&gt;&lt;/strong&gt; &lt;code&gt;=IF(OR(D2="",K2=""),"Missing",IF(ABS(D2-K2)&amp;gt;2%,"Check Discount","OK"))&lt;/code&gt; compares the advertised discount to the calculated one, and flags anything more than 2 percentage points apart.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;Rating Category&lt;/code&gt;&lt;/strong&gt; &lt;code&gt;=IF(F2="","Missing",IF(F2&amp;lt;3,"Poor",IF(F2&amp;lt;=4.5,"Average","Excellent")))&lt;/code&gt; Rating into "Poor" (below 3), "Average" (3–4.5), or "Excellent" (above 4.5), so I can group and count products instead of comparing 113 individual decimals.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I used the same pattern for &lt;code&gt;Discount Category&lt;/code&gt; (Low/Medium/High) &lt;code&gt;=IF(D2="","Missing",IF(D2&amp;lt;20%,"Low Discount",IF(D2&amp;lt;=40%,"Medium Discount","High Discount")))&lt;/code&gt; and &lt;code&gt;Price Category&lt;/code&gt; (Low/Medium/High) &lt;code&gt;=IF(B2="","Missing",IF(B2&amp;lt;=Price_Q1,"Low Price",IF(B2&amp;lt;=Price_Q3,"Medium Price","High Price")))&lt;/code&gt; , the price Categories are based on the dataset's own &lt;strong&gt;quartiles&lt;/strong&gt;, calculated with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Price_Q1 = QUARTILE.INC(tblProducts[Current Price], 1)   → KSh 493
Price_Q3 = QUARTILE.INC(tblProducts[Current Price], 3)   → KSh 1,669.50
Review_Q3 = QUARTILE.INC(tblProducts[Review], 3)         → 14 reviews
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I stored these as &lt;strong&gt;named ranges&lt;/strong&gt; so every formula in the workbook could reference &lt;code&gt;Price_Q1&lt;/code&gt; instead of a hardcoded number.&lt;br&gt;
&lt;strong&gt;Engagement flags&lt;/strong&gt; &lt;code&gt;=IF(E2="","Missing",IF(E2&amp;gt;=Review_Q3,"Strong Engagement","Below Threshold"))&lt;/code&gt; so that i can group them with the dataset review threshold.&lt;/p&gt;

&lt;p&gt;Finally, I layered on a few &lt;strong&gt;compound flags&lt;/strong&gt; that combine two conditions at once:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;High Discount + Low Rating&lt;/code&gt; &lt;code&gt;=IF(OR(D2="",E2=""),"Missing",IF(AND(D2&amp;gt;40%,F2&amp;lt;3),"Flag",""))&lt;/code&gt; discount over 40% &lt;em&gt;and&lt;/em&gt; rating under 3&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;High Discount + Low Engagement&lt;/code&gt; &lt;code&gt;=IF(OR(D2="",E2=""),"Missing",IF(AND(D2&amp;gt;40%,E2&amp;lt;Review_Q3),"Flag",""))&lt;/code&gt; discount over 40% &lt;em&gt;and&lt;/em&gt; reviews below the 75th percentile&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Many Reviews + Average Rating&lt;/code&gt; &lt;code&gt;=IF(AND(E2&amp;gt;=Review_Q3,F2&amp;gt;=3,F2&amp;lt;=4.5),"Flag","")&lt;/code&gt; heavily reviewed but only "Average," not "Excellent"&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  6. PivotTable and Analysis Workflow
&lt;/h2&gt;

&lt;p&gt;With every product tagged and categorized, PivotTables became genuinely simple.&lt;/p&gt;

&lt;p&gt;Here's one of the  PivotTables:&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%2Fy9il9s1ypiwgko6jqw0d.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%2Fy9il9s1ypiwgko6jqw0d.png" alt=" " width="799" height="438"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;PivotTable feeding a 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%2F6oxj802ywo838nr5zacz.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%2F6oxj802ywo838nr5zacz.png" alt=" " width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I built seven of these PivotTable/PivotChart pairs in total — rating mix, discount mix, price vs. rating, engagement vs. discount, and three "Top 10" rankings (by rating, by reviews, by discount).&lt;/p&gt;

&lt;p&gt;Alongside the PivotTables, I ran descriptive statistics and correlation checks directly on the &lt;code&gt;Cleaned Data&lt;/code&gt; table using &lt;code&gt;AVERAGE&lt;/code&gt;, &lt;code&gt;SUM&lt;/code&gt;, &lt;code&gt;MAX&lt;/code&gt;/&lt;code&gt;MIN&lt;/code&gt;, and &lt;code&gt;CORREL&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Dashboard Design and Slicer Connections
&lt;/h2&gt;

&lt;p&gt;Everything comes together on a single dashboard sheet: a title bar, five KPI cards across the top, and nine charts.&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%2Fgq01pbnswdxwa8zmnnuh.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%2Fgq01pbnswdxwa8zmnnuh.png" alt=" " width="799" height="435"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Here's the "Business Insights" sheet I built to summarize what the data actually showed &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%2Fvjydyfz84yi7lfh2tffg.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%2Fvjydyfz84yi7lfh2tffg.png" alt=" " width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In plain language:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The catalog is aggressively discounted.&lt;/strong&gt; 55.4% of products (62 of 112) are discounted more than 40%.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;But bigger discounts don't buy more attention.&lt;/strong&gt; Products discounted 20–40% average 15.3 reviews each &lt;em&gt;more&lt;/em&gt; than the heavily-discounted group's &lt;strong&gt;11.1&lt;/strong&gt; average, and clearly more than the lightly-discounted group's 9.5. The correlation between discount size and review count across the whole catalog is essentially flat (r ≈ -0.14).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rating and popularity are basically unrelated.&lt;/strong&gt; A product's star rating barely correlates with how many people reviewed it (r ≈ 0.06).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Price has only a weak relationship with rating.&lt;/strong&gt; Higher-priced products rate slightly better on average (4.08 vs. 3.64 for the cheapest band), but the relationship is too weak to call a real trend (r ≈ 0.11).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One product is a real warning sign:&lt;/strong&gt; a cordless vacuum cleaner has the most reviews in the entire dataset (69) but only a 2.8-star rating.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  9. Business Recommendations
&lt;/h2&gt;

&lt;p&gt;Based on what the data actually supports:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Don't assume "discount deeper" means "sell more."&lt;/strong&gt; Test the 20–40% discount band deliberately it's where engagement was strongest in this dataset.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audit high-visibility, low-rating listings first.&lt;/strong&gt; They're seen by the most people, so any quality or accuracy issue there does the most damage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Invest in listing quality over price cuts.&lt;/strong&gt; Since price alone barely predicts rating, better photos, descriptions, and accurate specs may do more for perception than another 5% off.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chase more reviews on unrated listings&lt;/strong&gt;, not fewer discounts. Half the catalog (55 of 112 products) has no rating or review at all.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  10. Limitations and Lessons Learned
&lt;/h2&gt;

&lt;p&gt;Being upfront about what this analysis &lt;em&gt;can't&lt;/em&gt; tell you is just as important as the findings themselves:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A review count isn't a sales figure.&lt;/strong&gt; Engagement ≠ conversion, and nothing here should be read as a profit or revenue claim.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One number was a judgment call&lt;/strong&gt;, not a fact: the single price-range row that I replaced with a midpoint.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cleaning and documentation take longer than the "real" analysis, and that's normal.&lt;/strong&gt; Most of the time on this workbook went into deciding what a negative review count means, what to do with a price range, and how to label the 55 products with no rating.&lt;/p&gt;

&lt;h2&gt;
  
  
  11. Links
&lt;/h2&gt;

&lt;p&gt;[&lt;a href="https://github.com/majalealex-ux/Jumia-Product-Performance-Dashboard" rel="noopener noreferrer"&gt;https://github.com/majalealex-ux/Jumia-Product-Performance-Dashboard&lt;/a&gt;]&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>data</category>
      <category>datascience</category>
    </item>
    <item>
      <title>Getting Started with Excel for Data Analytics: From Basics to Data Cleaning</title>
      <dc:creator>Alex Majale</dc:creator>
      <pubDate>Sat, 29 Aug 2026 05:06:33 +0000</pubDate>
      <link>https://dev.to/alex_majale_d64efa6d81883/getting-started-with-excel-for-data-analytics-from-basics-to-data-cleaning-upi-3n7b</link>
      <guid>https://dev.to/alex_majale_d64efa6d81883/getting-started-with-excel-for-data-analytics-from-basics-to-data-cleaning-upi-3n7b</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;We interact with data almost every day. But having data is one thing, and having clean, usable data is another. This is where Excel comes in. It can be a good starting point for cleaning, organising, and analysing data.&lt;br&gt;
Excel is an electronic spreadsheet program that allows users to organize, calculate, format, and analyze data.&lt;br&gt;
Data cleaning is the process of identifying and correcting errors, missing values, duplicates, and inconsistent formats in raw data sets.&lt;/p&gt;

&lt;h2&gt;
  
  
  Basics of Excel
&lt;/h2&gt;

&lt;p&gt;The first thing you'll see once you open Excel is rows, columns, and cells.&lt;br&gt;
A row runs horizontally and is labeled with numbers (1, 2, 3), while a column runs vertically and is labeled with letters (A, B, C)&lt;br&gt;
A cell is the individual rectangular box formed by the intersection of a vertical column and a horizontal row.&lt;br&gt;
These rows, columns, and cells are contained within a worksheet.&lt;br&gt;
One or more worksheets form a workbook.&lt;br&gt;
The image below contains an example of an Excel worksheet with its features;&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%2F342cm5br3macm1modr19.jpg" 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%2F342cm5br3macm1modr19.jpg" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Inside the worksheet, there is basic information I need to know, such as;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sorting which is the process of rearranging your rows of data into a specific order based on the values in one or more columns. This includes arranging text from A to Z or Z to A, arranging numbers from smallest to largest or largest to smallest, and arranging dates and times from oldest to newest or newest to oldest.&lt;/li&gt;
&lt;li&gt;Filtering a tool that hides rows you do not want to see so you can focus only on the data that matches your rules.&lt;/li&gt;
&lt;li&gt;Basic formulas, where I learned that every formula has to begin with an equals sign (=). These formulas include addition, such as &lt;code&gt;=1+1&lt;/code&gt; or &lt;code&gt;=A1+B1&lt;/code&gt;, and subtraction, such as &lt;code&gt;=2-1&lt;/code&gt; or &lt;code&gt;=A1-B1&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Formatting which is the process of changing the visual appearance of data in a spreadsheet to make it easier to read and understand without changing the actual data values.&lt;/p&gt;
&lt;h2&gt;
  
  
  Data Cleaning
&lt;/h2&gt;

&lt;p&gt;I learnt some basic data cleaning techniques such as; &lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Removing duplicates&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Handling missing values&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Removing extra spaces with &lt;code&gt;TRIM()&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standardizing text with &lt;code&gt;UPPER()&lt;/code&gt;, &lt;code&gt;LOWER()&lt;/code&gt;,&lt;code&gt;PROPER()&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fixing inconsistent dates &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To understand how data cleaning works in Excel, I used a small example containing employee records. At first, the data looked  normal, but a closer look revealed some errors.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Employee Name&lt;/th&gt;
&lt;th&gt;Department&lt;/th&gt;
&lt;th&gt;Location&lt;/th&gt;
&lt;th&gt;Hire Date&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;john kamau&lt;/td&gt;
&lt;td&gt;Finance&lt;/td&gt;
&lt;td&gt;Nairobi&lt;/td&gt;
&lt;td&gt;12/01/2024&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Jane Wanjiku&lt;/td&gt;
&lt;td&gt;HR&lt;/td&gt;
&lt;td&gt;nairobi&lt;/td&gt;
&lt;td&gt;15/01/2024&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;John Kamau&lt;/td&gt;
&lt;td&gt;Finance&lt;/td&gt;
&lt;td&gt;Nairobi&lt;/td&gt;
&lt;td&gt;12/13/2024&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;brian Otieno&lt;/td&gt;
&lt;td&gt;IT&lt;/td&gt;
&lt;td&gt;NAIROBI&lt;/td&gt;
&lt;td&gt;18/01/2024&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mary Akinyi&lt;/td&gt;
&lt;td&gt;HR&lt;/td&gt;
&lt;td&gt;Kisumu&lt;/td&gt;
&lt;td&gt;20/01/2024&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  1. Removing duplicates
&lt;/h3&gt;

&lt;p&gt;The first issue I noticed was that &lt;strong&gt;John Kamau appeared twice with the same information&lt;/strong&gt;. Duplicate records can affect analysis by making some results appear higher than they actually are.&lt;/p&gt;

&lt;p&gt;I used Excel's &lt;em&gt;Conditional formatting&lt;/em&gt; feature to identify and remove the repeated record.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Standardising text
&lt;/h3&gt;

&lt;p&gt;The Location column also contained different versions of the same location:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Nairobi&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;nairobi&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;NAIROBI&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Although they refer to the same place, Excel can treat them as different values when analysing the data.&lt;/p&gt;

&lt;p&gt;I standardised the entries so that they followed the same format.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Checking dates
&lt;/h3&gt;

&lt;p&gt;The Hire Date column also needs attention. Dates may appear in different formats depending on how the data was entered. I checked that the values were recognised as actual dates and then applied a consistent date format. Such as correcting the 12/13/2024 to 12/01/2024.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Fixing the Word format
&lt;/h3&gt;

&lt;p&gt;The employee name format is in improper format with words such as john kamau in lower cases instead of proper cases. So i used the formula &lt;code&gt;=PROPER(A2)&lt;/code&gt; to change the format to John Kamau &lt;/p&gt;

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

&lt;p&gt;I initially thought cleaning data meant simply removing blanks and duplicates. I learned that consistency is equally important, especially with dates, categories, and text.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>dataanalytics</category>
      <category>data</category>
    </item>
    <item>
      <title>My First GitHub Project: From a Local Folder to Github Using Git and SSH</title>
      <dc:creator>Alex Majale</dc:creator>
      <pubDate>Thu, 20 Aug 2026 10:09:58 +0000</pubDate>
      <link>https://dev.to/alex_majale_d64efa6d81883/my-first-github-project-from-a-local-folder-to-github-using-git-and-ssh-8e8</link>
      <guid>https://dev.to/alex_majale_d64efa6d81883/my-first-github-project-from-a-local-folder-to-github-using-git-and-ssh-8e8</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;When I first heard the words Git and GitHub, I actually thought that git was the short form of GitHub, only to realise that they are two different things.&lt;br&gt;
Git is free, open-source version control software used by programmers to track code changes and collaborate. Git is a version control system that runs on my computer. GitHub, on the other hand, is a cloud-based web platform where computer programmers store, share, and work together on software code. &lt;br&gt;
This article explains how I created a local repository and pushed the project to GitHub using Git and SSH.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Requirements I Needed
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A GitHub account&lt;/li&gt;
&lt;li&gt;Git installed on the Computer&lt;/li&gt;
&lt;li&gt;An SSH Key configured with GitHub&lt;/li&gt;
&lt;li&gt;Visual Studio Code installed on the Computer &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How I Did It
&lt;/h2&gt;

&lt;p&gt;I started by opening GitBash on my desktop, then typed &lt;code&gt;ls&lt;/code&gt; to see what my desktop contained.&lt;br&gt;
The &lt;code&gt;ls&lt;/code&gt; command means list, and it is used to list the contents of a directory.&lt;br&gt;
Next, I created a folder called My First Project.&lt;br&gt;
using &lt;code&gt;mkdir "My First Project"&lt;/code&gt;&lt;br&gt;
&lt;code&gt;mkdir&lt;/code&gt;means make directory and is used to create a new folder.&lt;br&gt;
I then used &lt;code&gt;cd "My First Project"&lt;/code&gt; to enter the folder.&lt;br&gt;
&lt;code&gt;cd&lt;/code&gt; means change directory and is used to open folders.&lt;br&gt;
While in the My First Project folder, I created another folder called &lt;strong&gt;Data&lt;/strong&gt;.&lt;br&gt;
Using &lt;code&gt;mkdir Data&lt;/code&gt;&lt;br&gt;
Then I created a README file using &lt;code&gt;touch README.md&lt;/code&gt;&lt;br&gt;
&lt;code&gt;touch&lt;/code&gt; is used to create an empty file&lt;br&gt;
So to add information to the README file I used&lt;br&gt;
&lt;code&gt;echo "# My First Project"&amp;gt; README.md&lt;/code&gt;&lt;br&gt;
&lt;code&gt;echo&lt;/code&gt; means to output or display text, data, or variable values directly to a screen, terminal, or log file.&lt;br&gt;
The # is used to show that it is a heading.&lt;br&gt;
I then generated practice data and copied it into the &lt;strong&gt;Data&lt;/strong&gt; folder&lt;br&gt;
I then used &lt;code&gt;echo "This is practice data on Hardware sales"&amp;gt;&amp;gt; README.md&lt;/code&gt;&lt;br&gt;
This time I used &amp;gt;&amp;gt; so that I could not overwrite the first line in the README file.&lt;br&gt;
I then used &lt;code&gt;cat README.md&lt;/code&gt; to see the contents of the README file.&lt;br&gt;
cat is a standard command used to read, print, combine, and create text files directly from the terminal.&lt;br&gt;
I then confirmed the contents of the Data folder using &lt;code&gt;ls Data&lt;/code&gt;&lt;br&gt;
I keyed in &lt;code&gt;git init&lt;/code&gt;&lt;br&gt;
&lt;code&gt;git init&lt;/code&gt;  stands for "Git Initialize," and it is the command used to create a brand-new, empty Git repository.&lt;br&gt;
Then &lt;code&gt;git status&lt;/code&gt;&lt;br&gt;
&lt;code&gt;git status&lt;/code&gt; shows the current state of your repository's working directory and staging area. It tells you which files have been changed, which ones are prepared for your next save point (commit), and which ones Git is completely ignoring.&lt;br&gt;
Then ran &lt;code&gt;git add .&lt;/code&gt;&lt;br&gt;
&lt;code&gt;git add&lt;/code&gt; is the command used to save your code changes into a temporary preparation zone.&lt;br&gt;
Then I ran &lt;code&gt;git commit -m "Add My First Project"&lt;/code&gt;&lt;br&gt;
&lt;code&gt;git commit&lt;/code&gt; is a save point, or snapshot, of your project's files at a specific moment in time.&lt;br&gt;
I then ran &lt;code&gt;git log&lt;/code&gt;&lt;br&gt;
&lt;code&gt;git log&lt;/code&gt; is a command-line tool used to view the history of changes (commits) made to a code repository.&lt;br&gt;
Then &lt;code&gt;git remote add origin[SSH link]&lt;/code&gt;&lt;br&gt;
The SSH link is found on GitHub, where you copy it from the repository you created.&lt;br&gt;
Then I ran &lt;code&gt;git remote -v&lt;/code&gt;&lt;br&gt;
Finally, I ran &lt;code&gt;git push -u origin main&lt;/code&gt;&lt;br&gt;
&lt;code&gt;git push&lt;/code&gt; uploads your local repository commits to a remote repository.&lt;br&gt;
After this, the project was uploaded to my GitHub. &lt;/p&gt;

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

&lt;p&gt;I was able to learn about the difference between git and GitHub, and along the way I managed to understand the process of pushing a project from a local repository to an online repository using Git, GitHub, and SSH.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>git</category>
      <category>github</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
