์ŠคํŒŒ๋ฅดํƒ€ ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„(25.12.01~)

์ŠคํŒŒ๋ฅดํƒ€ ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„_๋ณธ์บ ํ”„_data11๊ธฐ ๊น€์„ ์˜_TIL_Day 22

0๏ธโƒฃ 2026. 1. 23. 09:16

[์˜ค๋Š˜์˜ ํ•™์Šต]

  • ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ/์‹œ๊ฐํ™” ์„ธ์…˜ 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() ํ•จ์ˆ˜ ์‚ฌ์šฉ.??