Quick Start
Understand the data shape in five minutes and run your first parsing example.
Three Core Concepts
| Concept | Where | Description |
|---|---|---|
| Site | farm_id | One wind farm / PV plant / monitoring point, e.g. HuaR_093 |
| Model run (issue) | File name {yyyyMMddHH} (UTC) | The initialization time of one NWP run; each run delivers one full file |
| Valid time | date_time (Beijing time) | The forecast moment of each row, one point per 15 minutes, +0h ~ +360h |
Step 1: Get the Data
- Evaluation: contact sales for a real-site sample CSV, or download the sample file directly;
- Production: onboard your site coordinates, then receive one CSV per model run.
Step 2: Parse the CSV
python
import pandas as pd
df = pd.read_csv("weatherforecast_102.95839-36.35208_2026082712.csv")
# Unit conversions (see Usage Notes)
df["t2m_c"] = df["t2m"] - 273.15 # K → ℃
df["sp_hpa"] = df["sp"] / 100 # Pa → hPa
# Accumulated radiation → 15-min mean irradiance (W/m²)
df["ghi_wm2"] = df["tr"].diff() / 900
# Clip cloud fractions to [0, 1] (interpolation may slightly exceed bounds)
for c in ["lcc", "mcc", "hcc", "tcc"]:
df[c] = df[c].clip(0, 1)
print(df[["date_time", "spd100", "t2m_c", "ghi_wm2", "tcc"]].head())Output (excerpt):
date_time spd100 t2m_c ghi_wm2 tcc
0 2026-08-27_20:00:00 2.83 15.93 NaN 1.0
1 2026-08-27_20:15:00 3.19 15.67 0.0 1.0
2 2026-08-27_20:30:00 3.29 15.42 0.1 1.0Step 3: Verify the Data
The sample has 1441 rows, zero missing values and strictly regular intervals — machine-checkable:
python
assert len(df) == 1441
assert df["date_time"].is_monotonic_increasing
assert df.notna().all().all() # missing values are empty strings; none in this sample