import pandas as pd # pandas 모듈을 pd라는 이름으로 가져와서 사용
import matplotlib.pyplot as plt # matplotlib.pyplot 모듈을 plt라는 이름으로 가져와서 사용
'''
singer.csv 이용
voice.part별로 그룹화 한 후 각각의 그룹마다 가수의 Height 분포를 원형차트로 나타냄 (가수의 키와 음역대의 상관관계 확인)
그래프는 voice.part 그룹의 개수만큼 그려짐 (총 8개)
'''
dataframe = pd.read_csv('dataset/singer.csv') # pandas의 csv파일을 읽어서 dataframe 형태로 만들어주는 read_csv함수를 이용해서 csv 파일을 읽음
voice_types = dataframe['voice.part'].unique() # dataframe['voice.part']를 이용해서 dataframe에서 'voice.part' 열데이터를 읽어옴
# 읽어온 'voice.part' 열데이터를 unique() 함수를 이용해서 중복 데이터를 없애고 list형태의 unique한 데이터를 가져옴
wedgeprops = {'width': 0.7, 'edgecolor': 'w', 'linewidth': 5} # 원형창트의 부채꼴 영역의 스타일을 지정하는 dictionary
# width는 부채꼴 영역의 너비(반지름에 대한 비율로 지정), edgecolor는 테두리의 색상, linewidth는 테두리 선의 너비
pie_colors = ['#FF9998', '#ffc000', '#86E57F', '#8FD9B7', '#D395D1'] # 원형차트의 색상을 색상코드 리스트로 지정 (데이터 개수가 리스트길이보다 길 경우 해당 색들이 반복해서 나타남)
plt.figure(figsize=(10, 14)) # 그래프의 개수가 많아 그래프 그리는 공간이 많이 필요하므로 그래프를 그리는 공간의 size를 변경 (가로 10, 세로 14)
for i in range(len(voice_types)): # voice_types list의 길이만큼 반복하는 반복문
plt.subplot(4, 2, i+1) # 여러 그래프를 그리기 위한 subplot 설정
# subplot()은 여러개의 그래프를 하나의 그림에 그릴때 사용
# 인자는 순서대로 (행, 열, index) / plt의 구역을 몇행, 몇열로 나눌지를 지정해주고 index로 어디에 그릴지를 지정해주는것 (index는 1부터 시작, 왼쪽위부터 오른쪽 아래로 셈)
# plt.subplot(4, 2, i+1)는 plt을 4행 2열로 나누고 i+1번째의 공간에 그래프를 그린다는것을 의미
height_df = dataframe[dataframe['voice.part'] == voice_types[i]].groupby('height')['voice.part'].count() # dataframe[dataframe['voice.part'] == voice_types[i]] 으로 dataframe에서 voice_type[i]와 일치하는 voice.part를 가지는 데이터를 추출한후,
# groupby 함수로 'height'으로 그룹화를 하며,
# 그룹화된 데이터에서 height별 count를 구해서 height_df에 저장
labels = height_df.index.to_list() # height_df index를 list로 만들어서 x에 저장 ('height'로 group 을 만들었으므로 index는 'height'의 unique 값의 리스트가 됨)
for j in range(len(labels)): # label을 출력할때 단위인 inch를 붙여주기 위해 labels 리스트를 순회
labels[j] = str(labels[j]) + 'inch' # 뒤에 inch를 붙인 문자열로 덮어씌움
plt.title(voice_types[i] + ' Vocal\'s Height', fontsize=12) # 그래프의 제목을 지정 (글자크기는 12)
plt.pie(height_df.values, labels=labels, startangle=10,
colors=pie_colors, autopct='%.2f%%', wedgeprops=wedgeprops, textprops={'fontsize': 6}) # pie 함수로 원형차트를 그림
# 인자로 원형차트로 표시할 데이터를 전달해주는데 height_df.values를 전달했음. (height_df.values는 특정 'voice,part'의 'height'별로 몇명인지가 들어있음)
plt.savefig('ex4.png') # 그래프를 그려서 ex4.png 라는 이름의 파일에 저장하도록 함
Colored by Color Scripter
cs
사용 데이터
python파일 공유
'포트폴리오' 카테고리의 다른 글
python - 블로그로 알아보는 성향분석(웹 크롤링) (0) | 2022.07.28 |
---|---|
python - numpy패키지 기능(R함수 비교) (0) | 2022.06.28 |
python - tensorflow(iris 데이터셋 이용) (0) | 2022.06.28 |
html 2022-06-28 (0) | 2022.06.28 |
R, python 누적 막대 차트 (VADeaths 데이터 이용) (0) | 2022.06.28 |