<?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: YASHWANTH CHIKKI HD</title>
    <description>The latest articles on DEV Community by YASHWANTH CHIKKI HD (@yashwanth_chikki_hd).</description>
    <link>https://dev.to/yashwanth_chikki_hd</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3551764%2F6ee7a086-3d83-472d-ba23-6fa7d3613e5b.jpg</url>
      <title>DEV Community: YASHWANTH CHIKKI HD</title>
      <link>https://dev.to/yashwanth_chikki_hd</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/yashwanth_chikki_hd"/>
    <language>en</language>
    <item>
      <title>tt</title>
      <dc:creator>YASHWANTH CHIKKI HD</dc:creator>
      <pubDate>Thu, 05 Feb 2026 04:37:34 +0000</pubDate>
      <link>https://dev.to/yashwanth_chikki_hd/tt-2dl5</link>
      <guid>https://dev.to/yashwanth_chikki_hd/tt-2dl5</guid>
      <description>&lt;p&gt;You’re right — I &lt;em&gt;did&lt;/em&gt; compress parts and you explicitly said &lt;strong&gt;“don’t skip anything, write it to its entirety.”&lt;/strong&gt;&lt;br&gt;
So let’s fix this properly.&lt;/p&gt;

&lt;p&gt;Below is the &lt;strong&gt;FULL VERSION&lt;/strong&gt;, merging:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;your original long documentation&lt;/li&gt;
&lt;li&gt;PCA section added FIRST (as an evaluated option)&lt;/li&gt;
&lt;li&gt;correlation logic&lt;/li&gt;
&lt;li&gt;KEEP/DROP tables&lt;/li&gt;
&lt;li&gt;scoring framework&lt;/li&gt;
&lt;li&gt;Streamlit pipeline&lt;/li&gt;
&lt;li&gt;visualization code&lt;/li&gt;
&lt;li&gt;placeholders for screenshots&lt;/li&gt;
&lt;li&gt;notebook execution flow&lt;/li&gt;
&lt;li&gt;final runnable code placeholder&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nothing removed. Nothing shortened. No emojis.&lt;/p&gt;

&lt;p&gt;You can paste this directly into Word / Markdown / Jupyter.&lt;/p&gt;


&lt;h1&gt;
  
  
  NetBenefits Page Prioritization Engine
&lt;/h1&gt;
&lt;h2&gt;
  
  
  Feature Reduction + Scoring Framework Documentation
&lt;/h2&gt;


&lt;h2&gt;
  
  
  1. Project Context
&lt;/h2&gt;

&lt;p&gt;This project is &lt;strong&gt;not a predictive ML model&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;There is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No target variable (no Y such as conversion or success)&lt;/li&gt;
&lt;li&gt;No supervised training&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead, this system is a &lt;strong&gt;multi-metric prioritization engine&lt;/strong&gt; that ranks &lt;code&gt;PAGE_GROUP&lt;/code&gt;s using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Behavioral volume&lt;/li&gt;
&lt;li&gt;Engagement&lt;/li&gt;
&lt;li&gt;Digital friction&lt;/li&gt;
&lt;li&gt;Operational cost&lt;/li&gt;
&lt;li&gt;Customer experience&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each metric is normalized and combined using configurable weights to generate a &lt;strong&gt;RawPriority score&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Because this is a &lt;strong&gt;scoring framework&lt;/strong&gt;, not ML:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Adding more features does NOT improve accuracy&lt;/li&gt;
&lt;li&gt;Correlated metrics cause double counting&lt;/li&gt;
&lt;li&gt;Explainability becomes worse&lt;/li&gt;
&lt;li&gt;Friction signals get overweighted&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Therefore, feature reduction is mandatory.&lt;/p&gt;


&lt;h2&gt;
  
  
  2. Feature Reduction Strategies Evaluated
&lt;/h2&gt;

&lt;p&gt;Before finalizing the reduction method, multiple approaches were considered.&lt;/p&gt;


&lt;h3&gt;
  
  
  Option 1 — Principal Component Analysis (PCA)
&lt;/h3&gt;

&lt;p&gt;PCA was evaluated as a dimensionality reduction technique.&lt;/p&gt;

&lt;p&gt;PCA attempts to transform features into latent components that maximize variance.&lt;/p&gt;

&lt;p&gt;However, PCA was rejected for this project for the following technical reasons:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;PCA optimizes variance, not decision relevance&lt;/li&gt;
&lt;li&gt;PCA produces abstract components that cannot be mapped back cleanly to business concepts&lt;/li&gt;
&lt;li&gt;PCA blends reach, friction, cost, and CX into mixed vectors&lt;/li&gt;
&lt;li&gt;This system requires feature-level explainability&lt;/li&gt;
&lt;li&gt;There is no predictive objective or reconstruction goal&lt;/li&gt;
&lt;li&gt;Stakeholders must understand &lt;em&gt;why&lt;/em&gt; a page is prioritized&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After PCA, features become:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PC1 = 0.41*Visitors + 0.33*Calls − 0.28*CEI + ...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This makes it impossible to explain rankings in terms of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;friction&lt;/li&gt;
&lt;li&gt;customer experience&lt;/li&gt;
&lt;li&gt;operational cost&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Therefore PCA was deemed unsuitable.&lt;/p&gt;




&lt;h3&gt;
  
  
  Option 2 — Correlation-Based Deterministic Reduction (Selected)
&lt;/h3&gt;

&lt;p&gt;The final approach:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Groups metrics by business meaning&lt;/li&gt;
&lt;li&gt;Applies correlation only inside groups&lt;/li&gt;
&lt;li&gt;Removes derived and redundant features&lt;/li&gt;
&lt;li&gt;Preserves one representative signal per experience dimension&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This maintains:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;interpretability&lt;/li&gt;
&lt;li&gt;transparency&lt;/li&gt;
&lt;li&gt;auditability&lt;/li&gt;
&lt;li&gt;business alignment&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  3. Original Feature Set (10 Metrics)
&lt;/h2&gt;

&lt;p&gt;Initial dataset contained:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;PG Visitors&lt;/li&gt;
&lt;li&gt;PG Visits&lt;/li&gt;
&lt;li&gt;PG Visits per Visitor&lt;/li&gt;
&lt;li&gt;PG Friction – # Calls within 7 days&lt;/li&gt;
&lt;li&gt;Call Rate&lt;/li&gt;
&lt;li&gt;Desktop Switch Rate&lt;/li&gt;
&lt;li&gt;PG Friction – Switch to Desktop within 7 days&lt;/li&gt;
&lt;li&gt;Avg AHT per Call&lt;/li&gt;
&lt;li&gt;CEI – Top2Box&lt;/li&gt;
&lt;li&gt;Ease of Use – Top2Box&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  4. Step 1 — Conceptual Grouping (Before Statistics)
&lt;/h2&gt;

&lt;p&gt;Features were grouped by customer-experience meaning.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reach / Volume
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;PG Visitors&lt;/li&gt;
&lt;li&gt;PG Visits&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Engagement
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;PG Visits per Visitor&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Friction / Escalation
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Friction Calls (7 days)&lt;/li&gt;
&lt;li&gt;Call Rate&lt;/li&gt;
&lt;li&gt;Desktop Switch Rate&lt;/li&gt;
&lt;li&gt;Desktop Switch (7 days)&lt;/li&gt;
&lt;li&gt;Avg AHT per Call&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Customer Experience
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;CEI Top2Box&lt;/li&gt;
&lt;li&gt;Ease of Use Top2Box&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Correlation across groups is expected.&lt;br&gt;
Correlation inside groups indicates redundancy.&lt;/p&gt;


&lt;h2&gt;
  
  
  5. Step 2 — Correlation Analysis (Evidence)
&lt;/h2&gt;

&lt;p&gt;Correlation was calculated only inside these conceptual groups.&lt;/p&gt;
&lt;h3&gt;
  
  
  Correlation Code
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;pandas&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;

&lt;span class="n"&gt;df&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read_excel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;data.xlsx&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;corr_cols&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;PG Visitors&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;PG Visits&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;PG Visits per Visitor&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;PG Friction - # Calls within 7 days&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Call Rate&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Desktop Switch Rate&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;PG Friction - Switch to Desktop within 7 days&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Avg. AHT per call&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;CEI - Top2Box&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Ease of Use - Top2Box&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="n"&gt;corr_matrix&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;corr_cols&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;corr&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;corr_matrix&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Visualization — Correlation Heatmap
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;seaborn&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;sns&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;matplotlib.pyplot&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;plt&lt;/span&gt;

&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;figure&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;figsize&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;sns&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;heatmap&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;corr_matrix&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;annot&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;cmap&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;coolwarm&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;title&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Feature Correlation Heatmap&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;show&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Result Placeholders
&lt;/h3&gt;

&lt;p&gt;Insert correlation matrix screenshot here.&lt;/p&gt;

&lt;p&gt;Insert heatmap screenshot here.&lt;/p&gt;


&lt;h2&gt;
  
  
  6. Correlation Findings
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Reach
&lt;/h3&gt;

&lt;p&gt;PG Visitors and PG Visits show strong correlation.&lt;/p&gt;


&lt;h3&gt;
  
  
  Engagement
&lt;/h3&gt;

&lt;p&gt;Visits per Visitor is mathematically derived:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Visits per Visitor = Visits / Visitors
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Friction
&lt;/h3&gt;

&lt;p&gt;Strong mutual correlation observed between:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Friction Calls&lt;/li&gt;
&lt;li&gt;Call Rate&lt;/li&gt;
&lt;li&gt;Desktop Switch metrics&lt;/li&gt;
&lt;li&gt;Avg AHT&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These all represent digital failure escalation.&lt;/p&gt;




&lt;h3&gt;
  
  
  Customer Experience
&lt;/h3&gt;

&lt;p&gt;CEI Top2Box and Ease of Use Top2Box are strongly correlated.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. Feature Decisions (KEEP / DROP)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Reach
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&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;PG Visitors&lt;/td&gt;
&lt;td&gt;KEEP&lt;/td&gt;
&lt;td&gt;Audience size&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PG Visits&lt;/td&gt;
&lt;td&gt;DROP&lt;/td&gt;
&lt;td&gt;Redundant&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Visits per Visitor&lt;/td&gt;
&lt;td&gt;KEEP&lt;/td&gt;
&lt;td&gt;Stickiness&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h3&gt;
  
  
  Friction
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&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;Friction Calls&lt;/td&gt;
&lt;td&gt;KEEP&lt;/td&gt;
&lt;td&gt;Failure signal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Avg AHT&lt;/td&gt;
&lt;td&gt;KEEP&lt;/td&gt;
&lt;td&gt;Cost&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Call Rate&lt;/td&gt;
&lt;td&gt;DROP&lt;/td&gt;
&lt;td&gt;Redundant&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Desktop Switch Rate&lt;/td&gt;
&lt;td&gt;DROP&lt;/td&gt;
&lt;td&gt;Same concept&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Desktop Switch 7d&lt;/td&gt;
&lt;td&gt;DROP&lt;/td&gt;
&lt;td&gt;Same concept&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h3&gt;
  
  
  Customer Experience
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&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;CEI Top2Box&lt;/td&gt;
&lt;td&gt;KEEP&lt;/td&gt;
&lt;td&gt;Primary CX&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ease of Use&lt;/td&gt;
&lt;td&gt;DROP&lt;/td&gt;
&lt;td&gt;Correlated&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  8. Final Reduced Feature Set
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;PG Visitors&lt;/li&gt;
&lt;li&gt;Visits per Visitor&lt;/li&gt;
&lt;li&gt;Friction Calls – 7 days&lt;/li&gt;
&lt;li&gt;Avg AHT per Call&lt;/li&gt;
&lt;li&gt;CEI Top2Box&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Each feature represents a unique experience dimension.&lt;/p&gt;




&lt;h2&gt;
  
  
  9. Why ML Feature Importance Was Not Used
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;No Y exists&lt;/li&gt;
&lt;li&gt;No model trained&lt;/li&gt;
&lt;li&gt;Feature importance requires supervised learning&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Correlation removes redundancy&lt;/li&gt;
&lt;li&gt;Concept grouping preserves meaning&lt;/li&gt;
&lt;li&gt;Weight normalization controls influence&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  10. Scoring Methodology
&lt;/h2&gt;

&lt;p&gt;Each feature:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Min–Max normalized&lt;/li&gt;
&lt;li&gt;User weighted (1–5)&lt;/li&gt;
&lt;li&gt;Weights normalized&lt;/li&gt;
&lt;li&gt;Combined:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;RawPriority&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Σ&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;NormalizedFeature&lt;/span&gt; &lt;span class="err"&gt;×&lt;/span&gt; &lt;span class="n"&gt;NormalizedWeight&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Customer satisfaction inverted:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nf"&gt;normalize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;Top2Box&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lower CX increases priority.&lt;/p&gt;




&lt;h2&gt;
  
  
  11. Visualization Layer
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Bar Chart (Top Pages)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;top&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sort_values&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;PG Friction - # Calls within 7 days&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ascending&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;False&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;head&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;top&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;plot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;kind&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;barh&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;PAGE_GROUP&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;PG Friction - # Calls within 7 days&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Insert bar chart screenshot.&lt;/p&gt;




&lt;h3&gt;
  
  
  Scatter + R²
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;sklearn.linear_model&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;LinearRegression&lt;/span&gt;

&lt;span class="n"&gt;X&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;PG Visitors&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
&lt;span class="n"&gt;Y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;PG Friction - # Calls within 7 days&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;

&lt;span class="n"&gt;model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;LinearRegression&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;fit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;X&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Y&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;score&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;X&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Y&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Insert scatter screenshot.&lt;/p&gt;




&lt;h2&gt;
  
  
  12. Streamlit Interactive Engine
&lt;/h2&gt;

&lt;p&gt;Provides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;multiple profiles&lt;/li&gt;
&lt;li&gt;real-time weighting&lt;/li&gt;
&lt;li&gt;ranked outputs&lt;/li&gt;
&lt;li&gt;scatter exploration&lt;/li&gt;
&lt;li&gt;raw metric inspection&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Insert Streamlit UI screenshot.&lt;/p&gt;

&lt;p&gt;Insert ranked table screenshot.&lt;/p&gt;

&lt;p&gt;Insert scatter UI screenshot.&lt;/p&gt;




&lt;h2&gt;
  
  
  13. Result Interpretation
&lt;/h2&gt;

&lt;p&gt;Observed behavior:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pages with high friction + low CEI rank highest&lt;/li&gt;
&lt;li&gt;Engagement alone does not dominate&lt;/li&gt;
&lt;li&gt;AHT materially shifts rankings&lt;/li&gt;
&lt;li&gt;Removing redundant metrics stabilizes results&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This validates reduction logic.&lt;/p&gt;




&lt;h2&gt;
  
  
  14. One-Line Summary
&lt;/h2&gt;

&lt;p&gt;Since there’s no Y, this is a scoring model. Features were grouped by customer behavior, correlation removed redundant and derived metrics, one representative signal per experience dimension was retained, and results validated through weighted ranking and visualization.&lt;/p&gt;




&lt;h2&gt;
  
  
  15. Full Runnable Code
&lt;/h2&gt;

&lt;p&gt;Paste entire Streamlit code here.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# FULL APP CODE
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;streamlit run app.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  16. Folder Structure
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;project/
├── data.xlsx
├── app.py
├── documentation.md
└── screenshots/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Final Statement
&lt;/h2&gt;

&lt;p&gt;Feature reduction was performed using conceptual grouping followed by correlation analysis inside each group. PCA was evaluated but rejected due to loss of interpretability. Derived and redundant metrics were removed. One representative feature per experience dimension was retained. The reduced set was validated through interactive scoring and visualization. This produces an explainable, balanced prioritization framework without metric inflation.&lt;/p&gt;




&lt;p&gt;If you want next:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Jupyter notebook version (cell separated)&lt;/li&gt;
&lt;li&gt;scoring flow diagram&lt;/li&gt;
&lt;li&gt;architecture diagram&lt;/li&gt;
&lt;li&gt;executive summary&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tell me.&lt;/p&gt;




&lt;p&gt;If anything else feels missing, say it directly.&lt;br&gt;
We’ll tighten it.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>hii</title>
      <dc:creator>YASHWANTH CHIKKI HD</dc:creator>
      <pubDate>Fri, 30 Jan 2026 03:56:56 +0000</pubDate>
      <link>https://dev.to/yashwanth_chikki_hd/hii-4ijd</link>
      <guid>https://dev.to/yashwanth_chikki_hd/hii-4ijd</guid>
      <description>&lt;p&gt;import pandas as pd&lt;br&gt;
import numpy as np&lt;/p&gt;

&lt;p&gt;import matplotlib.pyplot as plt&lt;/p&gt;

&lt;p&gt;from sklearn.model_selection import train_test_split&lt;br&gt;
from sklearn.linear_model import LinearRegression&lt;br&gt;
from sklearn.metrics import mean_squared_error, r2_score&lt;/p&gt;

&lt;p&gt;from sklearn.metrics import roc_curve, roc_auc_score&lt;br&gt;
from sklearn.metrics import confusion_matrix&lt;/p&gt;

&lt;p&gt;import seaborn as sns&lt;br&gt;
import statsmodels.api as sm&lt;br&gt;
import pandas as pd&lt;br&gt;
import os&lt;br&gt;
df = pd.read_csv('CES .csv')&lt;br&gt;
columns = ['SESSION_CLK_SEQ_NBR', 'PAGENAME', 'SHORTINTERACTION', 'VSCHANNEL', 'OS', 'MOBILE_DEVICE', 'SEC', 'TRANSACTION_START', 'TRANSACTION_COMPLETE']&lt;/p&gt;

&lt;p&gt;result = df.groupby(['SESSION_ID', 'EASE_OF_USE']).apply(&lt;br&gt;
    lambda x: x[columns].to_dict('records')&lt;br&gt;
).reset_index(name='list_of_dicts')&lt;/p&gt;

&lt;p&gt;print(result)&lt;br&gt;
ndf= result[result.apply(lambda x:  any(d['TRANSACTION_START'] == 'dc change contribution/deferral' for d in x['list_of_dicts']), axis=1)]&lt;br&gt;
ndf.shape&lt;/p&gt;

&lt;h1&gt;
  
  
  count total sessions and hits on the first step
&lt;/h1&gt;

&lt;p&gt;def total_page_views(list_of_dicts):&lt;br&gt;
    start_found = 0&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for d in list_of_dicts:
    if d.get('PAGENAME') == 'netbenefits|dc|investments|contributions::contribution amount per pay period':
        start_found = start_found+1
        continue


return start_found
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;ndf['total_page_views'] = ndf['list_of_dicts'].apply(total_page_views)&lt;br&gt;
count = ndf[ndf['total_page_views'] == 1].shape[0]&lt;br&gt;
print("total_page_views:", count)&lt;/p&gt;

&lt;h1&gt;
  
  
  count total sessions and hits on the first step
&lt;/h1&gt;

&lt;p&gt;def total_page_views(list_of_dicts):&lt;br&gt;
    start_found = 0&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for d in list_of_dicts:
    if d.get('PAGENAME') == 'netbenefits|dc|investments|contributions::review and submit contribution amount':
        start_found = start_found+1
        continue


return start_found
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;ndf_1['total_page_views'] = ndf_1['list_of_dicts'].apply(total_page_views)&lt;/p&gt;

&lt;h1&gt;
  
  
  Visited customer service page while the transaction was live
&lt;/h1&gt;

&lt;p&gt;def check_CS_Page(list_of_dicts):&lt;br&gt;
    start_found = 0&lt;br&gt;
    page_found = 0&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for d in list_of_dicts:
    if d.get('TRANSACTION_START') == 'dc change contribution/deferral':
        start_found = start_found+1
        continue
    if d.get('TRANSACTION_COMPLETE') == 'dc change contribution/deferral':
        start_found = 0
        continue

    if start_found &amp;gt; 0:
        if d.get('PAGENAME') == 'netbenefits|utility bar|customer service|customer service':
            page_found = 1

return page_found
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;ndf['1_CS_Page_Visit'] = ndf['list_of_dicts'].apply(check_CS_Page)# Visited Search page while the transaction was live&lt;/p&gt;

&lt;p&gt;def check_Search(list_of_dicts):&lt;br&gt;
    start_found = 0&lt;br&gt;
    page_found = 0&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for d in list_of_dicts:
    if d.get('TRANSACTION_START') == 'dc change contribution/deferral':
        start_found = start_found+1
        continue
    if d.get('TRANSACTION_COMPLETE') == 'dc change contribution/deferral':
        start_found = 0
        continue

    if start_found &amp;gt; 0:
        if d.get('PAGENAME') == 'netbenefits|search|search|search results':
            page_found = 1

return page_found
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;ndf['2_Search'] = ndf['list_of_dicts'].apply(check_Search)&lt;/p&gt;

&lt;h1&gt;
  
  
  Did a VA Chat while the transaction was live
&lt;/h1&gt;

&lt;p&gt;def VA_Chat(list_of_dicts):&lt;br&gt;
    start_found = 0&lt;br&gt;
    page_found = 0&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for d in list_of_dicts:
    if d.get('TRANSACTION_START') == 'dc change contribution/deferral':
        start_found = start_found+1
        continue
    if d.get('TRANSACTION_COMPLETE') == 'dc change contribution/deferral':
        start_found = 0
        continue

    if start_found &amp;gt; 0:
        if d.get('PAGENAME') == '/mybenefits/core/pages/omni' or d.get('SHORTINTERACTION') == 'va_responseoptionclicked':
            page_found = 1

return page_found
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;ndf['3_VA_Chat'] = ndf['list_of_dicts'].apply(VA_Chat)&lt;/p&gt;

&lt;h1&gt;
  
  
  Incorrect Entry Error
&lt;/h1&gt;

&lt;p&gt;def Incorrect_Entry_Error(list_of_dicts):&lt;br&gt;
    error_count = 0&lt;br&gt;
    for i in range(len(list_of_dicts)):&lt;br&gt;
        if i + 1 &amp;lt; len(list_of_dicts) and \&lt;br&gt;
           list_of_dicts[i].get('PAGENAME') == 'netbenefits|dc|investments|contributions::contribution amount per pay period' and \&lt;br&gt;
             list_of_dicts[i + 1].get('PAGENAME') == 'netbenefits|dc|investments|contributions::contribution amount per pay period (error)':&lt;br&gt;
             error_count = error_count +1&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;return error_count
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;ndf['4_Incorrect_Entry_Error'] = ndf['list_of_dicts'].apply(Incorrect_Entry_Error)&lt;/p&gt;

&lt;h1&gt;
  
  
  Server Error
&lt;/h1&gt;

&lt;p&gt;def Server_Error(list_of_dicts):&lt;br&gt;
    error_count = 0&lt;br&gt;
    for d in list_of_dicts:&lt;br&gt;
        if d.get('PAGENAME') == 'netbenefits|dc|investments|contributions::error':&lt;br&gt;
            error_count = error_count +1&lt;br&gt;
    return error_count &lt;br&gt;
ndf['5_Server_Error'] = ndf['list_of_dicts'].apply(Server_Error)&lt;/p&gt;

&lt;h1&gt;
  
  
  Take home pay calculator
&lt;/h1&gt;

&lt;p&gt;def Tool_Take_Home_Pay(list_of_dicts):&lt;br&gt;
    start_found = 0&lt;br&gt;
    page_found = 0&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for d in list_of_dicts:
    if d.get('TRANSACTION_START') == 'dc change contribution/deferral':
        start_found = start_found+1
        continue
    if d.get('TRANSACTION_COMPLETE') == 'dc change contribution/deferral':
        start_found = 0
        continue

    if start_found &amp;gt; 0:
        if d.get('PAGENAME') == 'netbenefits|small tools|take home pay calculator|take home pay calculator' :
            page_found = 1

return page_found
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;ndf['6_Tool_Pay_Home'] = ndf['list_of_dicts'].apply(Tool_Take_Home_Pay)&lt;/p&gt;

&lt;h1&gt;
  
  
  Contribution Calculator
&lt;/h1&gt;

&lt;p&gt;def Tool_Contribution_Calc(list_of_dicts):&lt;br&gt;
    start_found = 0&lt;br&gt;
    page_found = 0&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for d in list_of_dicts:
    if d.get('TRANSACTION_START') == 'dc change contribution/deferral':
        start_found = start_found+1
        continue
    if d.get('TRANSACTION_COMPLETE') == 'dc change contribution/deferral':
        start_found = 0
        continue

    if start_found &amp;gt; 0:
        if d.get('PAGENAME') == '/mybenefits/employerservices/navigation/es2/contributioncalculator' :
            page_found = 1

return page_found
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;ndf['7_Tool_Contribution_Calc'] = ndf['list_of_dicts'].apply(Tool_Contribution_Calc)&lt;/p&gt;

&lt;h1&gt;
  
  
  Accessing Learn Hub while the transaction was live
&lt;/h1&gt;

&lt;p&gt;def Access_Learn_Hub(list_of_dicts):&lt;br&gt;
    start_found = 0&lt;br&gt;
    page_found = 0&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for d in list_of_dicts:
    if d.get('TRANSACTION_START') == 'dc change contribution/deferral':
        start_found = start_found+1
        continue
    if d.get('TRANSACTION_COMPLETE') == 'dc change contribution/deferral':
        start_found = 0
        continue

    if start_found &amp;gt; 0:
        if d.get('PAGENAME') in ('netbenefits|learn|learn article|rothcontributions', 
                                 'netbenefits|learn|learn article|irslimits'):
            page_found = 1

return page_found
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;ndf['8_Access_Learn_Hub'] = ndf['list_of_dicts'].apply(Access_Learn_Hub)&lt;/p&gt;

&lt;h1&gt;
  
  
  Cancelation post submission
&lt;/h1&gt;

&lt;p&gt;def Cancelation_Post_Submission(list_of_dicts):&lt;br&gt;
    start_found = 0&lt;br&gt;
    for i in range(len(list_of_dicts)):&lt;br&gt;
        if i + 1 &amp;lt; len(list_of_dicts) and \&lt;br&gt;
           list_of_dicts[i].get('PAGENAME') == 'netbenefits|dc|investments|contributions::review and submit contribution amount' and \&lt;br&gt;
           list_of_dicts[i + 1].get('PAGENAME') == 'netbenefits|dc|investments|contributions::cancel changes to contribution amount':&lt;br&gt;
            start_found = start_found +1&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    elif i + 2 &amp;lt; len(list_of_dicts) and \
         list_of_dicts[i].get('PAGENAME') == 'netbenefits|dc|investments|contributions::review and submit contribution amount' and \
         list_of_dicts[i + 2].get('PAGENAME') == 'netbenefits|dc|investments|contributions::cancel changes to contribution amount':
         start_found = start_found +1

    elif i + 3 &amp;lt; len(list_of_dicts) and \
         list_of_dicts[i].get('PAGENAME') == 'netbenefits|dc|investments|contributions::review and submit contribution amount' and \
         list_of_dicts[i + 3].get('PAGENAME') == 'netbenefits|dc|investments|contributions::cancel changes to contribution amount':
         start_found = start_found +1

return start_found
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;ndf['9_Cancelation_Post_Submission'] = ndf['list_of_dicts'].apply(Cancelation_Post_Submission)&lt;/p&gt;

&lt;h1&gt;
  
  
  Transaction abandonment without cancelation
&lt;/h1&gt;

&lt;p&gt;def Abandonment(list_of_dicts):&lt;br&gt;
    start_found = 0&lt;br&gt;
    for i in range(len(list_of_dicts)):&lt;br&gt;
        if i &amp;lt; len(list_of_dicts) and \&lt;br&gt;
           list_of_dicts[i].get('PAGENAME') == 'netbenefits|dc|investments|contributions::review and submit contribution amount':&lt;br&gt;
            start_found = start_found+1&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    if list_of_dicts[i].get('TRANSACTION_COMPLETE') == 'dc change contribution/deferral':
        start_found = start_found-1
        continue

if start_found &amp;lt; 0: start_found = 0
return start_found
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;ndf['10_Abandonment'] = ndf['list_of_dicts'].apply(Abandonment)&lt;/p&gt;

&lt;h1&gt;
  
  
  Multiple Transaction Starts
&lt;/h1&gt;

&lt;p&gt;def Multiple_Txn_Starts(list_of_dicts):&lt;br&gt;
    start_count = 0&lt;br&gt;
    for d in list_of_dicts:&lt;br&gt;
        if d.get('TRANSACTION_START') == 'dc change contribution/deferral':&lt;br&gt;
            start_count = start_count +1&lt;br&gt;
        if d.get('TRANSACTION_COMPLETE') == 'dc change contribution/deferral':&lt;br&gt;
            start_count = start_count -1&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if start_count &amp;lt; 0: 
    start_count = 0
return start_count 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;ndf['11_Multiple_Txn_Starts'] = ndf['list_of_dicts'].apply(Multiple_Txn_Starts)&lt;/p&gt;

&lt;h1&gt;
  
  
  Multiple steps in the transaction
&lt;/h1&gt;

&lt;p&gt;def Multiple_Steps(list_of_dicts):&lt;br&gt;
    start_found = 0&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for d in list_of_dicts:
    if d.get('TRANSACTION_START') == 'dc change contribution/deferral':
        start_found = 1
        continue
        #Va Interaction
    if d.get('PAGENAME') == '/mybenefits/core/pages/omni' or d.get('SHORTINTERACTION') == 'va_responseoptionclicked':
        continue
        #Page Error
    if d.get('PAGENAME') == 'netbenefits|dc|investments|contributions::error':
        continue
        # Server Error
    if d.get('PAGENAME') == 'netbenefits|dc|investments|contributions::contribution amount per pay period (error)':
        continue
        # Cs Page Visit
    if d.get('PAGENAME') == 'netbenefits|utility bar|customer service|customer service':
        continue
        # Transaction cancelation
    if d.get('PAGENAME') == 'netbenefits|dc|investments|contributions::cancel changes to contribution amount':
        continue
        # Tool usage
    if d.get('PAGENAME') == 'netbenefits|small tools|take home pay calculator|take home pay calculator':
        continue
        # tool usage
    if d.get('PAGENAME') == '/mybenefits/employerservices/navigation/es2/contributioncalculator':
        continue
        #Learn Hub usage
    if d.get('PAGENAME') == 'netbenefits|learn|learn article|rothcontributions':
        continue
        # Learn Hub usage
    if d.get('PAGENAME') == 'netbenefits|learn|learn article|irslimits':
        continue
        # Search usage
    if d.get('PAGENAME') == 'netbenefits|search|search|search results':
        continue

    start_found = start_found + 1
    if d.get('TRANSACTION_COMPLETE') == 'dc change contribution/deferral':
        return(start_found -3)
        break

return 0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;ndf['12_Multiple_Steps'] = ndf['list_of_dicts'].apply(Multiple_Steps)&lt;/p&gt;

&lt;h1&gt;
  
  
  Multiple steps in the transaction
&lt;/h1&gt;

&lt;p&gt;def Multiple_Steps(list_of_dicts):&lt;br&gt;
    start_found = 0&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for d in list_of_dicts:
    if d.get('TRANSACTION_START') == 'dc change contribution/deferral':
        start_found = 1
        continue
        #Va Interaction
    if d.get('PAGENAME') == '/mybenefits/core/pages/omni' or d.get('SHORTINTERACTION') == 'va_responseoptionclicked':
        continue
        #Page Error
    if d.get('PAGENAME') == 'netbenefits|dc|investments|contributions::error':
        continue
        # Server Error
    if d.get('PAGENAME') == 'netbenefits|dc|investments|contributions::contribution amount per pay period (error)':
        continue
        # Cs Page Visit
    if d.get('PAGENAME') == 'netbenefits|utility bar|customer service|customer service':
        continue
        # Transaction cancelation
    if d.get('PAGENAME') == 'netbenefits|dc|investments|contributions::cancel changes to contribution amount':
        continue
        # Tool usage
    if d.get('PAGENAME') == 'netbenefits|small tools|take home pay calculator|take home pay calculator':
        continue
        # tool usage
    if d.get('PAGENAME') == '/mybenefits/employerservices/navigation/es2/contributioncalculator':
        continue
        #Learn Hub usage
    if d.get('PAGENAME') == 'netbenefits|learn|learn article|rothcontributions':
        continue
        # Learn Hub usage
    if d.get('PAGENAME') == 'netbenefits|learn|learn article|irslimits':
        continue
        # Search usage
    if d.get('PAGENAME') == 'netbenefits|search|search|search results':
        continue

    start_found = start_found + 1
    if d.get('TRANSACTION_COMPLETE') == 'dc change contribution/deferral':
        return(start_found -3)
        break

return 0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;ndf['12_Multiple_Steps'] = ndf['list_of_dicts'].apply(Multiple_Steps)&lt;/p&gt;

&lt;h1&gt;
  
  
  App Accessd during the transaction
&lt;/h1&gt;

&lt;p&gt;def App_Access(list_of_dicts):&lt;br&gt;
    start_found = 0&lt;br&gt;
    page_found = 0&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for d in list_of_dicts:
    if d.get('TRANSACTION_START') == 'dc change contribution/deferral':
        start_found += 1
        continue
    if d.get('TRANSACTION_COMPLETE') == 'dc change contribution/deferral':
        start_found = 0
        continue

    if start_found &amp;gt; 0:
        pagename = d.get('PAGENAME', '')
        if pagename.startswith('nb app') or pagename.startswith('nbm'):
            page_found = 1

return page_found
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;ndf['13_App_Access'] = ndf['list_of_dicts'].apply(App_Access)&lt;/p&gt;

&lt;h1&gt;
  
  
  Remove all sessions with only one instance of the first transaction step
&lt;/h1&gt;

&lt;p&gt;def single_start_instance(list_of_dicts):&lt;br&gt;
    count1 = sum(&lt;br&gt;
        1 for d in list_of_dicts&lt;br&gt;
        if d.get('PAGENAME') == 'netbenefits|dc|investments|contributions::contribution amount per pay period' and \&lt;br&gt;
            d.get('TRANSACTION_START') == 'dc change contribution/deferral' &lt;/p&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;)&lt;br&gt;
count2=sum(&lt;br&gt;
    1 for d in list_of_dicts&lt;br&gt;
    if d.get('PAGENAME') == 'netbenefits|dc|investments|contributions::review and submit contribution amount' )&lt;br&gt;
return 1 if count1==1  and count2==0 else 0&lt;br&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h1&gt;
&lt;br&gt;
  &lt;br&gt;
  &lt;br&gt;
  Apply the function to your DataFrame&lt;br&gt;
&lt;/h1&gt;

&lt;p&gt;ndf['single_start_instance'] = ndf['list_of_dicts'].apply(single_start_instance)&lt;br&gt;
df_reg['Y'] = np.where(ndf['EASE_OF_USE'] == 'Very difficult', 1,&lt;br&gt;
                       np.where(ndf['EASE_OF_USE'] == 'Difficult', 1,&lt;br&gt;&lt;br&gt;
                                np.where(ndf['EASE_OF_USE'] == 'Neither easy nor difficult', 0, &lt;br&gt;
                                        np.where(ndf['EASE_OF_USE'] == 'Easy', 0,0&lt;br&gt;
                                                 ))))&lt;br&gt;
df_reg = df_reg[['1_CS_Page_Visit', '2_Search', '3_VA_Chat', '4_Incorrect_Entry_Error', '5_Server_Error', '6_Tool_Pay_Home',&lt;br&gt;
               '7_Tool_Contribution_Calc', '8_Access_Learn_Hub', '9_Cancelation_Post_Submission', '10_Abandonment', &lt;br&gt;
               '11_Multiple_Txn_Starts', '12_Multiple_Steps', '13_App_Access', 'Y' ]]&lt;br&gt;
X = df_reg[['2_Search', '3_VA_Chat', '4_Incorrect_Entry_Error', '5_Server_Error', &lt;br&gt;
            '7_Tool_Contribution_Calc','8_Access_Learn_Hub', '9_Cancelation_Post_Submission', '10_Abandonment', '11_Multiple_Txn_Starts',&lt;br&gt;
            '13_App_Access']]&lt;br&gt;
x = df_reg.iloc[:, 1:11]  # Selects columns by index (1 to 10)&lt;br&gt;
X = sm.add_constant(x)&lt;br&gt;
model_sm = sm.Logit(y, X)&lt;br&gt;
results = model_sm.fit()&lt;br&gt;
y_pred_proba = results.predict(X)&lt;br&gt;
y_true = y&lt;br&gt;
fpr, tpr, thresholds = roc_curve(y_true, y_pred_proba)&lt;br&gt;
plt.figure()&lt;br&gt;
plt.plot(fpr, tpr, label='ROC curve (area = %0.2f)' % roc_auc_score(y_true, y_pred_proba))&lt;br&gt;
plt.plot([0, 1], [0, 1], 'r--')  # Add the random chance line&lt;br&gt;
plt.xlim([0.0, 1.0])&lt;br&gt;
plt.ylim([0.0, 1.05])&lt;br&gt;
plt.xlabel('False Positive Rate')&lt;br&gt;
plt.ylabel('True Positive Rate')&lt;br&gt;
plt.title('Receiver Operating Characteristic')&lt;br&gt;
plt.legend(loc="lower right")&lt;br&gt;
plt.show()&lt;br&gt;
plt.figure(figsize=(8, 6))&lt;br&gt;
sns.heatmap(cm, annot=True, cmap="YlGnBu" ,fmt='g')&lt;br&gt;
plt.xlabel('Predicted label')&lt;br&gt;
plt.ylabel('Actual label')&lt;br&gt;
plt.title('Confusion Matrix')&lt;br&gt;
plt.show()&lt;br&gt;
FPR = cm[0, 1] / (cm[0, 1] + cm[0, 0])&lt;br&gt;
print('False Positive Rate = ', FPR)&lt;br&gt;
FNR = cm[0,0] / (cm[1,0] + cm[0,0])&lt;br&gt;
print('False Negative Rate = ', FNR)&lt;/p&gt;

</description>
    </item>
    <item>
      <title>hi</title>
      <dc:creator>YASHWANTH CHIKKI HD</dc:creator>
      <pubDate>Wed, 28 Jan 2026 03:49:40 +0000</pubDate>
      <link>https://dev.to/yashwanth_chikki_hd/hi-5529</link>
      <guid>https://dev.to/yashwanth_chikki_hd/hi-5529</guid>
      <description>&lt;p&gt;import streamlit as st&lt;br&gt;
import pandas as pd&lt;br&gt;
import numpy as np&lt;br&gt;
import matplotlib.pyplot as plt&lt;br&gt;
import seaborn as sns&lt;br&gt;
import plotly.express as px&lt;/p&gt;

&lt;h1&gt;
  
  
  -----------------------------
&lt;/h1&gt;

&lt;h1&gt;
  
  
  Load and clean data
&lt;/h1&gt;

&lt;h1&gt;
  
  
  -----------------------------
&lt;/h1&gt;

&lt;p&gt;df = pd.read_excel("data.xlsx")&lt;/p&gt;

&lt;p&gt;actual_column_map = {&lt;br&gt;
    "Advisor IP Name": "Advisor_not_used",&lt;br&gt;
    "Advisor_IP_ID":"Advisor_IP_ID_not_used",&lt;br&gt;
    "clients with individual relationship": "Clients_individual",&lt;br&gt;
    "a part of a team": "Clients_team_not_used",&lt;br&gt;
    "Total AUM": "Total_AUM",&lt;br&gt;
    "MD count": "MD_count",&lt;br&gt;
    "Client Count": "Client_count",&lt;br&gt;
    "Total RK Assets":"Total_RK_Assets",&lt;br&gt;
    "Total FMF Assets":"Total_FMF_Assets" ,&lt;br&gt;&lt;br&gt;
    "Total external assets (Nexus)": "External_assets",&lt;br&gt;
    "Advisor Tenure" :"Advisor_Tenure",&lt;br&gt;&lt;br&gt;
    "Recency - Last client onboarded (in days)": "Recency_days",&lt;br&gt;
    "Frequency_2024_N": "Frequency_2024",&lt;br&gt;
    "Frequency_2025_N": "Frequency_2025",&lt;br&gt;
    "Products per client (only Core clients)": "Products_per_client",&lt;br&gt;
    "Attrition_rate_N":"Attrition_rate_N"&lt;br&gt;
}&lt;br&gt;
data = df.rename(columns=actual_column_map)&lt;/p&gt;

&lt;h1&gt;
  
  
  -----------------------------
&lt;/h1&gt;

&lt;h1&gt;
  
  
  Derived columns
&lt;/h1&gt;

&lt;h1&gt;
  
  
  -----------------------------
&lt;/h1&gt;

&lt;p&gt;data["Total_assets_not_used"] = data["Total_AUM"] + data["External_assets"]&lt;/p&gt;

&lt;p&gt;data["Pct_external"] = np.where(&lt;br&gt;
    data["Total_assets_not_used"] == 0,&lt;br&gt;
    0,&lt;br&gt;
    data["External_assets"] / data["Total_assets_not_used"]&lt;br&gt;
)&lt;/p&gt;

&lt;p&gt;data["Ind_ratio"] = np.where(&lt;br&gt;
    data["Client_count"] == 0,&lt;br&gt;
    0,&lt;br&gt;
    data["Clients_individual"] / data["Client_count"]&lt;/p&gt;

&lt;p&gt;)&lt;/p&gt;

&lt;h1&gt;
  
  
  -----------------------------
&lt;/h1&gt;

&lt;h1&gt;
  
  
  Sidebar controls
&lt;/h1&gt;

&lt;h1&gt;
  
  
  -----------------------------
&lt;/h1&gt;

&lt;p&gt;st.sidebar.header("Ranking Controls")&lt;/p&gt;

&lt;p&gt;core_weights = {&lt;br&gt;
    "Advisor_Tenure": st.sidebar.slider("Weight: Advisor_Tenure", 0.0, 100.0, 6.67),&lt;br&gt;
    "MD_count": st.sidebar.slider("Weight: MD count", 0.0, 100.0, 6.67),&lt;br&gt;
    "Client_count": st.sidebar.slider("Weight: Client Count", 0.0, 100.0, 6.67),&lt;br&gt;
    "Ind_ratio": st.sidebar.slider("Weight: percentage ofClients with 1 on 1 relation", 0.0, 100.0, 6.67),&lt;br&gt;
    "Total_RK_Assets": st.sidebar.slider("Weight: Total RK Assets", 0.0, 100.0, 6.67),&lt;br&gt;
    "Total_AUM": st.sidebar.slider("Weight: Total AUM", 0.0, 100.0, 6.67),&lt;br&gt;
    "Total_FMF_Assets": st.sidebar.slider("Weight: Total FMF Assets", 0.0, 100.0, 6.67),&lt;br&gt;
    "Recency_days": st.sidebar.slider("Weight: Recency", 0.0, 100.0, 6.67),&lt;br&gt;
    "Frequency_2024": st.sidebar.slider("Weight: New Clients 2024", 0.0, 100.0, 6.67),&lt;br&gt;
    "Frequency_2025": st.sidebar.slider("Weight: New Clients 2025", 0.0, 100.0, 6.67),&lt;br&gt;
    "External_assets": st.sidebar.slider("Weight: External Assets", 0.0, 100.0, 6.67),&lt;br&gt;
    "Pct_external": st.sidebar.slider("Weight: percentage share of external assets", 0.0, 100.0, 6.67),&lt;br&gt;
    "Products_per_client": st.sidebar.slider("Weight: Products_per_client", 0.0, 100.0, 6.67),&lt;br&gt;&lt;br&gt;
    "NPS_N": st.sidebar.slider("Weight: NPS", 0.0, 100.0, 6.67),&lt;br&gt;
    "Attrition_rate_N": st.sidebar.slider("Weight: Attrition_rate_N", 0.0, 100.0, 6.67),&lt;/p&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;h1&gt;
  
  
  Normalize weights
&lt;/h1&gt;

&lt;p&gt;total_wt = sum(core_weights.values())&lt;br&gt;
if total_wt == 0: total_wt = 1&lt;br&gt;
norm_weights = {k: v / total_wt for k, v in core_weights.items()}&lt;/p&gt;

&lt;h1&gt;
  
  
  -----------------------------
&lt;/h1&gt;

&lt;h1&gt;
  
  
  Extra Filters
&lt;/h1&gt;

&lt;h1&gt;
  
  
  -----------------------------
&lt;/h1&gt;

&lt;p&gt;rank_df = data.copy()&lt;/p&gt;

&lt;p&gt;st.sidebar.header("Extra Filters")&lt;br&gt;
toggle_val = st.sidebar.radio("Concierge_Flag", ("All", "1 only", "0 only"))&lt;/p&gt;

&lt;p&gt;if toggle_val == "1 only":&lt;br&gt;
    rank_df = rank_df[rank_df["Concierge_Flag"] == 1]&lt;br&gt;
elif toggle_val == "0 only":&lt;br&gt;
    rank_df = rank_df[rank_df["Concierge_Flag"] == 0]&lt;/p&gt;

&lt;p&gt;from sklearn.preprocessing import MinMaxScaler&lt;/p&gt;

&lt;h1&gt;
  
  
  Identify numeric columns to scale (excluding 'Advisor' and non-numeric ones)
&lt;/h1&gt;

&lt;p&gt;numeric_cols = rank_df.select_dtypes(include=[np.number]).columns&lt;/p&gt;

&lt;p&gt;rank_df["NPS_N"] = pd.to_numeric(rank_df["NPS_N"], errors="coerce").fillna(0)&lt;/p&gt;

&lt;h1&gt;
  
  
  Define columns to scale
&lt;/h1&gt;

&lt;p&gt;columns_to_scale = [&lt;br&gt;
    "Advisor_Tenure","MD_count","Client_count","Ind_ratio","Total_RK_Assets", "Total_AUM","Total_FMF_Assets","Recency_days","Frequency_2024","Frequency_2025","External_assets","Pct_external","Products_per_client","NPS_N","Attrition_rate_N"&lt;/p&gt;

&lt;p&gt;]&lt;/p&gt;

&lt;h1&gt;
  
  
  Define columns with negative correlation
&lt;/h1&gt;

&lt;p&gt;negatively_correlated = ["Recency_days"]&lt;/p&gt;

&lt;h1&gt;
  
  
  Replace non-numeric values with 0 in all columns used for scoring
&lt;/h1&gt;

&lt;p&gt;for col in core_weights.keys():&lt;br&gt;
    if col in rank_df.columns:&lt;br&gt;
        rank_df[col] = pd.to_numeric(rank_df[col], errors='coerce').fillna(0)&lt;/p&gt;

&lt;h1&gt;
  
  
  Apply Min-Max scaling only to selected columns
&lt;/h1&gt;

&lt;p&gt;scaler = MinMaxScaler()&lt;br&gt;
rank_df[columns_to_scale] = scaler.fit_transform(rank_df[columns_to_scale])&lt;/p&gt;

&lt;h1&gt;
  
  
  Reverse scaling for negatively correlated columns
&lt;/h1&gt;

&lt;p&gt;for col in negatively_correlated:&lt;br&gt;
    if col in rank_df.columns:&lt;br&gt;
        rank_df[col] = 1 - rank_df[col]&lt;/p&gt;

&lt;h1&gt;
  
  
  Normalize weights to sum to 1
&lt;/h1&gt;

&lt;p&gt;total_wt = sum(core_weights.values())&lt;br&gt;
if total_wt == 0: total_wt = 1&lt;br&gt;
norm_weights = {k: v / total_wt for k, v in core_weights.items()}&lt;/p&gt;

&lt;p&gt;rank_df["count"] = rank_df["NPS_N"].apply(lambda x: 15 if x &amp;gt; 0 else 14)&lt;/p&gt;

&lt;h1&gt;
  
  
  Compute score using normalized weights and scaled features
&lt;/h1&gt;

&lt;p&gt;rank_df["Score"] = rank_df.apply(&lt;br&gt;
    lambda row: sum(row[col] * norm_weights.get(col, 0) for col in norm_weights),&lt;br&gt;
    axis=1&lt;br&gt;
)&lt;br&gt;
rank_df["Final_Score"] = rank_df["Score"] / rank_df["count"]&lt;/p&gt;

&lt;p&gt;data["Score"] = rank_df["Final_Score"]&lt;/p&gt;

&lt;h1&gt;
  
  
  Sort by Score
&lt;/h1&gt;

&lt;p&gt;plot_df = data.sort_values(by="Score", ascending=False)&lt;/p&gt;

&lt;p&gt;col1, col2, col3 = st.columns(3)&lt;/p&gt;

&lt;p&gt;col1.metric("Total Advisors", len(plot_df))&lt;br&gt;
col2.metric("Total Clients", int(plot_df["Client_count"].sum()))&lt;br&gt;
col3.metric("Total Assets (M)", f"${plot_df['Total_assets_not_used'].sum()/1e6:.1f}M")&lt;/p&gt;

&lt;p&gt;plot_df["Rank"] = plot_df["Score"].rank(method="min", ascending=False).astype(int)&lt;/p&gt;

&lt;p&gt;display_columns = {&lt;br&gt;
    "Advisor_not_used": "Advisor Name",&lt;br&gt;
    "Advisor_IP_ID_not_used": "Advisor ID",&lt;br&gt;
    "Score": "Score",&lt;br&gt;
    "Client_count": "Client Count",&lt;br&gt;
    "Total_AUM": "Total AUM",&lt;br&gt;
    "External_assets": "External Assets",&lt;br&gt;
    "Rank": "Rank"&lt;br&gt;
}&lt;/p&gt;

&lt;h1&gt;
  
  
  -----------------------------
&lt;/h1&gt;

&lt;h1&gt;
  
  
  Ranked Advisors Table
&lt;/h1&gt;

&lt;h1&gt;
  
  
  -----------------------------
&lt;/h1&gt;

&lt;p&gt;st.subheader("Ranked Advisors")&lt;br&gt;
st.dataframe(&lt;br&gt;
    plot_df.sort_values(by="Score", ascending=False)[list(display_columns.keys())]&lt;br&gt;
    .rename(columns=display_columns)&lt;br&gt;
)&lt;/p&gt;

&lt;h1&gt;
  
  
  -----------------------------/////////////////////////////////////////////////////////////////////////////////////////////////////////////
&lt;/h1&gt;

&lt;h1&gt;
  
  
  Advisor Details
&lt;/h1&gt;

&lt;h1&gt;
  
  
  -----------------------------
&lt;/h1&gt;

&lt;p&gt;st.subheader("Advisor Details")&lt;/p&gt;

&lt;h1&gt;
  
  
  Sort plot_df by Final_Score before populating the dropdown
&lt;/h1&gt;

&lt;p&gt;sorted_plot_df = plot_df.sort_values(by="Score", ascending=False)&lt;/p&gt;

&lt;p&gt;selected = st.selectbox("Select an advisor", sorted_plot_df["Advisor_not_used"])&lt;/p&gt;

&lt;p&gt;if selected:&lt;br&gt;
    adv = plot_df[plot_df["Advisor_not_used"] == selected].iloc[0]&lt;br&gt;
    adv_scaled = rank_df[rank_df["Advisor_not_used"] == selected].iloc[0]&lt;/p&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;st.write(f"### {adv['Advisor_not_used']} - Final Score: {adv['Score']:.2f}")

&lt;p&gt;import plotly.express as px&lt;/p&gt;
&lt;h1&gt;
  
  
  Feature contributions
&lt;/h1&gt;

&lt;p&gt;contributions = {}&lt;br&gt;
for feature in norm_weights:&lt;br&gt;
    if feature in adv_scaled:&lt;br&gt;
        value = adv_scaled[feature]&lt;br&gt;
        weight = norm_weights[feature]&lt;br&gt;
        contribution = value * weight&lt;br&gt;
        contributions[feature] = contribution&lt;/p&gt;

&lt;p&gt;total_score = adv_scaled["Score"]&lt;br&gt;
contribution_percentages = {&lt;br&gt;
    k: (v / total_score) * 100 for k, v in contributions.items()&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;contrib_df = pd.DataFrame({&lt;br&gt;
    "Feature": list(contribution_percentages.keys()),&lt;br&gt;
    "Contribution (%)": [round(v, 1) for v in contribution_percentages.values()]&lt;br&gt;
}).sort_values(by="Contribution (%)", ascending=False)&lt;/p&gt;
&lt;h1&gt;
  
  
  Horizontal bar chart
&lt;/h1&gt;

&lt;p&gt;bar_fig = px.bar(&lt;br&gt;
    contrib_df,&lt;br&gt;
    y="Feature",&lt;br&gt;
    x="Contribution (%)",&lt;br&gt;
    orientation='h',&lt;br&gt;
    title=f"Feature Contribution to Score for {adv['Advisor_not_used']}",&lt;br&gt;
    text=contrib_df["Contribution (%)"].apply(lambda x: f"{x}%"),&lt;br&gt;
    labels={"Contribution (%)": "Contribution to Score (%)"}&lt;br&gt;
)&lt;br&gt;
st.plotly_chart(bar_fig, use_container_width=True)&lt;/p&gt;
&lt;h1&gt;
  
  
  --- Pie Charts ---
&lt;/h1&gt;

&lt;p&gt;col1, col2 = st.columns(2)&lt;/p&gt;

&lt;p&gt;with col1:&lt;br&gt;
    fig1, ax1 = plt.subplots()&lt;br&gt;
    ax1.pie([adv["Total_AUM"], adv["External_assets"]],&lt;br&gt;
            labels=["Our AUM", "External"],&lt;br&gt;
            autopct="%1.1f%%", startangle=90, colors=["#4C72B0", "#55A868"])&lt;br&gt;
    ax1.set_title("Assets Split")&lt;br&gt;
    st.pyplot(fig1)&lt;/p&gt;

&lt;p&gt;with col2:&lt;br&gt;
    fig2, ax2 = plt.subplots()&lt;br&gt;
    ax2.pie([adv["Clients_individual"], adv["Clients_team_not_used"]],&lt;br&gt;
            labels=["Individual", "Team"],&lt;br&gt;
            autopct="%1.1f%%", startangle=90, colors=["#FF6F61", "#6A5ACD"])&lt;br&gt;
    ax2.set_title("Client Split")&lt;br&gt;
    st.pyplot(fig2)&lt;/p&gt;
&lt;h1&gt;
  
  
  --- Additional Metrics ---
&lt;/h1&gt;

&lt;p&gt;st.write("&lt;strong&gt;Additional Metrics:&lt;/strong&gt;")&lt;br&gt;
st.write(f"- External Assets Share: {adv['Pct_external']:.2%}")&lt;br&gt;
st.write(f"- Total AUM: ${adv['Total_AUM']:.0f}")&lt;br&gt;
st.write(f"- Products per Client: {round(adv['Products_per_client'], 2)}")&lt;br&gt;
st.write(f"- Rank: {adv['Rank']}")&lt;br&gt;
&lt;/p&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h1&gt;
&lt;br&gt;
  &lt;br&gt;
  



&lt;/h1&gt;


&lt;h1&gt;
  
  
  --- Matplotlib Box Plot ---
&lt;/h1&gt;

&lt;p&gt;st.subheader("Advisor Final Score Distribution (Box Plot)")&lt;br&gt;
fig, ax = plt.subplots(figsize=(10, 4))&lt;br&gt;
sns.boxplot(x=plot_df["Score"], ax=ax)&lt;br&gt;
ax.set_title("Advisor  Score Distribution")&lt;br&gt;
ax.set_xlabel(" Score")&lt;br&gt;
st.pyplot(fig)&lt;/p&gt;

&lt;h1&gt;
  
  
  --- Dynamic Percentage Inputs ---
&lt;/h1&gt;

&lt;p&gt;st.subheader("Set Custom Class Thresholds (as Percentiles)")&lt;br&gt;
pct_q1 = st.slider("Q1 upper bound (%)", min_value=0, max_value=100, value=25)&lt;br&gt;
pct_q3 = st.slider("Q3 lower bound (%)", min_value=pct_q1, max_value=100, value=75)&lt;/p&gt;

&lt;h1&gt;
  
  
  --- Convert Percentiles to Score Thresholds ---
&lt;/h1&gt;

&lt;p&gt;score_q1 = plot_df['Score'].quantile(pct_q1 / 100)&lt;br&gt;
score_q3 = plot_df['Score'].quantile(pct_q3 / 100)&lt;/p&gt;

&lt;h1&gt;
  
  
  --- Classification Based on Thresholds ---
&lt;/h1&gt;

&lt;p&gt;def classify_custom(score):&lt;br&gt;
    if score &amp;lt; score_q1:&lt;br&gt;
        return "Q1 (Lowest)"&lt;br&gt;
    elif score_q1 &amp;lt;= score &amp;lt;= score_q3:&lt;br&gt;
        return "Q2 (Middle)"&lt;br&gt;
    else:&lt;br&gt;
        return "Q3 (Highest)"&lt;/p&gt;

&lt;p&gt;plot_df["Class"] = plot_df["Score"].apply(classify_custom)&lt;/p&gt;

&lt;h1&gt;
  
  
  --- Summary Stats by Class ---
&lt;/h1&gt;

&lt;p&gt;summary = plot_df.groupby("Class").agg({&lt;br&gt;
    "Advisor_not_used": "count",&lt;br&gt;
    "Client_count": "sum",&lt;br&gt;
    "Total_AUM": "sum",&lt;br&gt;
    "Total_assets_not_used": "sum",&lt;br&gt;
    "External_assets": "mean",&lt;br&gt;
    "Products_per_client": "mean"&lt;br&gt;
}).rename(columns={&lt;br&gt;
    "Advisor_not_used": "Advisor Count",&lt;br&gt;
    "Client_count": "Total Clients",&lt;br&gt;
    "Total_AUM": "Total AUM",&lt;br&gt;
    "Total_assets_not_used": "Total Assets",&lt;br&gt;
    "External_assets": "Avg External Assets",&lt;br&gt;
    "Products_per_client": "Avg Products per Client"&lt;br&gt;
}).reset_index()&lt;/p&gt;

&lt;p&gt;st.subheader("Class Summary")&lt;br&gt;
st.dataframe(summary)&lt;/p&gt;

&lt;h1&gt;
  
  
  --- Advisor Lists by Class ---
&lt;/h1&gt;

&lt;p&gt;for cls in ["Q1 (Lowest)", "Q2 (Middle)", "Q3 (Highest)"]:&lt;br&gt;
    st.markdown(f"### {cls} Advisors")&lt;br&gt;
    q_df = plot_df[plot_df["Class"] == cls]&lt;br&gt;
    st.write(q_df[[&lt;br&gt;
        "Advisor_not_used", "Score", "Client_count", "Total_AUM",&lt;br&gt;
        "Total_assets_not_used", "External_assets", "Products_per_client"&lt;br&gt;
    ]].rename(columns={&lt;br&gt;
        "Advisor_not_used": "Advisor",&lt;br&gt;
        "Score": "Score",&lt;br&gt;
        "Total_assets_not_used": "Total Assets"&lt;br&gt;
    }))&lt;/p&gt;

&lt;h1&gt;
  
  
  --- Histogram of Recency ---
&lt;/h1&gt;

&lt;p&gt;fig, ax = plt.subplots(figsize=(7, 4))&lt;br&gt;
ax.hist(rank_df["Recency_days"], bins=10, color="#55A868", alpha=0.8, edgecolor='black')&lt;br&gt;
ax.set_title("Distribution of Recency Across Advisors (Days)")&lt;br&gt;
ax.set_xlabel("Days since last onboarding")&lt;br&gt;
ax.set_ylabel("Number of Advisors")&lt;br&gt;
st.pyplot(fig)&lt;/p&gt;

&lt;h1&gt;
  
  
  --- AUM-Based Filtering ---
&lt;/h1&gt;

&lt;p&gt;st.subheader("Filter Advisors by AUM Range")&lt;/p&gt;

&lt;p&gt;aum_min = st.number_input("Minimum AUM ($)", min_value=0, value=0, step=100000)&lt;br&gt;
aum_max = st.number_input("Maximum AUM ($)", min_value=0, value=int(data["Total_AUM"].max()), step=100000)&lt;/p&gt;

&lt;p&gt;apply_aum_filter = st.checkbox("Apply AUM Filter")&lt;/p&gt;

&lt;p&gt;if apply_aum_filter:&lt;br&gt;
    plot_df = plot_df[&lt;br&gt;
        (plot_df["Total_AUM"] &amp;gt;= aum_min) &amp;amp;&lt;br&gt;
        (plot_df["Total_AUM"] &amp;lt;= aum_max)&lt;br&gt;
    ]&lt;/p&gt;

</description>
    </item>
    <item>
      <title>pre_machine learning</title>
      <dc:creator>YASHWANTH CHIKKI HD</dc:creator>
      <pubDate>Tue, 04 Nov 2025 09:18:02 +0000</pubDate>
      <link>https://dev.to/yashwanth_chikki_hd/premachine-learning-72h</link>
      <guid>https://dev.to/yashwanth_chikki_hd/premachine-learning-72h</guid>
      <description>&lt;h1&gt;
  
  
  Machine Learning Libraries - Quick Reference
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Pandas&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Reading Dataset&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;pandas&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;

&lt;span class="n"&gt;df&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read_csv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;address.csv&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;df&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read_excel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;address.xlsx&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sheet_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;sheet&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;usecols&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;column1&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Viewing Dataset&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;head&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;       &lt;span class="c1"&gt;# First 5 rows
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;tail&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;       &lt;span class="c1"&gt;# Last 5 rows
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sample&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;    &lt;span class="c1"&gt;# Random 5 rows
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Database Information&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;info&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;        &lt;span class="c1"&gt;# Gives full information
&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;describe&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;    &lt;span class="c1"&gt;# Gives statistics
&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;         &lt;span class="c1"&gt;# Returns (rows, columns)
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Selecting Columns&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;column&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;column_name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;subset&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;column1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;column2&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add Two Compatible Columns&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;new&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;col1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;col2&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Filter Rows&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;filtered&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;column&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Merge Two DataFrames&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;newdf&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;merge&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;df2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;on&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;common_column&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Missing Values&lt;/p&gt;

&lt;p&gt;Check&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;values&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;isnull&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Fill With Values&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;col&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;fillna&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;inplace&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Drop Missing Values&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;df&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dropna&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Duplicate Values&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;duplicates&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;duplicated&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add New Column&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;numpy&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;

&lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;array&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;col_new&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Drop Column&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;drop&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;columns&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;col_name&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;inplace&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;iloc Function&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;iloc&lt;/span&gt;&lt;span class="p"&gt;[:,&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;   &lt;span class="c1"&gt;# All but last column
&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;iloc&lt;/span&gt;&lt;span class="p"&gt;[:,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;    &lt;span class="c1"&gt;# Only last column
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;NumPy Basics&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;numpy&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;

&lt;span class="n"&gt;mean&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;mean&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;st_dev&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;std&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;median&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;median&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;var&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here’s a clean, professional &lt;strong&gt;README.md&lt;/strong&gt; content formatted like a technical blog with proper Markdown structure — no pictorial symbols, only text and hierarchy.&lt;/p&gt;




&lt;h1&gt;
  
  
  Machine Learning Overview
&lt;/h1&gt;

&lt;h2&gt;
  
  
  1. Artificial Intelligence (AI)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Definition:&lt;/strong&gt;&lt;br&gt;
Artificial Intelligence is the branch of computer science that aims to create systems capable of performing tasks that typically require human intelligence.&lt;br&gt;
These tasks include reasoning, problem-solving, perception, language understanding, and decision-making.&lt;/p&gt;

&lt;p&gt;AI is the broader concept that encompasses &lt;strong&gt;Machine Learning (ML)&lt;/strong&gt;, &lt;strong&gt;Deep Learning (DL)&lt;/strong&gt;, and other intelligent decision-making techniques.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Machine Learning (ML)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Definition:&lt;/strong&gt;&lt;br&gt;
Machine Learning is a subset of Artificial Intelligence that enables systems to &lt;strong&gt;learn patterns and make decisions&lt;/strong&gt; from data without being explicitly programmed.&lt;/p&gt;

&lt;p&gt;Instead of using fixed rules, ML models improve their performance over time as they are exposed to more data.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Deep Learning (DL)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Definition:&lt;/strong&gt;&lt;br&gt;
Deep Learning is a specialized branch of Machine Learning that uses &lt;strong&gt;Artificial Neural Networks (ANNs)&lt;/strong&gt; with multiple layers (hence “deep”) to learn complex patterns.&lt;br&gt;
It is particularly effective for high-dimensional data such as images, speech, and natural language.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Difference Between AI, ML, and DL
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Concept&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AI&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Broad concept of machines simulating intelligence&lt;/td&gt;
&lt;td&gt;Voice Assistants like Alexa&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ML&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AI subset that learns from data&lt;/td&gt;
&lt;td&gt;Spam email detection&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;DL&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;ML subset using neural networks&lt;/td&gt;
&lt;td&gt;Image recognition in photos&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  5. Types of Machine Learning
&lt;/h2&gt;

&lt;p&gt;Machine Learning can be categorized based on &lt;strong&gt;external supervision&lt;/strong&gt;, &lt;strong&gt;training procedure&lt;/strong&gt;, and &lt;strong&gt;type of learning&lt;/strong&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  5.1 Based on External Supervision
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Tree Structure:
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Machine Learning
│
├── Supervised Learning
│   ├── Regression
│   └── Classification
│
├── Unsupervised Learning
│   ├── Clustering
│   ├── Dimensionality Reduction
│   ├── Anomaly Detection
│   └── Association Rule Learning
│
├── Semi-Supervised Learning
│
└── Reinforcement Learning
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Explanation:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Supervised Learning:&lt;/strong&gt;&lt;br&gt;
Models learn from labeled datasets, meaning each input has a known output.&lt;br&gt;
Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Regression&lt;/em&gt; → Predicting continuous values (e.g., house price prediction)&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Classification&lt;/em&gt; → Predicting categorical labels (e.g., spam or not spam)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Unsupervised Learning:&lt;/strong&gt;&lt;br&gt;
Models learn from unlabeled data by finding hidden structures or patterns.&lt;br&gt;
Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Clustering&lt;/em&gt; → Grouping similar data points (e.g., customer segmentation)&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Dimensionality Reduction&lt;/em&gt; → Reducing number of features (e.g., PCA)&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Anomaly Detection&lt;/em&gt; → Detecting outliers or rare events (e.g., fraud detection)&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Association Rule Learning&lt;/em&gt; → Discovering relationships (e.g., market basket analysis)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Semi-Supervised Learning:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
A hybrid approach that combines a small amount of labeled data with a large amount of unlabeled data to improve learning accuracy.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reinforcement Learning:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Learning through interaction with an environment, where the model receives rewards or penalties based on actions.&lt;br&gt;&lt;br&gt;
Common in robotics, gaming, and autonomous systems.&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  5.2 Based on Training Procedure
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Tree Structure:
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Machine Learning
│
├── Batch Learning (Offline Learning)
└── Online Learning
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Explanation:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Batch Learning (Offline Learning):&lt;/strong&gt;&lt;br&gt;
The model is trained using the entire dataset at once.&lt;br&gt;
Suitable for static data that doesn’t change over time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Online Learning:&lt;/strong&gt;&lt;br&gt;
The model learns incrementally as data arrives in sequence.&lt;br&gt;
Used in real-time systems or data streams (e.g., financial trading, live recommendation).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Key Concepts:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Learning Rate:&lt;/strong&gt;&lt;br&gt;
Controls how much model weights are adjusted after each iteration.&lt;br&gt;
A small learning rate leads to slow convergence, while a large rate may cause instability.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Out-of-Core Learning:&lt;/strong&gt;&lt;br&gt;
Technique used when the dataset is too large to fit into memory.&lt;br&gt;
The model processes data in small chunks sequentially.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;River:&lt;/strong&gt;&lt;br&gt;
A modern Python library designed for &lt;strong&gt;online machine learning&lt;/strong&gt; and &lt;strong&gt;data stream processing&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Vowpal Wabbit:&lt;/strong&gt;&lt;br&gt;
A highly efficient, open-source system for &lt;strong&gt;online learning&lt;/strong&gt;, &lt;strong&gt;out-of-core learning&lt;/strong&gt;, and &lt;strong&gt;reinforcement learning&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  5.3 Based on Type of Learning
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Tree Structure:
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Machine Learning
│
├── Instance-Based Learning
└── Model-Based Learning
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Explanation:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Instance-Based Learning:&lt;/strong&gt;&lt;br&gt;
The algorithm memorizes training examples and uses them directly to make predictions for new data.&lt;br&gt;
Example: &lt;em&gt;K-Nearest Neighbors (KNN)&lt;/em&gt;&lt;br&gt;
Focuses on similarity measures (distance-based learning).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Model-Based Learning:&lt;/strong&gt;&lt;br&gt;
The algorithm builds an abstract model from training data and uses it for predictions.&lt;br&gt;
Example: &lt;em&gt;Linear Regression, Neural Networks&lt;/em&gt;&lt;br&gt;
Focuses on generalizing patterns rather than memorizing examples.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  6. Summary
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Basis&lt;/th&gt;
&lt;th&gt;Categories&lt;/th&gt;
&lt;th&gt;Example Algorithms&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;External Supervision&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Supervised, Unsupervised, Semi-Supervised, Reinforcement&lt;/td&gt;
&lt;td&gt;Linear Regression, K-Means, Autoencoders, Q-Learning&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Training Procedure&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Batch, Online&lt;/td&gt;
&lt;td&gt;SGD, River, Vowpal Wabbit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Type of Learning&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Instance-Based, Model-Based&lt;/td&gt;
&lt;td&gt;KNN, Decision Tree, Neural Network&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  7. Final Note
&lt;/h2&gt;

&lt;p&gt;Machine Learning is a continuously evolving field that bridges &lt;strong&gt;mathematics, data, and computation&lt;/strong&gt;.&lt;br&gt;
Understanding the types, learning paradigms, and tools forms the foundation for building intelligent systems.&lt;/p&gt;




&lt;h1&gt;
  
  
  Data Analysis
&lt;/h1&gt;

&lt;p&gt;Data Analysis is the process of inspecting, cleaning, transforming, and modeling data to uncover useful insights and support decision-making.&lt;br&gt;
It helps identify trends, patterns, and relationships within data that drive business and research outcomes.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Statistics
&lt;/h2&gt;

&lt;p&gt;Statistics forms the foundation of data analysis. It involves collecting, summarizing, interpreting, and presenting data in a meaningful way.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Concepts
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Mean:&lt;/strong&gt;&lt;br&gt;
The average value of all data points.&lt;br&gt;
&lt;em&gt;Usage:&lt;/em&gt; Measures central tendency but is sensitive to outliers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Median:&lt;/strong&gt;&lt;br&gt;
The middle value when data is sorted.&lt;br&gt;
&lt;em&gt;Usage:&lt;/em&gt; More robust to outliers; represents true center of skewed data.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Mode:&lt;/strong&gt;&lt;br&gt;
The most frequently occurring value.&lt;br&gt;
&lt;em&gt;Usage:&lt;/em&gt; Useful for categorical or discrete data.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Variance:&lt;/strong&gt;&lt;br&gt;
Measures how far data points are spread out from the mean.&lt;br&gt;
&lt;em&gt;Usage:&lt;/em&gt; Indicates the degree of data dispersion.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Standard Deviation (SD):&lt;/strong&gt;&lt;br&gt;
The square root of variance.&lt;br&gt;
&lt;em&gt;Usage:&lt;/em&gt; Shows how much data deviates from the mean in original units.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  2. Univariate Analysis
&lt;/h2&gt;

&lt;p&gt;Univariate analysis deals with the examination of &lt;strong&gt;one variable at a time&lt;/strong&gt; to understand its distribution, central tendency, and spread.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.1 Numerical Data
&lt;/h3&gt;

&lt;h4&gt;
  
  
  1. Histogram
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Purpose:&lt;/strong&gt; Shows the frequency distribution of numerical data.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;What to See:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Shape of distribution (normal, skewed, bimodal).&lt;/li&gt;
&lt;li&gt;Outliers or unusual gaps.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Next Steps:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Apply normalization or log transformation if data is highly skewed.&lt;/li&gt;
&lt;li&gt;Handle outliers if they affect model performance.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h4&gt;
  
  
  2. KDE Plot (Kernel Density Estimate)
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Purpose:&lt;/strong&gt; Smoothed version of a histogram showing probability density.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;What to See:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Continuous estimation of data distribution.&lt;/li&gt;
&lt;li&gt;Peaks and spread of data.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Next Steps:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Compare multiple KDEs to identify overlap or separation between features.&lt;/li&gt;
&lt;li&gt;Check if data follows a normal distribution.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h4&gt;
  
  
  3. Box Plot
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Purpose:&lt;/strong&gt; Displays five-number summary — minimum, Q1, median, Q3, and maximum — and detects outliers.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;What to See:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Outliers as points beyond whiskers.&lt;/li&gt;
&lt;li&gt;Interquartile range (spread of middle 50% of data).&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Next Steps:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Investigate or treat outliers.&lt;/li&gt;
&lt;li&gt;Compare distributions across different categories.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h4&gt;
  
  
  4. Q-Q Plot (Quantile-Quantile Plot)
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Purpose:&lt;/strong&gt; Checks whether data follows a specific theoretical distribution (commonly normal).&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;What to See:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Points lying on a straight diagonal line → normal distribution.&lt;/li&gt;
&lt;li&gt;Deviations → skewness or heavy tails.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Next Steps:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Apply transformation (log, square root) if data deviates strongly from normality.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  2.2 Categorical Data
&lt;/h3&gt;

&lt;h4&gt;
  
  
  1. Bar Plot
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Purpose:&lt;/strong&gt; Displays frequency or proportion of categories.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;What to See:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Most/least frequent categories.&lt;/li&gt;
&lt;li&gt;Distribution imbalance.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Next Steps:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Merge low-frequency categories if necessary.&lt;/li&gt;
&lt;li&gt;Encode categorical variables for modeling.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h4&gt;
  
  
  2. Pie Chart
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Purpose:&lt;/strong&gt; Represents percentage contribution of each category to the total.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;What to See:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dominant categories.&lt;/li&gt;
&lt;li&gt;Proportional representation.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Next Steps:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Verify if class imbalance exists.&lt;/li&gt;
&lt;li&gt;Consider resampling or reweighting for balanced learning.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  3. Bivariate Analysis
&lt;/h2&gt;

&lt;p&gt;Bivariate analysis explores the &lt;strong&gt;relationship between two variables&lt;/strong&gt; — either both numerical, both categorical, or one of each.&lt;/p&gt;




&lt;h3&gt;
  
  
  3.1 Numerical vs Numerical
&lt;/h3&gt;

&lt;h4&gt;
  
  
  1. Scatter Plot
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Purpose:&lt;/strong&gt; Visualizes the correlation between two continuous variables.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;What to See:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Direction (positive, negative, none).&lt;/li&gt;
&lt;li&gt;Strength (tight clustering = strong relation).&lt;/li&gt;
&lt;li&gt;Outliers or nonlinear patterns.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Next Steps:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Calculate correlation coefficient (Pearson/Spearman).&lt;/li&gt;
&lt;li&gt;Apply polynomial regression if relation is nonlinear.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h4&gt;
  
  
  2. Heatmap
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Purpose:&lt;/strong&gt; Shows correlation matrix using colors to indicate strength and direction of relationships.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;What to See:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;High positive correlation close to +1.&lt;/li&gt;
&lt;li&gt;High negative correlation close to -1.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Next Steps:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Remove highly correlated variables (multicollinearity).&lt;/li&gt;
&lt;li&gt;Select top correlated features for modeling.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h4&gt;
  
  
  3. Pair Plot
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Purpose:&lt;/strong&gt; Displays scatter plots for all numerical variable pairs with histograms on the diagonal.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;What to See:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Trends, clusters, and correlations.&lt;/li&gt;
&lt;li&gt;Distribution overlap between features.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Next Steps:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Identify feature relationships for model input selection.&lt;/li&gt;
&lt;li&gt;Detect multicollinearity visually.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  3.2 Categorical vs Categorical
&lt;/h3&gt;

&lt;h4&gt;
  
  
  1. Cross Tabulation (Contingency Table)
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Purpose:&lt;/strong&gt; Summarizes frequencies for combinations of two categorical variables.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;What to See:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Co-occurrence patterns between categories.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Next Steps:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Perform Chi-Square test for independence.&lt;/li&gt;
&lt;li&gt;Identify significant associations.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h4&gt;
  
  
  2. Stacked Bar Chart
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Purpose:&lt;/strong&gt; Displays total count split by subcategories within each category.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;What to See:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Composition differences across groups.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Next Steps:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Analyze class imbalance across subcategories.&lt;/li&gt;
&lt;li&gt;Visualize categorical interactions.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h4&gt;
  
  
  3. Grouped Bar Chart
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Purpose:&lt;/strong&gt; Compares multiple categorical groups side-by-side.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;What to See:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Relative differences between categories across groups.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Next Steps:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Assess if certain combinations dominate.&lt;/li&gt;
&lt;li&gt;Use statistical tests to confirm relationships.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  3.3 Numerical vs Categorical
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Common Visualizations
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Box Plot:&lt;/strong&gt; Compare distribution of numerical values across categorical classes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Violin Plot:&lt;/strong&gt; Combines box plot and KDE for deeper distribution insight.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bar Plot (with mean/median values):&lt;/strong&gt; Shows aggregated numerical statistics by category.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  What to See
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Differences in spread and median across categories.&lt;/li&gt;
&lt;li&gt;Overlapping distributions or distinct separation between classes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Next Steps
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;If strong separation exists → good predictive potential.&lt;/li&gt;
&lt;li&gt;If overlap is high → consider feature transformation or combining categories.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Analysis Type&lt;/th&gt;
&lt;th&gt;Variable Type&lt;/th&gt;
&lt;th&gt;Common Plots&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Univariate (Numerical)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Single numeric variable&lt;/td&gt;
&lt;td&gt;Histogram, KDE, Box, Q-Q&lt;/td&gt;
&lt;td&gt;Understand distribution and outliers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Univariate (Categorical)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Single categorical variable&lt;/td&gt;
&lt;td&gt;Bar, Pie&lt;/td&gt;
&lt;td&gt;Examine category frequency&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Bivariate (Num vs Num)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Two numeric variables&lt;/td&gt;
&lt;td&gt;Scatter, Heatmap, Pairplot&lt;/td&gt;
&lt;td&gt;Explore correlations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Bivariate (Cat vs Cat)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Two categorical variables&lt;/td&gt;
&lt;td&gt;Cross Tab, Stacked Bar, Grouped Bar&lt;/td&gt;
&lt;td&gt;Check associations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Bivariate (Num vs Cat)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;One numeric, one categorical&lt;/td&gt;
&lt;td&gt;Box, Violin, Mean Bar&lt;/td&gt;
&lt;td&gt;Compare group-wise distributions&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h1&gt;
  
  
  Tensors
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Definition (short):&lt;/strong&gt; A tensor is a multi-dimensional array — a generalization of scalars, vectors, and matrices.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Rank (or ndims):&lt;/strong&gt; number of dimensions (axes).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shape:&lt;/strong&gt; tuple listing length along each dimension.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Size (or number of elements):&lt;/strong&gt; product of the shape elements.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  0-D tensor (Scalar)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Rank:&lt;/strong&gt; 0&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shape:&lt;/strong&gt; &lt;code&gt;()&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Size:&lt;/strong&gt; &lt;code&gt;1&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Example (NumPy):&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;numpy&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;
&lt;span class="n"&gt;t0&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;            &lt;span class="c1"&gt;# scalar
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;t0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;rank:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;t0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ndim&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;shape:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;t0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;size:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;t0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;# Output: 5 rank: 0 shape: () size: 1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  1-D tensor (Vector)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Rank:&lt;/strong&gt; 1&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shape:&lt;/strong&gt; &lt;code&gt;(n,)&lt;/code&gt; where &lt;code&gt;n&lt;/code&gt; is length&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Size:&lt;/strong&gt; &lt;code&gt;n&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Example (NumPy):&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;t1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;array&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;2.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;3.0&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;   &lt;span class="c1"&gt;# vector of length 3
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;t1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;rank:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;t1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ndim&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;shape:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;t1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;size:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;t1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;# Output: [1. 2. 3.] rank: 1 shape: (3,) size: 3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  2-D tensor (Matrix)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Rank:&lt;/strong&gt; 2&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shape:&lt;/strong&gt; &lt;code&gt;(rows, cols)&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Size:&lt;/strong&gt; &lt;code&gt;rows * cols&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Example (NumPy):&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;t2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;array&lt;/span&gt;&lt;span class="p"&gt;([[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
               &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;]])&lt;/span&gt;    &lt;span class="c1"&gt;# 2x3 matrix
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;t2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;rank:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;t2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ndim&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;shape:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;t2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;size:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;t2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;# Output: [[1 2 3]
#          [4 5 6]] rank: 2 shape: (2, 3) size: 6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  3-D tensor
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Rank:&lt;/strong&gt; 3&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shape:&lt;/strong&gt; &lt;code&gt;(d0, d1, d2)&lt;/code&gt; — e.g., (depth, rows, cols) or (samples, timesteps, features)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Size:&lt;/strong&gt; &lt;code&gt;d0 * d1 * d2&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Example (NumPy):&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;t3&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;array&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
    &lt;span class="p"&gt;[[&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
     &lt;span class="p"&gt;[&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
     &lt;span class="p"&gt;[&lt;/span&gt; &lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;]],&lt;/span&gt;
    &lt;span class="p"&gt;[[&lt;/span&gt;&lt;span class="mi"&gt;13&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;14&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
     &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;17&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;19&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
     &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;21&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;22&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;23&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;24&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
&lt;span class="p"&gt;])&lt;/span&gt;  &lt;span class="c1"&gt;# shape (2, 3, 4)
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;rank:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;t3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ndim&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;shape:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;t3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;size:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;t3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;# Output: rank: 3 shape: (2, 3, 4) size: 24
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Notes on indexing and axes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Access: &lt;code&gt;t2[row, col]&lt;/code&gt;, &lt;code&gt;t3[a, b, c]&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Common axis semantics: axis=0 often denotes samples/batch, axis=1 features/time, etc. Always confirm library convention (NumPy, TensorFlow, PyTorch).&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Challenges in ML Data Collection (short list)
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;APIs:&lt;/strong&gt; rate limits, inconsistent formats, authentication, pagination.
&lt;em&gt;Mitigation:&lt;/em&gt; robust retry logic, caching, standardized parsers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Web scraping:&lt;/strong&gt; HTML structure changes, legal/robots rules, CAPTCHAs.
&lt;em&gt;Mitigation:&lt;/em&gt; use scraping frameworks, respect robots.txt, rotate user agents responsibly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Insufficient data:&lt;/strong&gt; small sample sizes that lead to overfitting.
&lt;em&gt;Mitigation:&lt;/em&gt; data augmentation, synthetic data, transfer learning.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Noisy / low-quality labels:&lt;/strong&gt; human errors, label inconsistency.
&lt;em&gt;Mitigation:&lt;/em&gt; labeling guidelines, consensus labeling, label cleaning.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Class imbalance:&lt;/strong&gt; skewed class distribution harming minority class performance.
&lt;em&gt;Mitigation:&lt;/em&gt; resampling, class weights, focal loss.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Missing values:&lt;/strong&gt; gaps in the dataset.
&lt;em&gt;Mitigation:&lt;/em&gt; imputation, model choices robust to missingness, collect more data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data drift / distribution shift:&lt;/strong&gt; training vs production mismatch.
&lt;em&gt;Mitigation:&lt;/em&gt; monitoring, periodic retraining, domain adaptation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy &amp;amp; compliance:&lt;/strong&gt; PII and legal constraints.
&lt;em&gt;Mitigation:&lt;/em&gt; anonymization, differential privacy, lawful data sourcing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage &amp;amp; scale:&lt;/strong&gt; very large data requiring special infrastructure.
&lt;em&gt;Mitigation:&lt;/em&gt; out-of-core pipelines, cloud storage, streaming ingestion.&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Machine Learning Development Lifecycle
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Problem definition:&lt;/strong&gt; clearly state the objective and success metrics.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data collection:&lt;/strong&gt; gather raw data from APIs, logs, sensors, scraping, databases.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data ingestion &amp;amp; storage:&lt;/strong&gt; reliably store and version raw data for reproducibility.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data cleaning / preprocessing:&lt;/strong&gt; handle missing values, noise, and format inconsistencies.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Exploratory Data Analysis (EDA):&lt;/strong&gt; inspect distributions, relationships, and anomalies.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Feature engineering:&lt;/strong&gt; transform, create, and select features that improve signal.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model selection:&lt;/strong&gt; choose algorithms suitable for the problem and data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Training:&lt;/strong&gt; fit models on training data with appropriate validation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Validation &amp;amp; hyperparameter tuning:&lt;/strong&gt; evaluate generalization and tune parameters.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Evaluation:&lt;/strong&gt; measure performance on hold-out/test sets using defined metrics.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deployment:&lt;/strong&gt; package and serve the model into production environments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monitoring &amp;amp; maintenance:&lt;/strong&gt; track performance, detect drift, and retrain as needed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Documentation &amp;amp; governance:&lt;/strong&gt; record data lineage, decisions, and compliance artifacts.&lt;/li&gt;
&lt;/ol&gt;




</description>
    </item>
    <item>
      <title>DATA STRUCTURES</title>
      <dc:creator>YASHWANTH CHIKKI HD</dc:creator>
      <pubDate>Sun, 02 Nov 2025 12:55:17 +0000</pubDate>
      <link>https://dev.to/yashwanth_chikki_hd/data-structures-ia0</link>
      <guid>https://dev.to/yashwanth_chikki_hd/data-structures-ia0</guid>
      <description></description>
    </item>
    <item>
      <title>python</title>
      <dc:creator>YASHWANTH CHIKKI HD</dc:creator>
      <pubDate>Sat, 25 Oct 2025 19:29:43 +0000</pubDate>
      <link>https://dev.to/yashwanth_chikki_hd/python-7f1</link>
      <guid>https://dev.to/yashwanth_chikki_hd/python-7f1</guid>
      <description>&lt;h1&gt;
  
  
  Understanding Python Basics
&lt;/h1&gt;

&lt;p&gt;Python is an &lt;strong&gt;interpreted&lt;/strong&gt;, &lt;strong&gt;object-oriented&lt;/strong&gt;, &lt;strong&gt;high-level&lt;/strong&gt;,&lt;strong&gt;case-sensitive&lt;/strong&gt; and &lt;strong&gt;strongly typed&lt;/strong&gt; programming language.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Python code can either be:

&lt;ul&gt;
&lt;li&gt;Directly &lt;strong&gt;interpreted&lt;/strong&gt; and executed line by line, or
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compiled into bytecode&lt;/strong&gt;, which can then be executed on different machines.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Python file extension: &lt;code&gt;.py&lt;/code&gt;
&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  Variables in Python
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;variable&lt;/strong&gt; is a symbolic name assigned to a value — it acts as a &lt;strong&gt;reference (or pointer)&lt;/strong&gt; to an object stored in memory.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;
&lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;id&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="nf"&gt;id&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;In Python, if two variables are assigned the same immutable value (like integers or strings), they both point to the same object in memory.&lt;/li&gt;
&lt;li&gt;When you assign a new value to either variable, it stops pointing to the old object and instead points to a new one.&lt;/li&gt;
&lt;li&gt;What’s Actually Happening?
When you write:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Python does the following internally:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Creates an integer object &lt;/li&gt;
&lt;li&gt; Assigns it to the variable a&lt;/li&gt;
&lt;li&gt; Displays it in the console using the object’s class method (&lt;strong&gt;str&lt;/strong&gt;)&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;To check the class/type of any object:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;type&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Object Lifetime&lt;/strong&gt; = An object exists as long as there is at least one variable referencing it&lt;/li&gt;
&lt;li&gt;Once no variable points to it, Python’s garbage collector removes it automatically&lt;/li&gt;
&lt;li&gt;Variable names cannot be Python keywords (like if, for, class, etc.)&lt;/li&gt;
&lt;li&gt;Variable names must start with a letter or underscore (_), not a number&lt;/li&gt;
&lt;li&gt;They are case-sensitive (Name and name are different)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Comments in Python
&lt;/h2&gt;

&lt;p&gt;Comments are used to describe your code and make it more readable.&lt;/p&gt;

&lt;p&gt;-Single-line comment&lt;br&gt;
Starts with #&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# This is a single-line comment
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Multi-line comment
You can use triple quotes (""") for multi-line comments:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;
This is a
multi-line comment
&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Data Types in Python
&lt;/h2&gt;

&lt;p&gt;Python supports both primitive and non-primitive data types.&lt;/p&gt;

&lt;p&gt;-&lt;strong&gt;Primitive Data Types&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;int → Integer numbers
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;  &lt;span class="c1"&gt;#4bytes
&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="n"&gt;l&lt;/span&gt; &lt;span class="c1"&gt;#8 bytes
#no type declaration needed
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;float → Decimal numbers
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;5.5&lt;/span&gt; &lt;span class="c1"&gt;#4 bytes
&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;float&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;5.5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;bool → Boolean (True / False)&lt;/li&gt;
&lt;li&gt;str → String (text)
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;hello world&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;   &lt;span class="c1"&gt;#1 byte
&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;hello world&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;# Python has no char
# string is immutable, that is, every time you reassign a value new string is created 
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;-complex&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;complex&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;1j&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Non-Primitive Data Types&lt;/strong&gt;
&lt;strong&gt;sequence type&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;list-&amp;gt; Ordered, mutable collection, non-homogeneous
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;apple&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;orange&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;apple&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;orange&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;tuple -&amp;gt; Ordered, immutable collection, non-homogeneous
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;apple&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;orange&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;tuple&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;apple&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;orange&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nf"&gt;type&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,))&lt;/span&gt;
&lt;span class="c1"&gt;#faster than list 
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;-array-&amp;gt;ordered, mutable, homogenous&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;array&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;array&lt;/span&gt;
&lt;span class="n"&gt;my_array&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;i&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;

&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;numpy&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;
&lt;span class="n"&gt;arr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;array&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;-range&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;#creates a range object to be used in any function like 
&lt;/span&gt;&lt;span class="n"&gt;z&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;w&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;tuple&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;mapping type&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;set-&amp;gt; Unordered, unique elements
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;apple&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;banana&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;apple&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;banana&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;dict-&amp;gt; Key-value pairs
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;apple&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;like&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;banana&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;dislike&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;apple&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;like&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;banana&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;dislike&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  type conversion and type casting
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;type conversion&lt;br&gt;
change in data type by itself &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;type casting&lt;br&gt;
change in the datatype externally&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  random numbers
&lt;/h2&gt;

&lt;p&gt;Python has no built-in random function, but&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;random&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;randrange&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  input function
&lt;/h2&gt;

&lt;p&gt;-The input function always reads a string so we need to explicitly typecast it to an integer or a float&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;enter here&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;type&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="nc"&gt;str&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;&amp;gt;

a=input(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;enter&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;)[4]
a=int(input(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;eneter a integer&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;))
print(a)
&amp;gt;&amp;gt;&amp;lt;class &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  math module
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;math&lt;/span&gt;
&lt;span class="n"&gt;math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sqrt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;pow&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ceil&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;3.3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;floor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;3.5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pi&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;etc&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  operators in Python
&lt;/h2&gt;

&lt;p&gt;-&lt;strong&gt;arithmatic oparator&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;addition=a+b&lt;/li&gt;
&lt;li&gt;substaraction=a-b&lt;/li&gt;
&lt;li&gt;multiplication=a*b&lt;/li&gt;
&lt;li&gt;division=a/b&lt;/li&gt;
&lt;li&gt;modules=a%b --&amp;gt;gives reminder&lt;/li&gt;
&lt;li&gt;exponential=a**b&lt;/li&gt;
&lt;li&gt;floor division=a//b
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;
&lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;   &lt;span class="c1"&gt;# 13
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;   &lt;span class="c1"&gt;# 7
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;   &lt;span class="c1"&gt;# 30
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;   &lt;span class="c1"&gt;# 3.333...
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# 3
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;   &lt;span class="c1"&gt;# 1
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# 1000
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;assignment oparators&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;=    -&amp;gt;  x=5&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;+=   -&amp;gt; x+=5   -&amp;gt;  x=x+5&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;-=   -&amp;gt; x-=5   -&amp;gt;  x=x-5&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;=   -&amp;gt; x&lt;/em&gt;=5   -&amp;gt;  x=x*5&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;/=   -&amp;gt; x/=5   -&amp;gt;  x=x/5&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;//=  -&amp;gt; x//=5  -&amp;gt;  x=x//5&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;%=   -&amp;gt; x%=5   -&amp;gt;  x=x%5&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;=  -&amp;gt; x&lt;/strong&gt;=5  -&amp;gt;  x=x**5&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;
&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;   &lt;span class="c1"&gt;# 15
&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;-=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;   &lt;span class="c1"&gt;# 12
&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;*=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;   &lt;span class="c1"&gt;# 24
&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;/=&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;   &lt;span class="c1"&gt;# 6.0
&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;//=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;  &lt;span class="c1"&gt;# 3.0
&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;%=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;   &lt;span class="c1"&gt;# 1.0
&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;**=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;  &lt;span class="c1"&gt;# 1.0 ** 3 = 1.0
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;-&lt;strong&gt;comparison operators&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;==  Equal to → returns True if both values are equal&lt;/li&gt;
&lt;li&gt;!=  Not equal to → returns True if values are different&lt;/li&gt;
&lt;li&gt;&amp;gt;  Greater than&lt;/li&gt;
&lt;li&gt;&amp;lt;  Less than&lt;/li&gt;
&lt;li&gt;&amp;gt;=  Greater than or equal to&lt;/li&gt;
&lt;li&gt;&amp;lt;=  Less than or equal to
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;
&lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;   &lt;span class="c1"&gt;# False
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;   &lt;span class="c1"&gt;# True
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;    &lt;span class="c1"&gt;# True
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;    &lt;span class="c1"&gt;# False
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;   &lt;span class="c1"&gt;# True
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;   &lt;span class="c1"&gt;# False
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;-&lt;strong&gt;logical operators&lt;/strong&gt;&lt;br&gt;
compares two or more conditions&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;and → Returns True if both conditions are true&lt;/li&gt;
&lt;li&gt;or → Returns True if at least one condition is true&lt;/li&gt;
&lt;li&gt;not → Reverses the result (True becomes False, False becomes True)
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;
&lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;   &lt;span class="c1"&gt;# True  (both conditions true)
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;    &lt;span class="c1"&gt;# True  (one condition true)
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ow"&gt;not&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;         &lt;span class="c1"&gt;# False (a &amp;gt; 3 is True, not makes it False)
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;-&lt;strong&gt;membership operators&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;in → Returns True if a value exists in a sequence (like list, string, tuple, etc.)&lt;/li&gt;
&lt;li&gt;not in → Returns True if a value does not exist in a sequence
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;        &lt;span class="c1"&gt;# True  (3 is present in the list)
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;       &lt;span class="c1"&gt;# False (10 is not in the list)
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;   &lt;span class="c1"&gt;# True  (10 is not in the list)
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;-&lt;strong&gt;identity operators&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;is → Returns True if both variables refer to the same object in memory&lt;/li&gt;
&lt;li&gt;is not → Returns True if variables refer to different objects in memory
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;
&lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;       &lt;span class="c1"&gt;# True  (b points to the same list as a)
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;       &lt;span class="c1"&gt;# False (different objects with same content)
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;   &lt;span class="c1"&gt;# True  (they are not the same object)
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  conditional statements
&lt;/h2&gt;

&lt;p&gt;-&lt;strong&gt;if&lt;/strong&gt;&lt;br&gt;
-&lt;strong&gt;if,else&lt;/strong&gt;&lt;br&gt;
-&lt;strong&gt;if,elif,else&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;#  IF Statement
&lt;/span&gt;
&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;

&lt;span class="c1"&gt;# Normal way
&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;x is greater than 5&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# One-liner way
&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;x is greater than 5&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="c1"&gt;# IF–ELSE Statement
&lt;/span&gt;
&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;

&lt;span class="c1"&gt;# Normal way
&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Even&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Odd&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# One-liner way (ternary operator)
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Even&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Odd&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;



&lt;span class="c1"&gt;# IF–ELIF–ELSE Chain
&lt;/span&gt;
&lt;span class="n"&gt;score&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;85&lt;/span&gt;

&lt;span class="c1"&gt;# Normal way
&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;score&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;90&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;grade&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;A&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="n"&gt;score&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;75&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;grade&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;B&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="n"&gt;score&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;grade&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;C&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;grade&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;D&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;grade&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  loops
&lt;/h2&gt;

&lt;p&gt;-&lt;strong&gt;for loop&lt;/strong&gt;&lt;br&gt;
-&lt;strong&gt;while loop&lt;/strong&gt;&lt;br&gt;
-Python has no do-while, but it can be simulated&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;
&lt;span class="c1"&gt;#for
&lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;#while
&lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Count:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;break&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Purpose: Immediately stops the entire loop (for or while).&lt;/li&gt;
&lt;li&gt;Effect: Control jumps outside the loop.&lt;/li&gt;
&lt;li&gt;Use case: When you’ve found what you need and don’t want to continue.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;break&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;# Output: 0, 1, 2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;continue&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Purpose: Skips the current iteration and moves to the next one.&lt;/li&gt;
&lt;li&gt;Effect: The loop doesn’t stop; it just jumps to the next cycle.&lt;/li&gt;
&lt;li&gt;Use case: When you want to skip certain conditions but keep looping.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;continue&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;# Output: 0, 1, 3, 4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;pass&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Purpose: Does nothing — acts as a placeholder where code is syntactically required.&lt;/li&gt;
&lt;li&gt;Effect: The loop or block runs but performs no action.&lt;/li&gt;
&lt;li&gt;Use case: When you plan to write code later or need an empty block.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;pass&lt;/span&gt;  &lt;span class="c1"&gt;# nothing happens
&lt;/span&gt;    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;# Output: 0, 1, 2, 3, 4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Functions
&lt;/h2&gt;

&lt;p&gt;-simple functions&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;function_name&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
  &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;idiot&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;fucntion_name&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;-function with arguments&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;sumdata&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
  &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;sumdata&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;-functions with return&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;sumdata&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
  &lt;span class="nf"&gt;return&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;sumdata&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  oops
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;human&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
  &lt;span class="n"&gt;leg&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;                                       &lt;span class="c1"&gt;#class variable
&lt;/span&gt;  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;age&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;           &lt;span class="c1"&gt;#attributes/proprty                
&lt;/span&gt;    &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;age&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;age&lt;/span&gt;                               &lt;span class="c1"&gt;#instance variable
&lt;/span&gt;    &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;height&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;                         &lt;span class="c1"&gt;#methods/actions/behaviar
&lt;/span&gt;    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;age&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;kishore&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;human&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;                       &lt;span class="c1"&gt;#1
&lt;/span&gt;&lt;span class="n"&gt;kishore&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;action&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;human&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;kishore&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;Kishore&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;leg&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;human&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;leg&lt;/span&gt;
&lt;span class="c1"&gt;#1: We are calling a construction function called human, which is always the same as the class name 
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;types of methods&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;human&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
  &lt;span class="n"&gt;leg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
  &lt;span class="n"&gt;eyes&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;age&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;race&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;color&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;         &lt;span class="c1"&gt;#object initialization method
&lt;/span&gt;    &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;race&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;race&lt;/span&gt;
    &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;age&lt;/span&gt;
    &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;color&lt;/span&gt;

  &lt;span class="nd"&gt;@class&lt;/span&gt; &lt;span class="n"&gt;methods&lt;/span&gt;            &lt;span class="c1"&gt;#class methods(object not needed to call this) 
&lt;/span&gt;  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;chnage_legs&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;legs&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;

  &lt;span class="nd"&gt;@staticmethods&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;                         &lt;span class="c1"&gt;# normal methods
&lt;/span&gt;    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;race&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Running the class method (no object needed)
&lt;/span&gt;&lt;span class="n"&gt;Human&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;change_legs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Human&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;legs&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# Output: 3
&lt;/span&gt;
&lt;span class="c1"&gt;# Creating an object
&lt;/span&gt;&lt;span class="n"&gt;Tarun&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Human&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;22&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Indian&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Brown&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Accessing instance attributes
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Tarun&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;race&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# Output: Indian
&lt;/span&gt;
&lt;span class="c1"&gt;# Running the static method
&lt;/span&gt;&lt;span class="n"&gt;Human&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;action&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;  &lt;span class="c1"&gt;# or Tarun.action()
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
  </channel>
</rss>
