{"id":770,"date":"2026-02-14T05:58:13","date_gmt":"2026-02-14T05:58:13","guid":{"rendered":"https:\/\/aiopsschool.com\/blog\/?p=770"},"modified":"2026-02-14T05:58:13","modified_gmt":"2026-02-14T05:58:13","slug":"jupyter-notebook-getting-started","status":"publish","type":"post","link":"https:\/\/aiopsschool.com\/blog\/jupyter-notebook-getting-started\/","title":{"rendered":"Jupyter Notebook  &#8211; Getting started"},"content":{"rendered":"\n<p><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">0) Notebook basics (must know)<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Run cell:<\/strong> <code>Shift + Enter<\/code><\/li>\n\n\n\n<li><strong>Run and insert new cell below:<\/strong> <code>Alt + Enter<\/code><\/li>\n\n\n\n<li><strong>Command mode vs Edit mode:<\/strong> <code>Esc<\/code> (command), <code>Enter<\/code> (edit)<\/li>\n\n\n\n<li><strong>Add cell below\/above:<\/strong> <code>B<\/code> \/ <code>A<\/code> (command mode)<\/li>\n\n\n\n<li><strong>Change cell type:<\/strong> <code>M<\/code> (Markdown), <code>Y<\/code> (Code)<\/li>\n\n\n\n<li><strong>Delete cell:<\/strong> <code>DD<\/code> (press D twice)<\/li>\n\n\n\n<li><strong>Move cell:<\/strong> <code>J\/K<\/code> select then <code>Ctrl + Shift + \u2191\/\u2193<\/code> (or cut\/paste)<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">A) Python essentials inside Notebook (1\u201315)<\/h1>\n\n\n\n<h3 class=\"wp-block-heading\">1) Confirm Python environment<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>import sys, platform\nprint(sys.version)\nprint(platform.platform())\nprint(sys.executable)\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">2) Install a package (inside notebook)<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>%pip install requests\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">3) Check installed packages quickly<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>%pip list\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">4) See current working folder<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>import os\nos.getcwd()\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">5) List files<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>import os\nos.listdir(\".\")\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">6) Create folders safely<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>from pathlib import Path\nPath(\"data\").mkdir(exist_ok=True)\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">7) Read a text file<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>from pathlib import Path\nPath(\"sample.txt\").write_text(\"hello jupyter\\nline2\")\nprint(Path(\"sample.txt\").read_text())\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">8) Timing a single line<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>%time sum(range(10_000_00))\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">9) Timing a whole cell<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>%%time\ntotal = 0\nfor i in range(2_000_000):\n    total += i\ntotal\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">10) Measure memory (if installed)<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>%pip install memory_profiler\n%load_ext memory_profiler\n%memit &#91;i*i for i in range(300_000)]\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">11) Quick help for any function<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>len?\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">12) Docstring + signature<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>help(str.split)\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">13) Pretty print complex objects<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>from pprint import pprint\npprint({\"a\":&#91;1,2,3], \"b\":{\"x\":10,\"y\":20}})\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">14) Rich display (HTML)<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>from IPython.display import HTML\nHTML(\"&lt;h3 style='color:green'&gt;Hello from HTML&lt;\/h3&gt;\")\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">15) Display Markdown from code<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>from IPython.display import Markdown\nMarkdown(\"### This is generated **Markdown** from Python\")\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">B) Markdown mastery (16\u201322)<\/h1>\n\n\n\n<h3 class=\"wp-block-heading\">16) Markdown template (copy into a Markdown cell)<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># Title\n## Section\n- bullet\n- bullet\n\n**bold**, *italic*, `inline code`\n\n&gt; blockquote\n\n&#91;link text](https:\/\/example.com)\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">17) Tables in Markdown<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>| Name | Score |\n|------|------:|\n| Raj  |  98   |\n| Asha |  87   |\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">18) LaTeX math (Markdown cell)<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>Inline: $E=mc^2$\n\nBlock:\n$$\n\\sum_{i=1}^{n} i = \\frac{n(n+1)}{2}\n$$\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">19) Collapsible sections (Markdown cell)<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;details&gt;\n  &lt;summary&gt;Click to expand&lt;\/summary&gt;\n\n  Hidden details here.\n\n&lt;\/details&gt;\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">20) Add images from file (Markdown cell)<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>!&#91;My Image](.\/path\/to\/image.png)\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">21) Add emojis \u2705\ud83d\udd25\ud83d\udccc<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>Learning Jupyter is fun \u2705\ud83d\udd25\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">22) Use \u201cTOC\u201d style headings (habit tip)<\/h3>\n\n\n\n<p>Use consistent headings: <code>#<\/code>, <code>##<\/code>, <code>###<\/code> so notebooks stay readable.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">C) Data analysis superpowers (23\u201335)<\/h1>\n\n\n\n<h3 class=\"wp-block-heading\">23) Install core data stack<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>%pip install numpy pandas matplotlib\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">24) Make a DataFrame<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>import pandas as pd\ndf = pd.DataFrame({\"name\":&#91;\"A\",\"B\",\"C\"], \"score\":&#91;88,92,79]})\ndf\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">25) Filter rows<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>df&#91;df&#91;\"score\"] &gt;= 90]\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">26) Describe statistics<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>df&#91;\"score\"].describe()\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">27) Add a new column<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>df&#91;\"passed\"] = df&#91;\"score\"] &gt;= 80\ndf\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">28) Save to CSV<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>df.to_csv(\"scores.csv\", index=False)\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">29) Load from CSV<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>pd.read_csv(\"scores.csv\")\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">30) Basic plot<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>import matplotlib.pyplot as plt\ndf.plot(kind=\"bar\", x=\"name\", y=\"score\")\nplt.show()\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">31) Histogram<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>df&#91;\"score\"].plot(kind=\"hist\", bins=5)\nplt.show()\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">32) Read JSON<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>import json\ndata = {\"users\":&#91;{\"name\":\"A\",\"age\":30},{\"name\":\"B\",\"age\":26}]}\nPath(\"users.json\").write_text(json.dumps(data))\npd.json_normalize(json.loads(Path(\"users.json\").read_text())&#91;\"users\"])\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">33) Quick pivot<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>sales = pd.DataFrame({\n    \"city\":&#91;\"Tokyo\",\"Tokyo\",\"Osaka\",\"Osaka\"],\n    \"product\":&#91;\"A\",\"B\",\"A\",\"B\"],\n    \"amount\":&#91;10,14,8,11]\n})\nsales.pivot(index=\"city\", columns=\"product\", values=\"amount\")\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">34) Groupby<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>sales.groupby(\"city\")&#91;\"amount\"].sum()\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">35) Missing values<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>import numpy as np\nd = pd.DataFrame({\"a\":&#91;1, None, 3]})\nd.isna()\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">D) Notebook \u201cmagic commands\u201d (36\u201344)<\/h1>\n\n\n\n<h3 class=\"wp-block-heading\">36) Run a shell command<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>!ls -la\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">37) Current directory (shell)<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>!pwd\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">38) Download a file (example)<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># Example only: works if your environment has internet access\n# !curl -L -o sample.txt https:\/\/example.com\/file.txt\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">39) Auto-reload code you edit in .py files<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>%load_ext autoreload\n%autoreload 2\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">40) Save a cell into a Python file<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>%%writefile my_utils.py\ndef add(a,b):\n    return a+b\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">41) Import from your saved file<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>import my_utils\nmy_utils.add(2, 5)\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">42) Debug in notebook (simple)<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>def f(x):\n    return 10 \/ x\n\n# f(0)  # uncomment to see error\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">43) Launch debugger (Python 3.7+)<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>import pdb\n# pdb.set_trace()  # set breakpoint and run cell\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">44) Capture output of a cell<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>%%capture cap\nprint(\"hello\")\nprint(\"captured\")\ncap.stdout\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">E) Visualization + rich outputs (45\u201350)<\/h1>\n\n\n\n<h3 class=\"wp-block-heading\">45) Show an image (local file)<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>from IPython.display import Image\n# Image(\"path\/to\/image.png\")\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">46) Display multiple outputs cleanly<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>from IPython.display import display\ndisplay(df.head())\ndisplay(df.describe())\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">47) Progress bar<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>%pip install tqdm\nfrom tqdm import tqdm\nfor _ in tqdm(range(20000)):\n    pass\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">48) Interactive widgets (sliders\/buttons)<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>%pip install ipywidgets\nimport ipywidgets as widgets\nwidgets.IntSlider(value=5, min=0, max=10)\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">49) Simple interactive function<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>import ipywidgets as widgets\nfrom IPython.display import display\n\ndef show_square(x):\n    print(\"square =\", x*x)\n\nslider = widgets.IntSlider(value=3, min=0, max=20)\nwidgets.interactive(show_square, x=slider)\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">50) Export notebook tips<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>From UI: <strong>File \u2192 Save and Export Notebook As \u2192 HTML \/ PDF<\/strong><\/li>\n\n\n\n<li>Keep notebooks clean by: <strong>Restart Kernel &amp; Run All<\/strong> before sharing.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\ud83d\udd25 15 \u201cPro Tips\u201d that make you fast in Jupyter<\/h1>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Create a <strong>top cell<\/strong> called \u201cSetup\u201d (imports, config, paths).<\/li>\n\n\n\n<li>Use <strong>Markdown headings<\/strong> to structure like a mini-book.<\/li>\n\n\n\n<li>Name notebooks: <code>2026-02-14-topic-v1.ipynb<\/code> for versioning.<\/li>\n\n\n\n<li>When you get weird errors: <strong>Kernel \u2192 Restart<\/strong>.<\/li>\n\n\n\n<li>Use <code>%pip install ...<\/code> inside notebook (avoids wrong pip).<\/li>\n\n\n\n<li>Always print <code>sys.executable<\/code> if packages behave oddly.<\/li>\n\n\n\n<li>Keep data in <code>\/data<\/code> folder, code in <code>\/src<\/code> folder.<\/li>\n\n\n\n<li>Use <code>%%time<\/code> before optimization\u2014don\u2019t guess.<\/li>\n\n\n\n<li>Keep cells small; one idea per cell.<\/li>\n\n\n\n<li>Avoid hidden state: run <strong>Restart &amp; Run All<\/strong> regularly.<\/li>\n\n\n\n<li>Use <code>display()<\/code> for multiple outputs (better than print).<\/li>\n\n\n\n<li>Use <code>autoreload<\/code> when building utilities.<\/li>\n\n\n\n<li>Use <code>tqdm<\/code> for long loops so you know it\u2019s not stuck.<\/li>\n\n\n\n<li>Don\u2019t store secrets in notebooks; use env vars.<\/li>\n\n\n\n<li>Export to HTML for sharing\u2014looks professional.<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><\/h2>\n","protected":false},"excerpt":{"rendered":"<p>0) Notebook basics (must know) A) Python essentials inside Notebook (1\u201315) 1) Confirm Python environment 2) Install a package (inside [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-770","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/aiopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/770","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aiopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/aiopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/aiopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/aiopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=770"}],"version-history":[{"count":1,"href":"https:\/\/aiopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/770\/revisions"}],"predecessor-version":[{"id":771,"href":"https:\/\/aiopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/770\/revisions\/771"}],"wp:attachment":[{"href":"https:\/\/aiopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=770"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aiopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=770"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aiopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=770"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}