728x90
반응형
(문제)
파이썬 데이터 시각화 관련.
csv 파일에서 필요한 데이터만 추출해서
지역별로 나이에 따라 인구수와
지역별로 PET병 배출량을 막대 그래프 그리기
(방법)
1) 지역별로 나이에 따라 인구수
- 첨부한 데이터를 정확히 몰라서 어떤 컬럼이 인구수인지 모르겠습니다.
대략 다음 컬럼들이 인구수로 가정했습니다.
남_~9,남_10~19...남_100~
여_~9,여_10~19...여_100~
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
df = pd.read_csv('폐기물dataset.csv', header=0, encoding='cp949')
df['배출량'] = df['배출량'].str.replace(',', '') # 배출량이 317,827.8 와 같이 ','가 있어 실수가 아닌 Object로 되어 있어서 ','제거
df = df.astype({'배출량':'float'}) # Object -> Float
df2.groupby(['지역']).sum()
fig = plt.figure(figsize=(14, 6)) # plot 크기 설정
plt.rcParams['font.family'] = 'NanumGothic' # 한글 가능하도록 폰트 설정
f_size = 16 # 제목 폰트 크기
bar_width = 0.1
x_column = 'X축'
y_column = 'Y축'
x_label = list(df2['지역']) # 데이터명
x = np.arange(len(x_label))
y = list(df2['남_~9']) # 데이터
y2 = list(df2['남_10~19']) # 데이터
y3 = list(df2['남_20~29']) # 데이터
y4 = list(df2['남_30~39']) # 데이터
y5 = list(df2['남_40~49']) # 데이터
y6 = list(df2['남_50~59']) # 데이터
y7 = list(df2['남_60~69']) # 데이터
y8 = list(df2['남_70~79']) # 데이터
y9 = list(df2['남_80~89']) # 데이터
y10 = list(df2['남_90~99']) # 데이터
y11 = list(df2['남_100~']) # 데이터
plt.bar(x, y, bar_width, alpha=0.4, label='남_~9') # bar chart 그리기
plt.bar(x+bar_width, y2, bar_width, label='남_10~19')
plt.bar(x+2*bar_width, y3, bar_width, label='남_20~29')
plt.bar(x+3*bar_width, y4, bar_width, label='남_30~39')
plt.bar(x+4*bar_width, y5, bar_width, label='남_40~49')
plt.bar(x+5*bar_width, y6, bar_width, label='남_50~59')
plt.bar(x+6*bar_width, y7, bar_width, label='남_60~69')
plt.bar(x+7*bar_width, y8, bar_width, label='남_70~79')
plt.bar(x+8*bar_width, y9, bar_width, label='남_80~89')
plt.bar(x+9*bar_width, y10, bar_width, label='남_90~99')
plt.bar(x+10*bar_width, y11, bar_width, label='남_100~')
plt.xticks(x, x_label)
plt.title("지역별 나이별 인구수(남)",fontsize=f_size) # 제목 쓰기
plt.legend()
plt.show()
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
df = pd.read_csv('폐기물dataset.csv', header=0, encoding='cp949')
df['배출량'] = df['배출량'].str.replace(',', '') # 배출량이 317,827.8 와 같이 ','가 있어 실수가 아닌 Object로 되어 있어서 ','제거
df = df.astype({'배출량':'float'}) # Object -> Float
df2.groupby(['지역']).sum()
fig = plt.figure(figsize=(14, 6)) # plot 크기 설정
plt.rcParams['font.family'] = 'NanumGothic' # 한글 가능하도록 폰트 설정
f_size = 16 # 제목 폰트 크기
bar_width = 0.1
x_column = 'X축'
y_column = 'Y축'
x_label = list(df2['지역']) # 데이터명
x = np.arange(len(x_label))
y = list(df2['여_~9']) # 데이터
y2 = list(df2['여_10~19']) # 데이터
y3 = list(df2['여_20~29']) # 데이터
y4 = list(df2['여_30~39']) # 데이터
y5 = list(df2['여_40~49']) # 데이터
y6 = list(df2['여_50~59']) # 데이터
y7 = list(df2['여_60~69']) # 데이터
y8 = list(df2['여_70~79']) # 데이터
y9 = list(df2['여_80~89']) # 데이터
y10 = list(df2['여_90~99']) # 데이터
y11 = list(df2['여_100~']) # 데이터
plt.bar(x, y, bar_width, alpha=0.4, label='여_~9') # bar chart 그리기
plt.bar(x+bar_width, y2, bar_width, label='여_10~19')
plt.bar(x+2*bar_width, y3, bar_width, label='여_20~29')
plt.bar(x+3*bar_width, y4, bar_width, label='여_30~39')
plt.bar(x+4*bar_width, y5, bar_width, label='여_40~49')
plt.bar(x+5*bar_width, y6, bar_width, label='여_50~59')
plt.bar(x+6*bar_width, y7, bar_width, label='여_60~69')
plt.bar(x+7*bar_width, y8, bar_width, label='여_70~79')
plt.bar(x+8*bar_width, y9, bar_width, label='여_80~89')
plt.bar(x+9*bar_width, y10, bar_width, label='여_90~99')
plt.bar(x+10*bar_width, y11, bar_width, label='여_100~')
plt.xticks(x, x_label)
plt.title("지역별 나이별 인구수(여)",fontsize=f_size) # 제목 쓰기
plt.legend()
plt.show()
2) 지역별로 PET병 배출량
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
def add_value_label(x_list,y_list): # bar chart에 값을 text로 표시
for i in range(1, len(x_list)+1):
plt.text(i-1,y_list[i-1],y_list[i-1])
df = pd.read_csv('폐기물dataset.csv', header=0, encoding='cp949')
df['배출량'] = df['배출량'].str.replace(',', '') # 배출량이 317,827.8 와 같이 ','가 있어 실수가 아닌 Object로 되어 있어서 ','제거
df = df.astype({'배출량':'float'}) # Object -> Float
df2 = df[(df['폐기물상세'] == 'PET병')]
df2.groupby(['지역']).sum()
fig = plt.figure(figsize=(14, 6)) # plot 크기 설정
plt.rcParams['font.family'] = 'NanumGothic' # 한글 가능하도록 폰트 설정
f_size = 16 # 제목 폰트 크기
bar_width = 0.8
x_column = 'X축'
y_column = 'Y축'
x_label = list(df2['지역']) # 데이터명
x = np.arange(len(x_label))
y = list(df2['배출량']) # 데이터
plt.bar(x, y, bar_width, alpha=0.6, color='green', label='배출량(PET병)') # bar chart 그리기
plt.xticks(x, x_label)
add_value_label(x, y) # 값 표시
plt.title("지역별 배출량(PET병)",fontsize=f_size) # 제목 쓰기
plt.grid()
plt.legend()
plt.show()
728x90
반응형
'프로그램' 카테고리의 다른 글
[파이썬] 문제 : 7글자 입력받아 회문 검사 (0) | 2022.12.11 |
---|---|
[파이썬] 문제 : 시분초 입력받고, 몇 초 뒤의 시분초 출력(timedelta) (0) | 2022.12.11 |
[파이썬] 문제 : 폴더 압축 (0) | 2022.12.10 |
[파이썬] 문제 : PyQt5 마우스 더블클릭 이벤트 (0) | 2022.12.10 |
[파이썬] 문제 : 읽기용 txt 파일을 읽어 라인번호 붙여서 파일에 쓰기 (0) | 2022.12.10 |
댓글