[์ค๋์ ํ์ต]
- ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ/์๊ฐํ ์ธ์ 3ํ์ฐจ ๋ณต์ต
- pandas ๋ฏธ๋์ธ์
[ํ์ต๋ด์ฉ ์ ๋ฆฌ]
# ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ/์๊ฐํ ์ธ์ 3ํ์ฐจ ๋ณต์ต
1. ์ ๊ทธ๋ํ ๋ง๋ค๊ธฐ
๋๋ณด๊ธฐ
import matplotlib.pyplot as plt
daily = df.groupby("date", as_index=False)["sales"].sum()
plt.figure(figsize=(6,3))
plt.plot(daily["date"], daily["sales"], marker="o")
plt.title("Daily Sales")
plt.xlabel("date")
plt.ylabel("sales")
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

- daily = df2.groupby("date", as_index=False)["sales"].sum()
: ๊ธฐ์ค ์ปฌ๋ผ 'date'๋ฅผ ์ธ๋ฑ์ค๋ก ์ฌ์ฉํ์ง ์๊ณ , ์๋ณธ์ฒ๋ผ DataFrame ํํ๋ฅผ ์ ์งํ๋ค.
→ ๊ทธ๋ํ ๋ง๋๋ ๋ฐ์ ์ข์ ํํ.

- [๊ทธ๋ํ ๊ทธ๋ฆฌ๊ธฐ]
plt.figure(figsize=(6,3)) : ๊ทธ๋ํ ๋ํ์ง๋ฅผ ์์ฑํจ. (๊ฐ๋ก6, ์ธ๋ก3)
plt.plot(daily["date"], daily["sales"], marker="o") : ์ ๊ทธ๋ํ ๊ทธ๋ฆฌ๊ธฐ
โถ๏ธ .polt(x์ถ, y์ถ)
โถ๏ธ marker="o" : ๋ฐ์ดํฐ ํฌ์ธํธ๋ง๋ค ๋๊ทธ๋ผ๋ฏธ๋ฅผ ์ถ๊ฐํด๋ผ (๊ฐ๋ ์ฑ ๋์.)
→ "๋ ์ง๋ณ ๋งค์ถ ์ถ์ด" : (~๋ณ) ๊ธฐ์ค์ด ๋๋ ๊ฒ์ x ์ถ์ ๋ฐฐ์น - [๊ทธ๋ํ ๋ค๋ฌ๊ธฐ / ๋ณด๊ธฐ ์ข๊ฒ]
plt.title("Daily Sales") : ๊ทธ๋ํ ์ ๋ชฉ ๋ถ์ด๊ธฐ
plt.xlabel("date") : x์ถ ๋ผ๋ฒจ ๋ถ์ด๊ธฐ
plt.ylabel("sales") : y์ถ ๋ผ๋ฒจ ๋ถ์ด๊ธฐ
plt.xticks(rotation=45) : x์ถ ๊ธ์ ๊ธฐ์ธ์ด๊ธฐ
plt.tight_layout() : ๋ ์ด์์์ด ๊ฒน์น์น ์๊ฒ ์๋์ ๋ฆฌ - [๊ทธ๋ํ ์ต์ข
์ถ๋ ฅ]
plt.show()

2. ๋ง๋ ๊ทธ๋ํ ๋ง๋ค๊ธฐ
๋๋ณด๊ธฐ
import seaborn as sns
menu_sales = df.groupby("menu", as_index=False)["sales"].sum()
plt.figure(figsize=(6,3))
sns.barplot(data=menu_sales, x="menu", y="sales")
plt.title("Sales by Menu")
plt.tight_layout()
plt.show()

- sns.barplot(data=menu_sales, x="menu", y="sales")
# ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ/์๊ฐํ ์ธ์ 4ํ์ฐจ
๐ฏ ์ปฌ๋ผ/ํ์ /๊ฒฐ์ธก์น ํ ๋ฒ์ ์ ๊ฒ
print("shape:", df.shape)
print("\n--- columns ---")
print(df.columns.tolist())
print("\n--- info ---")
df.info()
print("\n--- missing rate(top) ---")
missing = df.isna().mean().sort_values(ascending=False)
print(missing.head(10))
# 2) ๋ ์ง(datetime) ๋ณํ
df2["scheduledday"] = pd.to_datetime(df2["scheduledday"], errors="coerce", utc=True) #utc = ์ธ๊ณํ์ค์๊ฐ
df2["appointmentday"] = pd.to_datetime(df2["appointmentday"], errors="coerce", utc=True)
# ์ฐ๋ น๋ ๊ตฌ๊ฐ ๋๋๊ธฐ
- ๐ labels ๊ฐ์๋ bins ๊ตฌ๊ฐ ๊ฐ์์ ๊ฐ์์ผ ํจ
- pd.cut()
: ์ปฌ๋ผ์ ์๋ ์ซ์๋ค์ bins ๊ธฐ์ค์ผ๋ก ์๋ผ์ labels ์ด๋ฆ์ ๋ถ์ฌ์ค. (๊ฐ์ ๋ฐ๋ผ labels ๋ถ์ฌ)
bins = [-1, 0, 12, 18, 30, 45, 60, 75, 110] # ๋์ด ๊ตฌ๊ฐ ์ค์
labels = ["0", "1-12", "13-18", "19-30", "31-45", "46-60", "61-75", "76+"] # ๊ฐ ๊ตฌ๊ฐ์ ํ์ํ ๋ผ๋ฒจ ์ค์
df2["age_group"] = pd.cut(df2["age"], bins=bins, labels=labels) # cut() ํจ์ ์ฌ์ฉ.??