📊 Charts and Interactive Dashboards
›Plotly — interactive HTML charts your manager opens in a browser
Plotly charts are HTML files — no software needed to view them. Hover over a bar to see exact values. Click a department in the legend to hide/show it. Zoom in on a date range. Share by email or SharePoint link. Build the chart once in Python, your team uses it forever.
📈 Forecasting — Predict Next Month
›Three forecasting methods every MIS professional should know
| Method | Best for | How it works |
|---|---|---|
| Moving Average | Stable businesses with no clear trend | Average of last 3-6 months |
| Linear Trend | Consistently growing or declining businesses | Fit a line through historical data, extend it |
| Year-over-Year | Seasonal businesses (retail, agriculture) | Same month last year × growth rate |
🔄 Apache Airflow — Pipeline Management
›When your automation grows beyond one script
Task Scheduler runs one script. Airflow manages 10 scripts with dependencies, retries, and full visibility. You see a diagram of your entire pipeline. When one step fails, Airflow retries it automatically. If it fails three times, it emails you. The full run history is always available.
☁️ Azure Cloud — Automation Without Your Laptop
›Move your scripts to the cloud — they run 24/7
Your laptop-based automation has one weakness: your laptop must be on. Azure Functions runs your Python script in the cloud on a schedule. Azure Storage holds your data. Power BI connects directly to Azure SQL. The full pipeline runs Monday at 8am whether you are at your desk, on leave, or asleep.
How to get started free
- Create Azure free account at
azure.microsoft.com/free— no payment required - Create Storage Account → upload one of your Excel reports → connect Power BI to it
- One weekend of setup → your dashboard reads from cloud forever after
📋 Complete Cheatsheet
›| Task | Code |
|---|---|
| Read Excel | pd.read_excel("file.xlsx") |
| Read specific sheet | pd.read_excel("file.xlsx", sheet_name="Q1") |
| Merge multiple files | pd.concat([pd.read_excel(f) for f in files]) |
| Filter AND | df[(df["Dept"]=="Sales") & (df["Rev"]>100000)] |
| Group and calculate | df.groupby("Dept").agg(Total=("Rev","sum"), Count=("ID","count")) |
| Pivot table | pd.pivot_table(df, values="Rev", index="Dept", columns="Month") |
| VLOOKUP | pd.merge(df1, df2, on="ID", how="left") |
| Achievement % | df["Pct"] = (df["Actual"]/df["Target"]*100).round(1) |
| Top 10 rows | df.nlargest(10, "Revenue") |
| Running total | df["CumRev"] = df["Revenue"].cumsum() |
| Month from date | df["Month"] = pd.to_datetime(df["Date"]).dt.month_name() |
| Write to Excel | df.to_excel("output.xlsx", index=False) |
| Write multiple sheets | with pd.ExcelWriter("out.xlsx") as w: df.to_excel(w, sheet_name="Data") |
| 3-month moving avg | df["MA3"] = df["Revenue"].rolling(3).mean() |
| Fill missing | df["Rev"].fillna(0) |
| Remove duplicates | df.drop_duplicates(subset=["Employee_ID"]) |
| SQL to DataFrame | pd.read_sql("SELECT * FROM Sales", engine) |