Renewable Generation Analysis

Track solar and wind generation patterns to understand renewable penetration trends

Track solar and wind generation patterns to understand renewable penetration trends.

import pandas as pd

# Get one month of daily fuel mix data
df = client.get_dataset(
    "ercot_fuel_mix",
    start="2026-01-01",
    end="2026-02-01",
    resample="1 day",
    resample_function="mean"
)

# Calculate daily renewable metrics
df['renewable_total'] = df['solar'] + df['wind']
df['total_generation'] = (
    df['coal_and_lignite'] + df['hydro'] + df['nuclear'] +
    df['power_storage'].clip(lower=0) + df['solar'] + df['wind'] +
    df['natural_gas'] + df['other']
)
df['renewable_pct'] = df['renewable_total'] / df['total_generation'] * 100

print("=== ERCOT Renewable Generation - January 2026 ===")
print(f"\nMonthly Averages:")
print(f"  Solar: {df['solar'].mean():,.0f} MW")
print(f"  Wind: {df['wind'].mean():,.0f} MW")
print(f"  Renewable %: {df['renewable_pct'].mean():.1f}%")

print(f"\nPeak Renewable Days:")
top_renewable = df.nlargest(5, 'renewable_pct')[['interval_start_utc', 'solar', 'wind', 'renewable_pct']]
for _, row in top_renewable.iterrows():
    date = str(row['interval_start_utc'])[:10]
    print(f"  {date}: {row['renewable_pct']:.1f}% ({row['solar']:,.0f} MW solar, {row['wind']:,.0f} MW wind)")

print(f"\nLowest Renewable Days:")
low_renewable = df.nsmallest(5, 'renewable_pct')[['interval_start_utc', 'solar', 'wind', 'renewable_pct']]
for _, row in low_renewable.iterrows():
    date = str(row['interval_start_utc'])[:10]
    print(f"  {date}: {row['renewable_pct']:.1f}% ({row['solar']:,.0f} MW solar, {row['wind']:,.0f} MW wind)")

Last updated

Was this helpful?