"Historical pattern" implies more than one year of data — a genuine seasonal pattern (higher gas bills every winter, higher electric bills every summer from AC use) only shows up when you compare the same calendar month across multiple years. A single year of bills can look "spiky" without revealing whether that's seasonality or a one-time event, so the first step is making sure you actually have enough history before asking for a pattern analysis.
Finding the real seasonal signal
1. Gather at least 2 full years of billing history. One year can't distinguish "this always happens in winter" from "this happened once" — two or more years of the same calendar month gives you a real baseline.
2. Ask the tool to group by calendar month, not just list bills chronologically. A prompt like "group these bills by month name (January, February, etc.) and show the average cost per month across all years" produces the actual seasonal comparison.
3. Request a bar or line chart, not just a table. A chart of average cost by calendar month makes a seasonal curve immediately visible — a table of the same numbers requires more mental math to interpret.
# Grouping by calendar month across multiple years reveals seasonality
import pandas as pd
df = pd.read_csv("utility_bills.csv", parse_dates=["bill_date"])
df["month_name"] = df["bill_date"].dt.month_name()
seasonal_avg = df.groupby("month_name")["amount_due"].mean().sort_values(ascending=False)
print("Average bill by calendar month, highest to lowest:")
print(seasonal_avg)
| Comparison Type | What It Reveals |
|---|---|
| Month-to-previous-month | Short-term change, but can't distinguish seasonal from one-off |
| Same calendar month across multiple years | Genuine seasonal pattern (e.g., "July averages 40% above the yearly mean every year") |
If you only have a few months of bills, be honest with yourself (and the assistant) that you don't yet have enough data for a seasonality claim — a real pattern needs repetition across years, not just a couple of adjacent data points. The right response with limited data is to keep tracking and revisit this analysis once you have a full year or two on file.
Practical Challenge
Upload 2+ years of utility bills to ChatGPT or Claude and ask for a bar chart of average cost by calendar month — check whether the pattern matches your own intuition about which seasons cost more.
Concept Check
Sources & Further Reading
- OpenAI Help Center: Data analysis with ChatGPT — the code-execution feature this workflow relies on.
- pandas Documentation: DataFrame.groupby — the operation behind the calendar-month grouping shown above.
AI