Perform various data analysis on SEC 13-F and obtain some insights of fund activities such as number of holdings, AUM, and change of holdings between two quarters.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Comprehensive spreadsheet creation, editing, and analysis with support for formulas, formatting, data analysis, and pivot tables. When Claude needs to work with spreadsheets (.xlsx files) for: (1) Creating new spreadsheets with data and formatting, (2) Reading or analyzing Excel data with pandas, (3) Creating pivot tables programmatically with openpyxl, (4) Building multi-sheet workbooks with source data and pivot table sheets, or (5) Any Excel file operations
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.
This skill covers working with Excel files using Python libraries: openpyxl for Excel-specific features (formatting, formulas, pivot tables) and pandas for data analysis.
import pandas as pd
df = pd.read_excel('file.xlsx') # First sheet
all_sheets = pd.read_excel('file.xlsx', sheet_name=None) # All sheets as dict
df.head() # Preview
df.describe() # Statistics
from openpyxl import load_workbook
wb = load_workbook('file.xlsx')
ws = wb.active
value = ws['A1'].value
# Read calculated values (not formulas)
wb = load_workbook('file.xlsx', data_only=True)
from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, Alignment
wb = Workbook()
ws = wb.active
ws.title = "Data"
# Add data
ws['A1'] = 'Header'
ws.append(['Row', 'of', 'data'])
# Formatting
ws['A1'].font = Font(bold=True)
ws['A1'].fill = PatternFill('solid', start_color='2c3e50')
wb.save('output.xlsx')
Pivot tables summarize data by grouping and aggregating. Use openpyxl's pivot table API.
CRITICAL: All pivot tables MUST use cacheId=0. Using any other cacheId (1, 2, etc.) will cause openpyxl to fail when reading the file back with KeyError. This is an openpyxl limitation.
from openpyxl import Workbook
from openpyxl.pivot.table import TableDefinition, Location, PivotField, DataField, RowColField
from openpyxl.pivot.cache import CacheDefinition, CacheField, CacheSource, WorksheetSource, SharedItems
# 1. Create workbook with source data
wb = Workbook()
data_ws = wb.active
data_ws.title = "SourceData"
# Write your data (with headers in row 1)
data = [
["CategoryName", "ProductName", "Quantity", "Revenue"],
["Beverages", "Chai", 25, 450.00],
["Seafood", "Ikura", 12, 372.00],
# ... more rows
]
for row in data:
data_ws.append(row)
num_rows = len(data)
# 2. Create pivot table sheet
pivot_ws = wb.create_sheet("PivotAnalysis")
# 3. Define the cache (source data reference)
cache = CacheDefinition(
cacheSource=CacheSource(
type="worksheet",
worksheetSource=WorksheetSource(
ref=f"A1:D{num_rows}", # Adjust to your data range
sheet="SourceData"
)
),
cacheFields=[
CacheField(name="CategoryName", sharedItems=SharedItems(count=8)),
CacheField(name="ProductName", sharedItems=SharedItems(count=40)),
CacheField(name="Quantity", sharedItems=SharedItems()),
CacheField(name="Revenue", sharedItems=SharedItems()),
]
)
# 4. Create pivot table definition
pivot = TableDefinition(
name="RevenueByCategory",
cacheId=0, # MUST be 0 for ALL pivot tables - any other value breaks openpyxl
dataCaption="Values",
location=Location(
ref="A3:B10", # Where pivot table will appear
firstHeaderRow=1,
firstDataRow=1,
firstDataCol=1
),
)
# 5. Configure pivot fields (one for each source column)
# Fields are indexed 0, 1, 2, 3 matching cache field order
# Field 0: CategoryName - use as ROW
pivot.pivotFields.append(PivotField(axis="axisRow", showAll=False))
# Field 1: ProductName - not used (just include it)
pivot.pivotFields.append(PivotField(showAll=False))
# Field 2: Quantity - not used
pivot.pivotFields.append(PivotField(showAll=False))
# Field 3: Revenue - use as DATA (for aggregation)
pivot.pivotFields.append(PivotField(dataField=True, showAll=False))
# 6. Add row field reference (index of the field to use as rows)
pivot.rowFields.append(RowColField(x=0)) # CategoryName is field 0
# 7. Add data field with aggregation
pivot.dataFields.append(DataField(
name="Total Revenue",
fld=3, # Revenue is field index 3
subtotal="sum" # Options: sum, count, average, max, min, product, stdDev, var
))
# 8. Attach cache and add to worksheet
pivot.cache = cache
pivot_ws._pivots.append(pivot)
wb.save('output_with_pivot.xlsx')
# Row field: CategoryName (index 0)
# Data field: Count any column
pivot.rowFields.append(RowColField(x=0)) # CategoryName as rows
pivot.dataFields.append(DataField(
name="Order Count",
fld=1, # Any field works for count
subtotal="count"
))
pivot.rowFields.append(RowColField(x=0)) # CategoryName as rows
pivot.dataFields.append(DataField(
name="Total Revenue",
fld=3, # Revenue field
subtotal="sum"
))
# CategoryName as rows, Quarter as columns, revenue as values
pivot.pivotFields[0] = PivotField(axis="axisRow", showAll=False) # Category = row
pivot.pivotFields[1] = PivotField(axis="axisCol", showAll=False) # Quarter = col
pivot.pivotFields[3] = PivotField(dataField=True, showAll=False) # Revenue = data
pivot.rowFields.append(RowColField(x=0)) # Category
pivot.colFields.append(RowColField(x=1)) # Quarter
pivot.dataFields.append(DataField(name="Revenue", fld=3, subtotal="sum"))
# Show both count and sum
pivot.dataFields.append(DataField(name="Order Count", fld=2, subtotal="count"))
pivot.dataFields.append(DataField(name="Total Revenue", fld=3, subtotal="sum"))
| axis value | Meaning |
|---|---|
"axisRow" | Field appears as row labels |
"axisCol" | Field appears as column labels |
"axisPage" | Field is a filter/slicer |
| (none) | Field not used for grouping |
| subtotal value | Aggregation |
|---|---|
"sum" | Sum of values |
"count" | Count of items |
"average" | Average/mean |
"max" | Maximum value |
"min" | Minimum value |
"product" | Product of values |
"stdDev" | Standard deviation |
"var" | Variance |
cacheId=0. Using 1, 2, etc. will cause KeyError when reading the filecacheFields must match your source data columnsref in Location is approximate - Excel will adjust when openedcount parameter to approximate number of unique valuesfrom openpyxl import load_workbook
wb = load_workbook('existing.xlsx')
ws = wb['SheetName']
# Modify
ws['A1'] = 'New Value'
ws.insert_rows(2)
# Add new sheet
new_ws = wb.create_sheet('Analysis')
wb.save('modified.xlsx')
아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.
로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.
아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.
Perform various data analysis on SEC 13-F and obtain some insights of fund activities such as number of holdings, AUM, and change of holdings between two quarters.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
AC branch pi-model power flow equations (P/Q and |S|) with transformer tap ratio and phase shift, matching `acopf-math-model.md` and MATPOWER branch fields. Use when computing branch flows in either direction, aggregating bus injections for nodal balance, checking MVA (rateA) limits, computing branch loading %, or debugging sign/units issues in AC power flow.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Redact text from PDF documents for blind review anonymization
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Use when checking simplified ADA-derived plan-view bathroom accessibility constraints such as turning space, door clear width, toilet centerline, grab bars, and lavatory knee/toe clearance.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Analyze failed GitHub Action jobs for a pull request.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Use when extracting plan-view architectural geometry from DXF files with semantic CAD layers, especially when outputs must normalize rooms, doors, fixtures, clearances, and grab bars into machine-checkable JSON.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.