Spaces:
Runtime error
Runtime error
| import matplotlib.pyplot as plt | |
| import seaborn as sns | |
| import pandas as pd | |
| def plot_aqi_distribution(df: pd.DataFrame): | |
| plt.figure(figsize=(8, 5)) | |
| sns.histplot(df["AQI"], bins=40, kde=True) | |
| plt.title("AQI Distribution") | |
| plt.xlabel("AQI") | |
| plt.ylabel("Count") | |
| plt.tight_layout() | |
| plt.show() | |
| def plot_city_aqi(df: pd.DataFrame): | |
| city_aqi = df.groupby("City")["AQI"].mean().sort_values(ascending=False).reset_index() | |
| plt.figure(figsize=(8, 6)) | |
| ax = sns.barplot(data=city_aqi, y="City", x="AQI") | |
| for i, row in city_aqi.iterrows(): | |
| ax.text(row["AQI"] + 2, i, f"{row['AQI']:.1f}", va='center', fontsize=7) | |
| plt.title("Average AQI by City") | |
| plt.xlabel("AQI") | |
| plt.ylabel("City") | |
| plt.tight_layout() | |
| plt.show() | |
| def plot_season_aqi(df: pd.DataFrame): | |
| season_aqi = df.groupby("Season")["AQI"].mean().reset_index() | |
| plt.figure(figsize=(6, 4)) | |
| ax = sns.barplot(data=season_aqi, x="Season", y="AQI") | |
| for i, row in season_aqi.iterrows(): | |
| ax.text(i, row["AQI"] + 3, f"{row['AQI']:.1f}", ha='center', fontsize=7) | |
| plt.title("Average AQI by Season") | |
| plt.xlabel("Season") | |
| plt.ylabel("AQI") | |
| plt.tight_layout() | |
| plt.show() | |
| def plot_yearly_trend(df: pd.DataFrame): | |
| yearly_aqi = df.groupby("Year")["AQI"].mean().reset_index() | |
| plt.figure(figsize=(8, 5)) | |
| sns.lineplot(data=yearly_aqi, x="Year", y="AQI", marker="o") | |
| plt.title("Yearly AQI Trend") | |
| plt.xlabel("Year") | |
| plt.ylabel("AQI") | |
| plt.tight_layout() | |
| plt.show() | |
| def plot_monthly_trend(df: pd.DataFrame): | |
| df["year_month"] = df["Date"].dt.to_period("M").dt.to_timestamp() | |
| monthly_aqi = df.groupby("year_month")["AQI"].mean().reset_index() | |
| plt.figure(figsize=(12, 5)) | |
| ax = sns.lineplot(data=monthly_aqi, x="year_month", y="AQI") | |
| years = monthly_aqi["year_month"].dt.year.unique() | |
| tick_positions = monthly_aqi.groupby(monthly_aqi["year_month"].dt.year).first()["year_month"] | |
| ax.set_xticks(tick_positions) | |
| ax.set_xticklabels(years) | |
| plt.title("Monthly AQI Trend") | |
| plt.xlabel("Year") | |
| plt.ylabel("AQI") | |
| plt.tight_layout() | |
| plt.show() | |
| def plot_correlation_heatmap(df: pd.DataFrame): | |
| corr = df.select_dtypes(include="number").corr() | |
| plt.figure(figsize=(10, 8)) | |
| sns.heatmap( | |
| corr, | |
| annot=True, | |
| fmt=".2f", | |
| cmap="coolwarm", | |
| linewidths=0.5 | |
| ) | |
| plt.title("Correlation Heatmap") | |
| plt.tight_layout() | |
| plt.show() | |
| def plot_corr_with_aqi(df: pd.DataFrame): | |
| corr = df.select_dtypes(include="number").corr() | |
| corr_aqi = corr["AQI"].sort_values(ascending=False) | |
| plt.figure(figsize=(6, 5)) | |
| sns.barplot(x=corr_aqi.values, y=corr_aqi.index) | |
| plt.title("Correlation with AQI") | |
| plt.xlabel("Correlation") | |
| plt.tight_layout() | |
| plt.show() | |
| def plot_delhi_trend(df: pd.DataFrame): | |
| df_delhi = df[df["City"] == "Delhi"].copy() | |
| df_delhi["year_month"] = df_delhi["Date"].dt.to_period("M").dt.to_timestamp() | |
| delhi_monthly = df_delhi.groupby("year_month")["AQI"].mean().reset_index() | |
| plt.figure(figsize=(12, 5)) | |
| ax = sns.lineplot(data=delhi_monthly, x="year_month", y="AQI", color="red") | |
| years = delhi_monthly["year_month"].dt.year.unique() | |
| tick_positions = delhi_monthly.groupby(delhi_monthly["year_month"].dt.year).first()["year_month"] | |
| ax.set_xticks(tick_positions) | |
| ax.set_xticklabels(years) | |
| plt.title("Monthly AQI Trend - Delhi") | |
| plt.xlabel("Year") | |
| plt.ylabel("AQI") | |
| plt.tight_layout() | |
| plt.show() | |
| def plot_pandemic_effect(df: pd.DataFrame): | |
| d_2020 = df[(df['City']=='Delhi') & (df['Date'].dt.year==2020)] \ | |
| .groupby(pd.Grouper(key='Date', freq='ME'))['AQI'].mean().dropna() | |
| d_2019 = df[(df['City']=='Delhi') & (df['Date'].dt.year==2019)] \ | |
| .groupby(pd.Grouper(key='Date', freq='ME'))['AQI'].mean().dropna() | |
| plt.figure(figsize=(12, 5)) | |
| plt.plot(range(len(d_2019)), d_2019.values, label='2019 (Pre-Pandemic)', marker='o') | |
| plt.plot(range(len(d_2020)), d_2020.values, label='2020 (Pandemic)', marker='o', linestyle='--') | |
| plt.xticks(range(12), ["Jan","Feb","Mar","Apr","May","Jun", | |
| "Jul","Aug","Sep","Oct","Nov","Dec"]) | |
| plt.title('Delhi AQI: 2019 vs 2020 Pandemic') | |
| plt.legend() | |
| plt.tight_layout() | |
| plt.show() |