"""Project 02 — Python Data Explorer starter script.""" from pathlib import Path import matplotlib.pyplot as plt import pandas as pd DATA_FILE = Path(__file__).parent.parent / "data" / "customer-data.csv" OUTPUT_DIR = Path(__file__).parent.parent / "outputs" def main(): try: df = pd.read_csv(DATA_FILE) print("Dataset loaded successfully.") except FileNotFoundError: print(f"Dataset not found: {DATA_FILE}") return print("\nFirst five rows:") print(df.head()) print("\nShape:", df.shape) print("\nColumns:", list(df.columns)) print("\nData types:") df.info() print("\nMissing values:") print(df.isnull().sum()) print("\nDuplicate rows:", df.duplicated().sum()) df = df.drop_duplicates().copy() df["Monthly Spending"] = df["Monthly Spending"].fillna( df["Monthly Spending"].median() ) print("\nNumerical summary:") print(df.describe()) print("\nAverage monthly spending:", round(df["Monthly Spending"].mean(), 2)) print("Average number of purchases:", round(df["Number of Purchases"].mean(), 2)) print("\nMembership counts:") print(df["Membership Type"].value_counts()) high_spending_customers = df[df["Monthly Spending"] > 100] print("\nHigh-spending customers:") print(high_spending_customers.head()) membership_summary = ( df.groupby("Membership Type")["Monthly Spending"] .mean() .sort_values(ascending=False) ) print("\nAverage spending by membership:") print(membership_summary) OUTPUT_DIR.mkdir(exist_ok=True) df.to_csv(OUTPUT_DIR / "cleaned-customer-data.csv", index=False) (OUTPUT_DIR / "data-summary.txt").write_text( "Python Data Explorer summary\n\n" + df.describe(include="all").to_string(), encoding="utf-8", ) membership_summary.plot(kind="bar", color="#f6b518") plt.title("Average Spending by Membership Type") plt.xlabel("Membership Type") plt.ylabel("Average Monthly Spending") plt.tight_layout() plt.savefig(OUTPUT_DIR / "membership-spending.png", dpi=160) plt.show() if __name__ == "__main__": main()