Python - WordCloud 만들고 시각화하기
이번에는 WordCloud 라이브러리를 이용해서 WordCloud를 만들어보고 출력해보는 과정을 정리해보도록 하겠습니다.
먼저 데이터를 Pandas를 이용해서 불러오겠습니다.
위 데이터는 넷플릭스에 영화 및 TV 시리즈에 대한 정보가 들어있는 데이터입니다.
저는 여기서 Crime TV Shows 장르만을 추출하고 그에 대한 설명을 가지고 WordCloud를 만들어 보겠습니다.
아래는 Crime TV Shows 를 장르로 가지는 Content만을 추출하는 과정입니다.
이제 위 추출된 데이터만을 이용해서 WordCloud를 본격적으로 만들어보겠습니다.
crime_String = []
for string in crime_df['description'] :
crime_String.append(string)
crime_descript = ' '.join(crime_String)
wordcloud = WordCloud(max_font_size=256 ,
random_state = 42 ,
stopwords = STOPWORDS,
background_color='white').generate(crime_descript)
저는 위 데이터 각각의 description 속성 (2,3 문장으로 구성됨) 데이터를 리스트 자료구조에 저장한다음에 이를 join 함수를 이용해서 String 타입으로 변경해줍니다.
그리고 나서 WordCloud를 만들어주는 데 여러 인자를 각 상황에 맞게 기입합니다. 주의할 점은 backgroud 색상을 안정해주면 검은색으로 WordCloud가 만들어져서 출력이 됩니다.
plt.figure(figsize = (12 , 6))
plt.imshow(wordcloud , interpolation = 'bilinear')
plt.axis('off')
plt.show()
그리고 이 String 타입의 데이터를 WordCloud.generate() 함수 안에 넣어줌으로써 최종적으로 WordCloud를 만들어줍니다.
아래는 그 결과입니다.
이제는 이 WordCloud의 모양을 변경해서 만들어보겠습니다.
먼저 만들고자 하는 이미지는 PIL 라이브러리를 이용해서 불러옵니다.
from PIL import Image
# Keep in mind the background of the image used must be white
image_example = Image.open('./image2.jpg')
mask = np.array(image_example)
아래는 불러온 이미지입니다.
주의해야 할 점은 사용하고자 하는 부분은 색이 짙어야 한다는 것이고 이미지의 뒷배경은 하얀색이여야 한다는 것입니다.
이제 WordCloud를 만들어보겠습니다.
wordcloud = WordCloud(max_font_size=256 ,
random_state = 42 ,
mask = mask ,
height = mask.shape[0],
width = mask.shape[1] ,
stopwords = STOPWORDS,
background_color='white').generate(crime_descript)
mask 속성에 앞서 저희가 만든 PIL 라이브러리로 불러온 이미지를 이용해서 만든 mask를 기입하면 됩니다.
그리고 높이 및 너비 또한 mask의 높이 및 너비로 각각 설정해줍니다.
plt.figure(figsize = (20 , 12))
plt.imshow(wordcloud , interpolation = 'bilinear')
plt.axis('off')
plt.show()
아래는 최종적으로 만들어진 WordCloud입니다.
참고자료 : towardsdatascience.com/create-word-cloud-into-any-shape-you-want-using-python-d0b88834bc32
Create Word Cloud into any Shape you want using Python
A step-by-step guide to creating a beautiful Word Cloud
towardsdatascience.com