์นดํ ๊ณ ๋ฆฌ ๋ณ ๋ฆฌ๋ทฐ์๊ฐํ
๊ฐ ์นดํ ๊ณ ๋ฆฌ(๊ฐ์กฑ์ฌํ,์น๊ตฌ๋ชจ์,์ปคํ์ฌํ ๋ฑ) ๋ณ๋ก ๋ฆฌ๋ทฐ ์๋ฅผ ์๊ฐํ ํ๊ณ , ์ด๋ค ์ฌํ ์ ํ์ด ๊ฐ์ฅ ๋ง์์ง ์์๋ณด๊ธฐ
# ์นดํ
๊ณ ๋ฆฌ ๋ณ ๋ฆฌ๋ทฐ ์ ๊ณ์ฐ
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๋๊ฐ ๊ฐ์ฅ ๋ฎ์ ๊ฒ์ ์ ์ ์์ต๋๋ค.
'๐ฆ๋ถ์ ํ๋ก์ ํธ > ๐ ํฌ๋กค๋ง ๋ถ์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ ํฌ๋กค๋ง ๋ถ์ ํ๋ก์ ํธ (์) (6) | 2024.10.19 |
---|---|
๐ ํฌ๋กค๋ง ๋ถ์ ํ๋ก์ ํธ (6) - ๊ด๊ด์ํ ๋ฆฌ๋ทฐ ํฌ๋กค๋ง (2) | 2024.10.18 |
๐ ํฌ๋กค๋ง ๋ถ์ ํ๋ก์ ํธ (4) - ์ฝ๋ ์ผ ๊ธฐ์ฐจํ ํฌ๋กค๋ง (0) | 2024.10.17 |
๐ ํฌ๋กค๋ง ๋ถ์ ํ๋ก์ ํธ (3) - RSS ํ์ฉ ๋ด์ค ํฌ๋กค๋ง (0) | 2024.10.17 |
๐ ํฌ๋กค๋ง ๋ถ์ ํ๋ก์ ํธ (2) - Selenium ํ์ฉ ๋ด์ค ํฌ๋กค๋ง (1) | 2024.10.17 |