Spreadsheet Analyzer

Excel analysis

by davila7 · MIT license · ★ 32,299 on GitHub

Excel analysis cover

Analyze Excel spreadsheets, create pivot tables, generate charts, and perform data analysis. Use when analyzing Excel files, spreadsheets, tabular data, or .xlsx files.

---
name: Excel Analysis
description: Analyze Excel spreadsheets, create pivot tables, generate charts, and perform data analysis. Use when analyzing Excel files, spreadsheets, tabular data, or .xlsx files.
---

# Excel Analysis

## Quick start

Read Excel files with pandas:

```python
import pandas as pd

# Read Excel file
df = pd.read_excel("data.xlsx", sheet_name="Sheet1")

# Display first few rows

Overview

Analyze Excel spreadsheets, create pivot tables, generate charts, and perform data analysis. Use when analyzing Excel files, spreadsheets, tabular data, or .xlsx files.

Manual install (npx, ZIP)
Claude Codenpx skills add davila7/claude-code-templates --skill Excel Analysis -g -a claude-code
Claude Code (degit)npx degit davila7/claude-code-templates/cli-tool/components/skills/enterprise-communication/excel-analysis#main ~/.claude/skills/excel-analysis
Claude.ai / desktopZip the folder and upload it under Settings → Capabilities → Skills.
Codex, Cursor, other agentsPoint them at SKILL.md. The other files are plain text.

Connects with Agent Alley MCP · agentalley.io/mcp

Files included

  • SKILL.md5.0 KB
Read SKILL.md here
davila7/main1 file shown
SKILL.md
Show the full text248 lines

Excel Analysis

Quick start

Read Excel files with pandas:

import pandas as pd

# Read Excel file
df = pd.read_excel("data.xlsx", sheet_name="Sheet1")

# Display first few rows
print(df.head())

# Basic statistics
print(df.describe())

Reading multiple sheets

Process all sheets in a workbook:

import pandas as pd

# Read all sheets
excel_file = pd.ExcelFile("workbook.xlsx")

for sheet_name in excel_file.sheet_names:
    df = pd.read_excel(excel_file, sheet_name=sheet_name)
    print(f"\n{sheet_name}:")
    print(df.head())

Data analysis

Perform common analysis tasks:

import pandas as pd

df = pd.read_excel("sales.xlsx")

# Group by and aggregate
sales_by_region = df.groupby("region")["sales"].sum()
print(sales_by_region)

# Filter data
high_sales = df[df["sales"] > 10000]

# Calculate metrics
df["profit_margin"] = (df["revenue"] - df["cost"]) / df["revenue"]

# Sort by column
df_sorted = df.sort_values("sales", ascending=False)

Creating Excel files

Write data to Excel with formatting:

import pandas as pd

df = pd.DataFrame({
    "Product": ["A", "B", "C"],
    "Sales": [100, 200, 150],
    "Profit": [20, 40, 30]
})

# Write to Excel
writer = pd.ExcelWriter("output.xlsx", engine="openpyxl")
df.to_excel(writer, sheet_name="Sales", index=False)

# Get worksheet for formatting
worksheet = writer.sheets["Sales"]

# Auto-adjust column widths
for column in worksheet.columns:
    max_length = 0
    column_letter = column[0].column_letter
    for cell in column:
        if len(str(cell.value)) > max_length:
            max_length = len(str(cell.value))
    worksheet.column_dimensions[column_letter].width = max_length + 2

writer.close()

Pivot tables

Create pivot tables programmatically:

import pandas as pd

df = pd.read_excel("sales_data.xlsx")

# Create pivot table
pivot = pd.pivot_table(
    df,
    values="sales",
    index="region",
    columns="product",
    aggfunc="sum",
    fill_value=0
)

print(pivot)

# Save pivot table
pivot.to_excel("pivot_report.xlsx")

Charts and visualization

Generate charts from Excel data:

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_excel("data.xlsx")

# Create bar chart
df.plot(x="category", y="value", kind="bar")
plt.title("Sales by Category")
plt.xlabel("Category")
plt.ylabel("Sales")
plt.tight_layout()
plt.savefig("chart.png")

# Create pie chart
df.set_index("category")["value"].plot(kind="pie", autopct="%1.1f%%")
plt.title("Market Share")
plt.ylabel("")
plt.savefig("pie_chart.png")

Data cleaning

Clean and prepare Excel data:

import pandas as pd

df = pd.read_excel("messy_data.xlsx")

# Remove duplicates
df = df.drop_duplicates()

# Handle missing values
df = df.fillna(0)  # or df.dropna()

# Remove whitespace
df["name"] = df["name"].str.strip()

# Convert data types
df["date"] = pd.to_datetime(df["date"])
df["amount"] = pd.to_numeric(df["amount"], errors="coerce")

# Save cleaned data
df.to_excel("cleaned_data.xlsx", index=False)

Merging and joining

Combine multiple Excel files:

import pandas as pd

# Read multiple files
df1 = pd.read_excel("sales_q1.xlsx")
df2 = pd.read_excel("sales_q2.xlsx")

# Concatenate vertically
combined = pd.concat([df1, df2], ignore_index=True)

# Merge on common column
customers = pd.read_excel("customers.xlsx")
sales = pd.read_excel("sales.xlsx")

merged = pd.merge(sales, customers, on="customer_id", how="left")

merged.to_excel("merged_data.xlsx", index=False)

Advanced formatting

Apply conditional formatting and styles:

import pandas as pd
from openpyxl import load_workbook
from openpyxl.styles import PatternFill, Font

# Create Excel file
df = pd.DataFrame({
    "Product": ["A", "B", "C"],
    "Sales": [100, 200, 150]
})

df.to_excel("formatted.xlsx", index=False)

# Load workbook for formatting
wb = load_workbook("formatted.xlsx")
ws = wb.active

# Apply conditional formatting
red_fill = PatternFill(start_color="FF0000", end_color="FF0000", fill_type="solid")
green_fill = PatternFill(start_color="00FF00", end_color="00FF00", fill_type="solid")

for row in range(2, len(df) + 2):
    cell = ws[f"B{row}"]
    if cell.value < 150:
        cell.fill = red_fill
    else:
        cell.fill = green_fill

# Bold headers
for cell in ws[1]:
    cell.font = Font(bold=True)

wb.save("formatted.xlsx")

Performance tips

  • Use read_excel with usecols to read specific columns only
  • Use chunksize for very large files
  • Consider using engine='openpyxl' or engine='xlrd' based on file type
  • Use dtype parameter to specify column types for faster reading

Available packages

  • pandas - Data analysis and manipulation (primary)
  • openpyxl - Excel file creation and formatting
  • xlrd - Reading older .xls files
  • xlsxwriter - Advanced Excel writing capabilities
  • matplotlib - Chart generation
1---
2name: Excel Analysis
3description: Analyze Excel spreadsheets, create pivot tables, generate charts, and perform data analysis. Use when analyzing Excel files, spreadsheets, tabular data, or .xlsx files.
4---
5 
6# Excel Analysis
7 
8## Quick start
9 
10Read Excel files with pandas:
11 
12```python
13import pandas as pd
14 
15# Read Excel file
16df = pd.read_excel("data.xlsx", sheet_name="Sheet1")
17 
18# Display first few rows
19print(df.head())
20 
21# Basic statistics
22print(df.describe())
23```
24 
25## Reading multiple sheets
26 
27Process all sheets in a workbook:
28 
29```python
30import pandas as pd
31 
32# Read all sheets
33excel_file = pd.ExcelFile("workbook.xlsx")
34 
35for sheet_name in excel_file.sheet_names:
36 df = pd.read_excel(excel_file, sheet_name=sheet_name)
37 print(f"\n{sheet_name}:")
38 print(df.head())
39```
40 
41## Data analysis
42 
43Perform common analysis tasks:
44 
45```python
46import pandas as pd
47 
48df = pd.read_excel("sales.xlsx")
49 
50# Group by and aggregate
51sales_by_region = df.groupby("region")["sales"].sum()
52print(sales_by_region)
53 
54# Filter data
55high_sales = df[df["sales"] > 10000]
56 
57# Calculate metrics
58df["profit_margin"] = (df["revenue"] - df["cost"]) / df["revenue"]
59 
60# Sort by column
61df_sorted = df.sort_values("sales", ascending=False)
62```
63 
64## Creating Excel files
65 
66Write data to Excel with formatting:
67 
68```python
69import pandas as pd
70 
71df = pd.DataFrame({
72 "Product": ["A", "B", "C"],
73 "Sales": [100, 200, 150],
74 "Profit": [20, 40, 30]
75})
76 
77# Write to Excel
78writer = pd.ExcelWriter("output.xlsx", engine="openpyxl")
79df.to_excel(writer, sheet_name="Sales", index=False)
80 
81# Get worksheet for formatting
82worksheet = writer.sheets["Sales"]
83 
84# Auto-adjust column widths
85for column in worksheet.columns:
86 max_length = 0
87 column_letter = column[0].column_letter
88 for cell in column:
89 if len(str(cell.value)) > max_length:
90 max_length = len(str(cell.value))
91 worksheet.column_dimensions[column_letter].width = max_length + 2
92 
93writer.close()
94```
95 
96## Pivot tables
97 
98Create pivot tables programmatically:
99 
100```python
101import pandas as pd
102 
103df = pd.read_excel("sales_data.xlsx")
104 
105# Create pivot table
106pivot = pd.pivot_table(
107 df,
108 values="sales",
109 index="region",
110 columns="product",
111 aggfunc="sum",
112 fill_value=0
113)
114 
115print(pivot)
116 
117# Save pivot table
118pivot.to_excel("pivot_report.xlsx")
119```
120 
121## Charts and visualization
122 
123Generate charts from Excel data:
124 
125```python
126import pandas as pd
127import matplotlib.pyplot as plt
128 
129df = pd.read_excel("data.xlsx")
130 
131# Create bar chart
132df.plot(x="category", y="value", kind="bar")
133plt.title("Sales by Category")
134plt.xlabel("Category")
135plt.ylabel("Sales")
136plt.tight_layout()
137plt.savefig("chart.png")
138 
139# Create pie chart
140df.set_index("category")["value"].plot(kind="pie", autopct="%1.1f%%")
141plt.title("Market Share")
142plt.ylabel("")
143plt.savefig("pie_chart.png")
144```
145 
146## Data cleaning
147 
148Clean and prepare Excel data:
149 
150```python
151import pandas as pd
152 
153df = pd.read_excel("messy_data.xlsx")
154 
155# Remove duplicates
156df = df.drop_duplicates()
157 
158# Handle missing values
159df = df.fillna(0) # or df.dropna()
160 
161# Remove whitespace
162df["name"] = df["name"].str.strip()
163 
164# Convert data types
165df["date"] = pd.to_datetime(df["date"])
166df["amount"] = pd.to_numeric(df["amount"], errors="coerce")
167 
168# Save cleaned data
169df.to_excel("cleaned_data.xlsx", index=False)
170```
171 
172## Merging and joining
173 
174Combine multiple Excel files:
175 
176```python
177import pandas as pd
178 
179# Read multiple files
180df1 = pd.read_excel("sales_q1.xlsx")
181df2 = pd.read_excel("sales_q2.xlsx")
182 
183# Concatenate vertically
184combined = pd.concat([df1, df2], ignore_index=True)
185 
186# Merge on common column
187customers = pd.read_excel("customers.xlsx")
188sales = pd.read_excel("sales.xlsx")
189 
190merged = pd.merge(sales, customers, on="customer_id", how="left")
191 
192merged.to_excel("merged_data.xlsx", index=False)
193```
194 
195## Advanced formatting
196 
197Apply conditional formatting and styles:
198 
199```python
200import pandas as pd
201from openpyxl import load_workbook
202from openpyxl.styles import PatternFill, Font
203 
204# Create Excel file
205df = pd.DataFrame({
206 "Product": ["A", "B", "C"],
207 "Sales": [100, 200, 150]
208})
209 
210df.to_excel("formatted.xlsx", index=False)
211 
212# Load workbook for formatting
213wb = load_workbook("formatted.xlsx")
214ws = wb.active
215 
216# Apply conditional formatting
217red_fill = PatternFill(start_color="FF0000", end_color="FF0000", fill_type="solid")
218green_fill = PatternFill(start_color="00FF00", end_color="00FF00", fill_type="solid")
219 
220for row in range(2, len(df) + 2):
221 cell = ws[f"B{row}"]
222 if cell.value < 150:
223 cell.fill = red_fill
224 else:
225 cell.fill = green_fill
226 
227# Bold headers
228for cell in ws[1]:
229 cell.font = Font(bold=True)
230 
231wb.save("formatted.xlsx")
232```
233 
234## Performance tips
235 
236- Use `read_excel` with `usecols` to read specific columns only
237- Use `chunksize` for very large files
238- Consider using `engine='openpyxl'` or `engine='xlrd'` based on file type
239- Use `dtype` parameter to specify column types for faster reading
240 
241## Available packages
242 
243- **pandas** - Data analysis and manipulation (primary)
244- **openpyxl** - Excel file creation and formatting
245- **xlrd** - Reading older .xls files
246- **xlsxwriter** - Advanced Excel writing capabilities
247- **matplotlib** - Chart generation
248 
View all files on GitHub →

Details

License
MIT
Stars on the repo
★ 32,299
Checked
Source
davila7/claude-code-templates ↗
Creator
davila7 · 212 listings
View creator

Similar skills

See all →

More from davila7

Skill2D Game Developmentdavila7/claude-code-templates · by davila72D game development principles. Sprites, tilemaps, physics, camera.★ 32.3k GitHub starsSkill3D Game Development Principlesdavila7/claude-code-templates · by davila73D game development principles. Rendering, shaders, physics, cameras.★ 32.3k GitHub starsSkill3D Web Experience Builderdavila7/claude-code-templates · by davila7Expert in building 3D experiences for the web - Three.js, React Three Fiber, Spline, WebGL, and interactive 3D scenes. Covers product configurators, 3D portfolios, immersive websites, and bringing depth to web experiences. Use when: 3D website, three.js, WebGL, react three fiber, 3D experience.★ 32.3k GitHub starsSkillSplit Test Setupdavila7/claude-code-templates · by davila7When the user wants to plan, design, or implement an A/B test or experiment. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," or "hypothesis." For tracking implementation, see analytics-tracking.★ 32.3k GitHub starsAgentResearch Literature Synthesizerdavila7/claude-code-templates · by davila7Academic research synthesis specialist. Use PROACTIVELY for comprehensive research on academic topics, literature reviews, technical investigations, and well-cited analysis combining multiple sources. <example>Context: A podcast episode needs a segment grounded in peer-reviewed evidence with formal citations. user: "Research the current state of transformer efficiency techniques for the episode, with proper academic citations." assistant: "I'll use the academic-research-synthesizer agent to search arXiv and Semantic Scholar, extract full-text findings via WebFetch, and produce a cited literature synthesis with confidence levels." <commentary>Use academic-research-synthesizer (not comprehensive-researcher) when the episode segment needs peer-reviewed sourcing, formal citation format, and explicit confidence tagging rather than general-purpose multi-source coverage.</commentary></example> <example>Context: The episode-orchestrator has routed a "literature review" request for a technical deep-dive segment. user: "Summarize the research landscape on federated learning privacy guarantees." assistant: "I'll invoke academic-research-synthesizer to systematically search academic sources, note peer-review status per source, and synthesize consensus vs. open debates."</example>★ 32.3k GitHub starsAgentAcademic Research Specialistdavila7/claude-code-templates · by davila7Academic research specialist for scholarly sources, peer-reviewed papers, and academic literature. Use PROACTIVELY for research paper analysis, literature reviews, citation tracking, and academic methodology evaluation. <example>Context: The research-orchestrator has kicked off Phase 4 parallel research on 'efficacy of intermittent fasting' and needs peer-reviewed evidence. user: "Find the academic evidence on intermittent fasting outcomes." assistant: "I'll use the academic-researcher agent to search Semantic Scholar, PubMed, and OpenAlex for peer-reviewed studies and write structured findings to academic-research.md." <commentary>The request is specifically for scholarly/peer-reviewed evidence rather than general web coverage or code, so academic-researcher (not web-researcher or technical-researcher) is the right specialist.</commentary></example> <example>Context: The user wants a literature review comparing methodologies across studies on a topic. user: "Can you review the literature on transformer model interpretability and identify research gaps?" assistant: "Let me invoke the academic-researcher agent to pull foundational and recent papers, extract methodologies, and surface open research gaps." <commentary>Literature review, methodology extraction, and research-gap identification are core academic-researcher capabilities, distinct from technical-researcher's focus on code repositories and implementations.</commentary></example>★ 32.3k GitHub stars