0% ont trouvé ce document utile (0 vote)
3 vues4 pages

Code

Le document présente une analyse des données de production d'énergie solaire d'une centrale, incluant le chargement et la transformation des données, ainsi que la création de graphiques pour visualiser la puissance AC au fil du temps. Il effectue également une agrégation des données par heure et jour, et crée des variables temporelles pour une modélisation ultérieure. Enfin, il prépare les données pour un modèle prédictif en divisant les ensembles de données en ensembles d'entraînement et de test.

Transféré par

mozayineh
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
3 vues4 pages

Code

Le document présente une analyse des données de production d'énergie solaire d'une centrale, incluant le chargement et la transformation des données, ainsi que la création de graphiques pour visualiser la puissance AC au fil du temps. Il effectue également une agrégation des données par heure et jour, et crée des variables temporelles pour une modélisation ultérieure. Enfin, il prépare les données pour un modèle prédictif en divisant les ensembles de données en ensembles d'entraînement et de test.

Transféré par

mozayineh
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

import pandas as pd

import [Link] as plt

# =========================
# 1) Charger les données
# =========================
gen_path = "/kaggle/input/datasets/anikannal/solar-power-
generation-data/Plant_1_Generation_Data.csv"
df = pd.read_csv(gen_path)

# =========================
# 2) Convertir DATE_TIME
# =========================
df["DATE_TIME"] = pd.to_datetime(df["DATE_TIME"], format="%d-
%m-%Y %H:%M")

# =========================
# 3) Agréger par instant (somme de la centrale)
# (car plusieurs SOURCE_KEY = plusieurs onduleurs)
# =========================
ts = [Link]("DATE_TIME")["AC_POWER"].sum().reset_index()

# =========================
# 4) Graphe 1 : série temporelle complète
# =========================
[Link](figsize=(14,4))
[Link](ts["DATE_TIME"], ts["AC_POWER"])
[Link]("Évolution temporelle de la puissance AC – Centrale 1
(complet)")
[Link]("Date")
[Link]("Puissance AC (kW)")
plt.tight_layout()
[Link]("Figure_AC_POWER_complet.png", dpi=300)
[Link]()

# =========================
# 5) Graphe 2 : heures diurnes (AC_POWER > 0)
# =========================
ts_day = ts[ts["AC_POWER"] > 0]

[Link](figsize=(14,4))
[Link](ts_day["DATE_TIME"], ts_day["AC_POWER"])
[Link]("Puissance AC produite – Centrale 1 (heures diurnes)")
[Link]("Date")
[Link]("Puissance AC (kW)")
plt.tight_layout()
[Link]("Figure_AC_POWER_diurne.png", dpi=300)
[Link]()

FIGURE A — Distributions PRODUCTION

import pandas as pd
import [Link] as plt

# Charger seulement les colonnes utiles (plus rapide)


gen_path = "/kaggle/input/datasets/anikannal/solar-power-
generation-data/Plant_1_Generation_Data.csv"
gen = pd.read_csv(gen_path,
usecols=["DATE_TIME","AC_POWER","DC_POWER","DAILY_YIELD
","TOTAL_YIELD"])

# Histogrammes
cols =
["AC_POWER","DC_POWER","DAILY_YIELD","TOTAL_YIELD"]

fig, axes = [Link](2, 2, figsize=(12, 7))


[Link]("Distribution des variables de production (Centrale 1)")

for ax, col in zip([Link](), cols):


[Link](gen[col], bins=40)
ax.set_title(col)
ax.set_xlabel("Valeur")
ax.set_ylabel("Fréquence")

plt.tight_layout()
[Link]("Figure_Distribution_Production.png", dpi=300,
bbox_inches="tight")
[Link]()

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split

# 1) Charger
gen_path = "/kaggle/input/datasets/anikannal/solar-power-
generation-data/Plant_1_Generation_Data.csv"
df = pd.read_csv(gen_path)

# 2) Convertir DATE_TIME (format exact du dataset)


df["DATE_TIME"] = pd.to_datetime(df["DATE_TIME"], format="%d-
%m-%Y %H:%M")

# 3) Agréger à l’échelle de la centrale par pas de temps


# (plusieurs SOURCE_KEY = plusieurs onduleurs)
df_agg = [Link]("DATE_TIME", as_index=False).agg({
"AC_POWER": "sum",
"DC_POWER": "sum",
"DAILY_YIELD": "sum",
"TOTAL_YIELD": "max" # total_yield est cumulatif -> max est
plus logique que sum
})

# 4) Créer les variables temporelles APRÈS l’agrégation


df_agg["hour"] = df_agg["DATE_TIME"].[Link]
df_agg["day"] = df_agg["DATE_TIME"].[Link]
df_agg["month"] = df_agg["DATE_TIME"].[Link]
df_agg["weekday"] = df_agg["DATE_TIME"].[Link]

print(" df_agg shape:", df_agg.shape)


print(df_agg.head())

# 5) Vérifier les valeurs manquantes


print("\nMissing values:")
print(df_agg.isna().sum())

# 6) Définir y et X
y = df_agg["AC_POWER"]
X = df_agg[["DC_POWER", "DAILY_YIELD", "TOTAL_YIELD",
"hour", "day", "month", "weekday"]]

# 7) Split train/test
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)

print("\n Split:")
print("X_train:", X_train.shape, "X_test:", X_test.shape)

Vous aimerez peut-être aussi