OkBublewrap

실전 데이터 분석 프로젝트(2) 본문

Python/프로젝트

실전 데이터 분석 프로젝트(2)

옥뽁뽁 2023. 3. 22. 21:35
import pandas as pd

data_file = "C:/myPyCode/data/total_sales_data.csv"

df_sales = pd.read_csv(data_file)
df_sales

df_sales.info()

매장명 9 non-null object

제품종류 non-null object

모델명 non-null object

판매 non-null int64

재고 non-null int64

 

df_sales['매장명'].value_counts()
# C 3
# B 3
# A 3

df_sales['제품종류'].value_counts()
# 스마트폰 5
# TV 4

Pivot Table

# 매장별 제품종류별 모델명별 재공량합계, 판매합계
df_sales.pivot_table(index=["매장명", "제품종류", "모델명"],
                     values =["판매","재고"], aggfunc='sum')

# 매장별 제품종류 별 판매수, 재고수 집계
df_sales.pivot_table(index=["매장명"], columns = ["제품종류"],
                     values =["판매","재고"], aggfunc='count')​

Word Cloud

from wordcloud import WordCloud
import matplotlib.pyplot as plt

file_name = 'C:/myPyCode/data/littleprince_djvu.txt'

with open(file_name) as f: # 파일을 읽기 모드로 열기
    text = f.read() # 파일의 내용 읽어오기

# 워드 클라우드의 이미지를 생성합니다.
wordcloud_image = WordCloud().generate(text)

# 생성한 워드 클라우드 이미지를 화면에 표시합니다.
plt.imshow(wordcloud_image, interpolation='bilinear')
plt.axis("off")
plt.show()

wordcloud_image = WordCloud(background_color='white', max_font_size=300, width=800, height=400).generate(text)

plt.imshow(wordcloud_image, interpolation="bilinear")
plt.axis("off")
plt.show()

워드클라우드는 전체적으로 무슨 단어가 많이 나온지 보기가 편하다. 위의 텍스트 경우 said, little, prince가 많이 나온 것을 알 수 있다. 어린왕자 동화에서 기억남은 문장이 어린왕자가 말했다. 장미꽃이 말했다. 이런 식의 문장이 많이 나와서 said가 많이 나온 것 같다. 

# 나온 워드클라우드를 컴퓨터에 저장
image_file_name = 'C:/myPyCode/figures/little_prince.png'
wordcloud_image.to_file(image_file_name)
plt.show()

그림에 워드클라우드 입히기

좀 찾아보니 그림에 워드클라우드를 입히는 것이 재밌어 보여서 진행을 했다.

어린왕자 그림으로 어린왕자 워드클라우드를 입힐 것이다.

from wordcloud import ImageColorGenerator
from PIL import Image

img = Image.open('C:/myPyCode/download/prince.png')

# png 파일 numpy로 변환
import numpy as np
msk_img = np.array(img)

# wordcloud 시각화
word_cloud = WordCloud(width = 2000, height = 1000,
                      mask = msk_img,
                      background_color = 'white')
wordcloud = word_cloud.generate_from_text(text)

plt.figure(figsize = (15, 15))
plt.imshow(wordcloud, interpolation = 'bilinear')
plt.axis('off')
plt.tight_layout(pad= 0)
plt.show()

 

단어 빈도수 

import pandas as pd

word_count_file = "C:/myPyCode/data/word_count.csv"
word_count = pd.read_csv(word_count_file, index_col = '단어')
word_count.head(5)

from wordcloud import WordCloud
import matplotlib.pyplot as plt

korean_font_path = 'C:/Windows/Fonts/malgun.ttf' # 한글 폰트(맑은 고딕) 파일명

# 워드 클라우드 이미지 생성
wc = WordCloud(font_path=korean_font_path, background_color='white')

frequencies = word_count['빈도'] # pandas의 Series 형식이 됨
wordcloud_image = wc.generate_from_frequencies(frequencies)

# 생성한 워드 클라우드 이미지를 화면에 표시
plt.imshow(wordcloud_image, interpolation="bilinear")
plt.axis("off")
plt.show()

'Python > 프로젝트' 카테고리의 다른 글

실전 데이터 분석 프로젝트(4)  (1) 2023.03.24
실전 데이터 분석 프로젝트(3)  (0) 2023.03.24
실전 데이터 분석 프로젝트(1)  (0) 2023.03.21
wine_modeling(1)  (0) 2023.03.05
Wine_EDA  (0) 2023.02.22