๐Ÿ“ฆ๋ถ„์„ ํ”„๋กœ์ ํŠธ/๐Ÿš… ํฌ๋กค๋ง ๋ถ„์„

๐Ÿš… ํฌ๋กค๋ง ๋ถ„์„ ํ”„๋กœ์ ํŠธ (7) - ์‹œ๊ฐํ™”

๋ฐ์ดํ„ฐํŒ์Šค 2024. 10. 19. 01:57

์นดํ…Œ๊ณ ๋ฆฌ ๋ณ„ ๋ฆฌ๋ทฐ์‹œ๊ฐํ™” 

๊ฐ ์นดํ…Œ๊ณ ๋ฆฌ(๊ฐ€์กฑ์—ฌํ–‰,์นœ๊ตฌ๋ชจ์ž„,์ปคํ”Œ์—ฌํ–‰ ๋“ฑ) ๋ณ„๋กœ ๋ฆฌ๋ทฐ ์ˆ˜๋ฅผ ์‹œ๊ฐํ™” ํ•˜๊ณ , ์–ด๋–ค ์—ฌํ–‰ ์œ ํ˜•์ด ๊ฐ€์žฅ ๋งŽ์€์ง€ ์•Œ์•„๋ณด๊ธฐ

# ์นดํ…Œ๊ณ ๋ฆฌ ๋ณ„ ๋ฆฌ๋ทฐ ์ˆ˜ ๊ณ„์‚ฐ
category_count=df['category'].value_counts()

plt.figure(figsize=(15,6))
category_count.plot(kind='bar',color='skyblue')

plt.title("์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ๋ฆฌ๋ทฐ ์ˆ˜")
plt.xlabel("์นดํ…Œ๊ณ ๋ฆฌ")
plt.ylabel("๋ฆฌ๋ทฐ ์ˆ˜")
plt.xticks(rotation=20)
plt.grid(axis='y',linestyle='--',alpha=0.7)
plt.tight_layout()
plt.show()

 

 

 

 

๋‚ ์งœ๋ณ„ ๋ฆฌ๋ทฐ ๋ถ„ํฌ ์‹œ๊ฐํ™”

๋‚ ์งœ๋ณ„๋กœ ๋ฆฌ๋ทฐ๊ฐ€์–ด๋–ป๊ฒŒ ๋ถ„ํฌ๋˜์–ด ์žˆ๋Š”์ง€ ์‹œ๊ฐํ™” ํ•ด์„œ ํŠน์ • ๋‚ ์งœ์— ๋ฆฌ๋ทฐ๊ฐ€ ๋งŽ๊ฑฐ๋‚˜, ์ ์€ ๋•Œ๋ฅผ ํ™•์ธ 

# ๋‚ ์งœ๋ฅผ datetime ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜
import  matplotlib.dates as mdates
df['date']=pd.to_datetime(df['date'])

# ๋‚ ์งœ ๋ณ„ ๋ฆฌ๋ทฐ ์ˆ˜ ๊ณ„์‚ฐ
date_counts=df['date'].value_counts().sort_index()
plt.figure(figsize=(30,10))
sns.lineplot(x=date_counts.index,y=date_counts.values,marker='o',color='orange')

plt.title('๋‚ ์งœ๋ณ„ ๋ฆฌ๋ทฐ ์ˆ˜')
plt.xlabel('๋‚ ์งœ')
plt.ylabel('๋ฆฌ๋ทฐ ์ˆ˜')

# xticks์— ๋‚ ์งœ ํ˜•์‹ ์„ค์ •
date_format=mdates.DateFormatter('%Y-%m')
plt.gca().xaxis.set_major_formatter(date_format)
plt.gca().xaxis.set_major_locator(mdates.MonthLocator())

plt.xticks(rotation=50)
plt.grid(axis='y',linestyle='--',alpha=0.7)
plt.tight_layout()
plt.show()

 

 

 

 

 

๋‚˜์ด๋ณ„ ํ‰๊ท  ํ‰์  ๋น„๊ต

๊ฐ ์—ฐ๋ น๋Œ€๋ณ„๋กœ ํ‰๊ท  ํ‰์ ์„ ๋น„๊ตํ•ด์„œ ์–ด๋–ค ์—ฐ๋ น๋Œ€๊ฐ€ ํ‰๊ท ์ ์œผ๋กœ ์ข‹์€ ๋ฆฌ๋ทฐ๋ฅผ ๋‚จ๊ธฐ๋Š”์ง€ ํ™•์ธ

print(df['rating'].dtype)

#3. ๋‚˜์ด๋ณ„ ํ‰๊ท  ํ‰์  ๋น„๊ต
# ๊ฐ ์—ฐ๋ น๋Œ€๋ณ„๋กœ ํ‰๊ท  ํ‰์ ์„ ๋น„๊ตํ•ด์„œ ์–ด๋–ค ์—ฐ๋ น๋Œ€๊ฐ€ ํ‰๊ท ์ ์œผ๋กœ ์ข‹์€ ๋ฆฌ๋ทฐ๋ฅผ ๋‚จ๊ธฐ๋Š”์ง€ ํ™•์ธ

# 'rating'์„ ์ˆซ์žํ˜•์œผ๋กœ ๋ณ€ํ™˜
df['rating'] = pd.to_numeric(df['rating'], errors='coerce')

# ๋‚˜์ด๋ณ„ ํ‰๊ท  ํ‰์  ๊ณ„์‚ฐ
# age_rating=df.groupby('age')['rating'].mean().sort_values()
age_rating = df.groupby('age')['rating'].mean().sort_values()

# ์‹œ๊ฐํ™”
plt.figure(figsize=(10,6))
sns.barplot(x=age_rating.index,y=age_rating.values,palette='viridis')

plt.title('๋‚˜์ด๋ณ„ ํ‰๊ท  ํ‰์ ')
plt.xlabel('๋‚˜์ด')
plt.ylabel('ํ‰๊ท  ํ‰์ ')

plt.xticks(rotation=45)
plt.grid(axis='y',linestyle='--',alpha=0.7)
plt.tight_layout()
plt.show()

๊ทธ๋Ÿผ ์ด๋ ‡๊ฒŒ ๋‚˜์˜ต๋‹ˆ๋‹ค.

 

์œ„์—์„œ ๊ทธ๋ž˜ํ”„๊ฐ€ ์ž˜๋ชป ๊ทธ๋ ค์ง„ ์ด์œ ๋Š”

์˜ˆ์ „ ๋ฐ์ดํ„ฐ๋Š” ์—ฐ๋ น๋Œ€๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๊ณ  rating๊ฐ’์ด ๊ฒฐ์ธก๊ฐ’์ธ ๋ฐ์ดํ„ฐ๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด age๊ฐ€ ~๋Œ€๋กœ ๊ตฌ์„ฑ๋œ ๋ฐ์ดํ„ฐ๋งŒ ๋ฝ‘๊ณ , ๋ ˆ์ดํŒ…์ด ๋น„์–ด ์žˆ์œผ๋ฉด ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋Š” ์ œ์™ธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

df_age=df[df['age'].str.endswith('๋Œ€')] # endswith ์–ด๋– ํ•œ ๊ธ€์ž๋กœ ๋๋‚˜๋Š” ๋ฐ์ดํ„ฐ๋งŒ์„ ์ถ”์ถœํ•จ
df_age=df_age[df_age['rating'].notnull()] # null๊ฐ’์ด ์•„๋‹Œ ๋ฐ์ดํ„ฐ๋งŒ ๊ฐ€์ ธ์˜ด

# ๋‚˜์ด๋ณ„ ํ‰๊ท  ํ‰์  ๊ณ„์‚ฐ
age_rating_new=df_age.groupby('age')['rating'].mean().sort_values()

# ์‹œ๊ฐํ™”
plt.figure(figsize=(10,6))
sns.barplot(x=age_rating_new.index,y=age_rating_new.values,palette='viridis')

plt.title('๋‚˜์ด๋ณ„ ํ‰๊ท  ํ‰์ ')
plt.xlabel('๋‚˜์ด')
plt.ylabel('ํ‰๊ท  ํ‰์ ')

plt.xticks(rotation=45)
plt.grid(axis='y',linestyle='--',alpha=0.7)
plt.tight_layout()
plt.show()

๊ทธ๋ž˜ํ”„๊ฐ€ ์ œ๋Œ€๋กœ ๊ทธ๋ ค์กŒ์Šต๋‹ˆ๋‹ค.

ํ‰๊ท  ํ‰์ ์ด ๊ต‰์žฅํžˆ ๋†’์€ ํŽธ์ด์–ด์„œ ๊ทธ๋ž˜ํ”„๋ฅผ ์กฐ๊ธˆ ์ˆ˜์ •ํ•ด์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

# y์ถ• ๋ฒ”์œ„ ์„ค์ •
plt.ylim(4,None) # 4๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ๋๋ถ€๋ถ„ ์ œํ•œX

ํ•ด๋‹น์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด 4๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ๋๋ถ€๋ถ„ ์ œํ•œ์—†์ด ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๊ฐ€ 10๋Œ€~70๋Œ€ ์ˆœ์œผ๋กœ ๋˜์–ด์žˆ๋‹ค๋ฉด ๋” ๋ณด๊ธฐ ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

 

age๊ฐ€ ๋‚ฎ์€ ์ˆœ์œผ๋กœ ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์— age_rating_new.sort_values()๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ์™ผ์ชฝ ์‚ฌ์ง„ ์ˆœ์„œ๋Œ€๋กœ ๋˜์–ด ์žˆ๋˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์˜ค๋ฅธ์ชฝ ์‚ฌ์ง„ ์ˆœ์„œ๋Œ€๋กœ ๋ฐ”๋€๋‹ˆ๋‹ค.

 

 

 

age_rating_new=age_rating_new.sort_index()
# ์‹œ๊ฐํ™”
plt.figure(figsize=(10,6))
sns.barplot(x=age_rating_new.index,y=age_rating_new.values,palette='viridis')

plt.title('๋‚˜์ด๋ณ„ ํ‰๊ท  ํ‰์ ')
plt.xlabel('๋‚˜์ด')
plt.ylabel('ํ‰๊ท  ํ‰์ ')

# y์ถ• ๋ฒ”์œ„ ์„ค์ •
plt.ylim(4,None) # 4๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ๋๋ถ€๋ถ„ ์ œํ•œX

plt.xticks(rotation=0)
plt.grid(axis='y',linestyle='--',alpha=0.7)
plt.tight_layout()
plt.show()

๋‚˜์ด์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ ๊ทธ๋ž˜ํ”„๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

70๋Œ€๊ฐ€ ๊ฐ€์žฅ ํ‰์ ์ด ๋†’๊ณ  40๋Œ€๊ฐ€ ๊ฐ€์žฅ ๋‚ฎ์€ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.