๋ผ๋ฒจ๋ณ ๋น๋ ๋ถ์
import matplotlib.pyplot as plt
# ์์ N๊ฐ์ ๋ผ๋ฒจ๋ง ํ์ (์: ์์ 20๊ฐ)
top_n = 20
label_counts_top = label_counts_df.head(top_n)
# ๊ทธ๋ํ ๊ทธ๋ฆฌ๊ธฐ
plt.figure(figsize=(10, 6))
plt.bar(label_counts_top['Label'], label_counts_top['Count'])
plt.title('Label Frequency')
plt.xlabel('Labels')
plt.ylabel('Count')
# x์ถ ๋ผ๋ฒจ์ 90๋๋ก ํ์
plt.xticks(rotation=90)
# ๊ทธ๋ํ ๋ณด์ฌ์ฃผ๊ธฐ
plt.tight_layout()
plt.show()
FONT, Gesture, Art, Happy, Cartton, Jaw, Nose, Humna body, Smile, Eye
์ด ์์ผ๋ก ๋ง์ต๋๋ค. ์๋ฌด๋๋ ์์ ์นธ์ ์ด๋ฏธ์ง๋ฅผ ๋ค ๋ํ๋ด์ด์ผ ํ๋ค ๋ณด๋
๋ชธ ์ ์ฒด๊ฐ ์๋๋ผ ์ผ๊ตด ์์ฃผ๋ก ์ด๋ชจํฐ์ฝ์ ์์ฑํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๊ทธ๋์ ํฑ, ๋ ๊ฐ์ ๋ผ๋ฒจ๋ค์ด ์์๊ถ์ด๊ตฌ์.
ํฐํธ, ์ ์ค์ณ, ์ํธ๊ฐ ์๋์ ์ผ๋ก ๋ง๋ค์.
์ํธ๋ ๊ทธ๋ฆผ์ด๋ ๋ ผ์ธ๋ก ์น๋ฉด ์ธ๊ธฐ ์๋ ์ด๋ชจํฐ์ฝ๋ค์ ํฐํธ๋ฅผ ๋ง์ด ์ฐ๊ณ , ์์ง์ด๋ ์ด๋ชจํฐ์ฝ๋ค์ด ๋ง์ ๊ฒ ๊ฐ์ต๋๋ค.
import pandas as pd
from wordcloud import WordCloud
import matplotlib.pyplot as plt
# 1. '๋ผ๋ฒจ1'๋ถํฐ '๋ผ๋ฒจ10'๊น์ง์ ๋ฐ์ดํฐ๋ฅผ ํ๋๋ก ๊ฒฐํฉ
all_labels = df[['๋ผ๋ฒจ1', '๋ผ๋ฒจ2', '๋ผ๋ฒจ3', '๋ผ๋ฒจ4', '๋ผ๋ฒจ5', '๋ผ๋ฒจ6', '๋ผ๋ฒจ7', '๋ผ๋ฒจ8', '๋ผ๋ฒจ9', '๋ผ๋ฒจ10']].stack()
# 2. ๋น๋๋ฅผ ๊ณ์ฐ (value_counts)
label_frequencies = all_labels.value_counts()
# 3. ๋ผ๋ฒจ ๋น๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋ ํด๋ผ์ฐ๋ ์์ฑ
wordcloud = WordCloud(width=800, height=400, background_color='white').generate_from_frequencies(label_frequencies)
# 4. ์๋ ํด๋ผ์ฐ๋ ์๊ฐํ
plt.figure(figsize=(10, 6))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.title('Label Word Cloud')
plt.show()
์๋ํด๋ผ์ฐ๋๋ก ๋ํ๋ด ๋ณด์์ต๋๋ค!
๊ธ์จ ํฐ๊ฒ๋ค๋ง ๋ช๊ฐ ๋ณผ๊น์
ํํฌ์๊ณผ ๋ง์ ํ ์์์ด ๋ง์ต๋๋ค. ์บ๋ฆญํฐ ๋์์ธ์ ์ ํ ๋ ๊ณ ๋ คํ ์ ์๊ฒ ์ง์
๋ํ ์์ง์ด๋ ๋ชจ์ต, ํฐํธ๋ค๋ ๋ง์ด ์ฐ์ด๊ณ ๋์ฒด์ ์ผ๋ก ํ๋ณตํ ๋ชจ์ต์ ์ด๋ชจํฐ์ฝ์ด ๋ง๋ ๋ณด๋ค์.
Snout, Jaw๊ฐ ์๋๊ฑฐ ๋ณด๋ฉด ์ฃผ๋ฅ์ด, ํฑ์ธ๋ฐ ๋๋ฌผ ์ด๋ชจํฐ์ฝ์ด ๋ง์์ ๋ํ๋๋ ๊ฒ ๊ฐ์ต๋๋ค.
Fictional Character(ํ๊ตฌ์ ์ธ๋ฌผ)๊ฐ ๋ณด์ด๋ ์ด์ ๋ ๋๋ฌผ ์ด๋ชจํฐ์ฝ(๋๋ฌผ์ ์บ๋ฆญํฐ๋ก ๊ฐ์ํ) ๋๋ฌธ ๊ฐ์ต๋๋ค.
์์๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ผ๋ณ ๋น๋ ๋ถ์
์์๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฐ ๋ผ๋ฒจ์ ๋น๋๋ฅผ ๋ถ์ํ์ฌ ์์ ์์์์ ์์ฃผ ๋ฑ์ฅํ๋ ํน์ง์ ํ์
import pandas as pd
import matplotlib.pyplot as plt
# ์์ 20์ ๋ฐ์ดํฐ ์ถ์ถ
top_ranked = combined_df[combined_df['์์'] <= 20]
# ์์ ์์์์ ์์ฃผ ๋ฑ์ฅํ๋ ๋ผ๋ฒจ
top_labels = top_ranked['Labels'].str.split(', ').explode().value_counts()
# ๊ฒฐ๊ณผ ์ถ๋ ฅ
print(top_labels)
# ๊ทธ๋ํ ํฌ๊ธฐ ์กฐ์ (figsize๋ฅผ ์ฌ์ฉํ์ฌ ํฌ๊ธฐ๋ฅผ ์ง์ )
plt.figure(figsize=(10, 6)) # ๊ฐ๋ก 10์ธ์น, ์ธ๋ก 6์ธ์น๋ก ์ค์
top_labels.plot(kind='bar', title='Top Ranked Labels')
# ๊ทธ๋ํ ๋ณด์ฌ์ฃผ๊ธฐ
plt.tight_layout() # ๋ ์ด์์์ ์๋์ผ๋ก ์กฐ์ ํ์ฌ ๊ธ์๊ฐ ์๋ฆฌ์ง ์๋๋ก
plt.show()
์์๋ฅผ ๊ธฐ์ค์ผ๋ก ํด๋ ๋์ผ ํฉ๋๋ค.
์นดํ ๊ณ ๋ฆฌ๋ณ ๋ผ๋ฒจ ๋ถํฌ ๋ถ์
๊ฐ ์นดํ ๊ณ ๋ฆฌ๋ณ๋ก ๊ฐ์ฅ ์์ฃผ ์ฌ์ฉ๋๋ ๋ผ๋ฒจ์ ์๊ฐ์ ์ผ๋ก ๋ํ๋ด์ด ์นดํ ๊ณ ๋ฆฌ๋ณ ํธ๋ ๋๋ฅผ ํ์ ํ๋ ๊ฒ์ ๋๋ค.
์ด๋ฅผ ํตํด ๋์์ธ ์์์ ์นดํ ๊ณ ๋ฆฌ๋ณ ์ฐจ๋ณํ๋ฅผ ๋ถ์ํ ์ ์์ต๋๋ค.
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import font_manager, rc
# ํ๊ธ ํฐํธ ์ค์ (Windows์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ์ ์ผ๋ก 'Malgun Gothic'์ ์ฌ์ฉํ ์ ์์ต๋๋ค)
font_path = "C:/Windows/Fonts/malgun.ttf" # ํฐํธ ๊ฒฝ๋ก (OS์ ๋ฐ๋ผ ๋ค๋ฆ
๋๋ค)
font_name = font_manager.FontProperties(fname=font_path).get_name()
rc('font', family=font_name)
# Labels ์ด์ด ์ฌ๋ฌ ๊ฐ์ ๋ผ๋ฒจ์ ํฌํจํ๊ณ ์๋ ๊ฒฝ์ฐ ','๋ก ๋ถ๋ฆฌ
df['Labels'] = df['Labels'].str.split(',')
df = df.explode('Labels').reset_index(drop=True)
# ์นดํ
๊ณ ๋ฆฌ ๋ฆฌ์คํธ
categories = ['์ผ์', '์ฐ์ ', 'ํ์ฌ']
# ์นดํ
๊ณ ๋ฆฌ๋ณ๋ก ํ์ด์ฐจํธ ๊ทธ๋ฆฌ๊ธฐ
for category in categories:
# ํด๋น ์นดํ
๊ณ ๋ฆฌ ํํฐ๋ง
category_data = df[df['์นดํ
๊ณ ๋ฆฌ'] == category]
# ๋ผ๋ฒจ๋ณ ๋น๋ ๊ณ์ฐ ๋ฐ ์์ 10๊ฐ ์ ํ
label_counts = category_data['Labels'].value_counts().head(10)
# ํ์ด์ฐจํธ ์๊ฐํ
plt.figure(figsize=(8, 8))
plt.pie(label_counts, labels=label_counts.index, autopct='%1.1f%%', startangle=90)
plt.title(f'{category} ์นดํ
๊ณ ๋ฆฌ์ ์์ 10๊ฐ ๋ผ๋ฒจ ๋ถํฌ')
plt.axis('equal') # ํ์ด์ฐจํธ๋ฅผ ์ํ์ผ๋ก
plt.show()
์ผ์ : Font > Art > Gesture > Happy > Cartoon
์ฐ์ : Art > Gestrue > Font > Happy > Cartoon
ํ์ฌ: Art > Font > Happy > Gesture > Rectangle
- ์ผ์์ '์๋ ํ์ธ์. ๋ฐ๊ฐ์ต๋๋ค' ๋ฑ ๋ด์ฉ์ ์ ํด์ผ ํ๋๊ฒ ๋ง์์ ํฐํธ๊ฐ 1์๋ฅผ ์ฐจ์ง ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
- ์ฐ์ ๋ Gesture๊ฐ ์์๊ถ์ธ๋ฐ ์๋ฌด๋๋ '์ฌ๋'์ ํํํ๊ธฐ ์ํด์๋ ์์ง์ด๋ ๋์์ด ๋ง์๊ฒ ๊ฐ์ต๋๋ค.
- ํ์ฌ๋ Font์ Rectangle์ด ์์๊ถ์ธ๋ฐ ํ์ฌ์์ ์ผํ ๋ ์ฐ๋ ๋ฌธ๊ตฌ๋ค 'ํด๊ทผํ๊ณ ์ถ๋ค, ํผ๊ณคํด' ์ด๋ฐ ๋จ์ด๋ค์ด ์์ฃผ ์ฌ์ฉ๋์ด์ ์ธ ๊ฒ ๊ฐ์ต๋๋ค. ๋ํ ํ์ฌ ๋ฌธ์, ์ปดํจํฐ, ๋ ธํธ๋ถ, ์ฑ , ๊ฒฐ์ฌ์๋ฅ, ๊ฐ๋ฐฉ ๋ฑ์ด ์ง์ฌ๊ฐํ ํํ๋ฅผ ๋๊ณ ์์ด์ Rectangle์ด ํฌํจ๋ ๊ฒ ๊ฐ์ต๋๋ค.
์นดํ ๊ณ ๋ฆฌ(์ผ์,์ฐ์ )์ ๋ฐ๋ฅธ ์ข ๋ฅ์ ๋ถํฌ
import pandas as pd
import matplotlib.pyplot as plt
import squarify # ํธ๋ฆฌ๋งต ๊ทธ๋ฆฌ๊ธฐ ์ํด ์ฌ์ฉ
# ์นดํ
๊ณ ๋ฆฌ '์ผ์'๋ง ํํฐ๋ง
daily_df = df[df['์นดํ
๊ณ ๋ฆฌ'] == '์ผ์']
# '์ผ์' ์นดํ
๊ณ ๋ฆฌ์์ ์ข
๋ฅ๋ณ ๋น๋์ ๊ณ์ฐ
daily_type_counts = daily_df['์ข
๋ฅ'].value_counts().reset_index()
daily_type_counts.columns = ['์ข
๋ฅ', 'Count']
# ํธ๋ฆฌ๋งต ์๊ฐํ
plt.figure(figsize=(8, 6))
squarify.plot(sizes=daily_type_counts['Count'], label=daily_type_counts['์ข
๋ฅ'], alpha=.8)
plt.title('์ผ์ ์นดํ
๊ณ ๋ฆฌ์ ์ข
๋ฅ ๋ถํฌ - ํธ๋ฆฌ๋งต')
plt.axis('off') # ์ถ์ ์จ๊น
plt.show()
# ์นดํ
๊ณ ๋ฆฌ '์ฐ์ '๋ง ํํฐ๋ง
romance_df = df[df['์นดํ
๊ณ ๋ฆฌ'] == '์ฐ์ ']
# '์ฐ์ ' ์นดํ
๊ณ ๋ฆฌ์์ ์ข
๋ฅ๋ณ ๋น๋์ ๊ณ์ฐ
romance_type_counts = romance_df['์ข
๋ฅ'].value_counts().reset_index()
romance_type_counts.columns = ['์ข
๋ฅ', 'Count']
# ํธ๋ฆฌ๋งต ์๊ฐํ
plt.figure(figsize=(8, 6))
squarify.plot(sizes=romance_type_counts['Count'], label=romance_type_counts['์ข
๋ฅ'], alpha=.8)
plt.title('์ฐ์ ์นดํ
๊ณ ๋ฆฌ์ ์ข
๋ฅ ๋ถํฌ - ํธ๋ฆฌ๋งต')
plt.axis('off') # ์ถ์ ์จ๊น
plt.show()
plt.show()
๋๋ ์ฐจํธ๋ก ๋ํ๋ด๋ ๊ธ์๊ฐ ์๋ ค์ ํธ๋ฆฌ๋งต์ผ๋ก ๋ํ๋์ต๋๋ค.
์ผ์ : ์ฌ๋>๊ณ ์์ด>๊ฐ์์ง>๋งํ์บ๋ฆญํฐ>๊ณฐ ์์ผ๋ก ๋ง์ต๋๋ค
์ฐ์ : ์ฌ๋>๊ฐ์์ง>ํ ๋ผ>๊ณฐ,์๋ฌ ์์ผ๋ก ๋ง์ต๋๋ค
๋ ๊ทธ๋ํ์์ ๊ฐ์์ง์ ์ฌ๋์ด ์๋์ ์ผ๋ก ๋ง์ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
์์ธ๋ก ๊ณ ์์ด๋ ์ฐ์ ์นดํ ๊ณ ๋ฆฌ์์๋ ํ์ธํ ์ ์๋๋ฐ์. ๊ฐ์์ง๋ ์ฌ๋์ ๋นํด ์ปคํ๋ก ๋ํ๋ด๊ธฐ ์ด๋ ค์์ ์ผ๊น์?
๊ฐ์์ง๋ ๋งํฐ์ฆ-๋ฆฌํธ๋ฆฌ๋ฒ ์ด๋ ๊ฒ ์ง์ ๋ํ๋ผ ์ ์๋ ๋ํ ๋๋ฌผ์ด ๋ ์ค๋ฅด๋๋ฐ ๊ณ ์์ด๋ ๋ ์ค๋ฅด์ง ์๋ค์.
์์ธ๋ก ํ ๋ผ๋ ์ผ์์์๋ ์์๊ฐ ์์๊ถ 5์์์๋ ๋ค์ง ์๋ ๊ฒ ๊ฐ๋ค์
์ข ๋ฅ์ ๋ฐ๋ฅธ ๋ถํฌ
import pandas as pd
import matplotlib.pyplot as plt
# 1. ์ข
๋ฅ๋ณ ๋น๋ ๊ณ์ฐ
type_counts = df['์ข
๋ฅ'].value_counts()
# 2. ์ข
๋ฅ๋ณ ๋น๋์ ํ
์ด๋ธ ์ถ๋ ฅ
print("์ข
๋ฅ๋ณ ๋น๋์:")
print(type_counts)
# 3. ๋๋ ์ฐจํธ ์๊ฐํ (๊ฐ์ ํ์)
plt.figure(figsize=(8, 8))
plt.pie(type_counts, labels=[f'{label}: {count}๊ฐ' for label, count in zip(type_counts.index, type_counts.values)],
autopct=None, startangle=90, wedgeprops={'width': 0.3})
plt.gca().set_aspect('equal') # ์ฐจํธ๋ฅผ ์ํ์ผ๋ก ๋ง๋ฆ
plt.title('์ข
๋ฅ์ ๋ฐ๋ฅธ ๋ถํฌ')
plt.show()
์ข ๋ฅ์ ์นดํ ๊ณ ๋ฆฌ์ ๋ฐ๋ฅธ ๊ฐ๊ฐ์ ๋ถํฌ๋ฅผ ๊ตฌํ์ง ์์ ๊ฒ ๊ฐ์์
๋ฐ๋ก ๊ตฌํด๋ณด์์ต๋๋ค.
์ฌ๋ > ๊ฐ์์ง > ๊ณ ์์ด > ๋งํ์บ๋ฆญํฐ > ๊ณฐ > ๋น๋ฒ,ํ ๋ผ > ํ์คํฐ ์์ผ๋ก ๋ง์ต๋๋ค.
์์ธ๋ก ๋น๋ฒ๊ฐ ๋ง๋ค์..?
์นดํ ๊ณ ๋ฆฌ์ ๋ฐ๋ฅธ ๋ถํฌ
import pandas as pd
import matplotlib.pyplot as plt
# 1. ์นดํ
๊ณ ๋ฆฌ๋ณ ๋น๋ ๊ณ์ฐ
category_counts = df['์นดํ
๊ณ ๋ฆฌ'].value_counts()
# 2. ํ์ด ์ฐจํธ ์๊ฐํ
plt.figure(figsize=(8, 8)) # ์ฐจํธ ํฌ๊ธฐ ์ค์
plt.pie(category_counts, labels=category_counts.index, autopct='%1.1f%%', startangle=90)
plt.title('์นดํ
๊ณ ๋ฆฌ์ ๋ฐ๋ฅธ ๋ถํฌ')
plt.axis('equal') # ํ์ด ์ฐจํธ๋ฅผ ์ํ์ผ๋ก
plt.show()
์ผ์์ด ์๋์ ์ผ๋ก ๋ง์ต๋๋ค.
ํ์ฌ ์ด๋ชจํฐ์ฝ์ ์์ง ๋ธ๋ฃจ์ค์ ์ด๋ผ๊ณ ๋ณผ ์ ์์ ๊ฒ ๊ฐ์์.
์ด๋ ๊ฒ ์๊ฐํ๋ฅผ ํตํด ํด๋น ๋ฐ์ดํฐ๋ค์ ๋ถ์ ํด ๋ณด์์ต๋๋ค.
๋ค์ ๊ธ์๋ ํต๊ณ ๋ถ์์ ์ ์ฉ ํด๋ณด๊ฒ ์ต๋๋ค