반응형
Notice
Recent Posts
Recent Comments
Link
«   2025/12   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

Learner's Log님의 블로그

운동 데이터 분석 본문

데이터 분석 및 실습

운동 데이터 분석

Learner's Log 2025. 2. 13. 20:24
import matplotlib.font_manager as fm
import matplotlib.pyplot as plt
import pandas as pd


pd.set_option('future.no_silent_downcasting', True)
plt.rcParams['font.family'] ='Malgun Gothic'
plt.rcParams['axes.unicode_minus'] =False

DF = pd.read_excel('notExercise.xls')

DF.head()
  기간 대분류 분류 운동을 할 충분한 시간이 없어서 함께 운동을 할 사람이 없어서 운동을 할 만한 장소가 없어서 운동을 싫어해서 기타
0 2017 서울시 서울시 49.7 8.1 5.8 34.7 1.7
1 2017 성별 남자 55.2 7.9 5.5 29.8 1.6
2 2017 성별 여자 45.0 8.3 6.0 38.8 1.8
3 2017 연령별 10대 55.7 6.1 5.6 32.2 0.3
4 2017 연령별 20대 54.8 6.9 5.2 32.9 0.1
DF.drop(columns = '기간', inplace = True)

DF.tail()
  대분류 분류 운동을 할 충분한 시간이 없어서 함께 운동을 할 사람이 없어서 운동을 할 만한 장소가 없어서 운동을 싫어해서 기타
48 관악구 관악구 50.7 7.1 6.9 33.6 1.7
49 서초구 서초구 59.8 3.4 3.2 32.0 1.5
50 강남구 강남구 59.1 5.5 2.6 31.5 1.3
51 송파구 송파구 42.6 7.2 5.8 44.3 0.1
52 강동구 강동구 53.1 9.6 6.8 30.4 0.1
DF['대분류'][23:] #23~52 '대분류' 정보 확인
23    지역대분류
24    지역대분류
25    지역대분류
26    지역대분류
27    지역대분류
28      종로구
29       중구
30      용산구
31      성동구
32      광진구
33     동대문구
34      중랑구
35      성북구
36      강북구
37      도봉구
38      노원구
39      은평구
40     서대문구
41      마포구
42      양천구
43      강서구
44      구로구
45      금천구
46     영등포구
47      동작구
48      관악구
49      서초구
50      강남구
51      송파구
52      강동구
Name: 대분류, dtype: object
DF.drop(index = range(23, 53), inplace = True)  #23~52 행(Row) 삭제

DF
  대분류 분류 운동을 할 충분한 시간이 없어서 함께 운동을 할 사람이 없어서 운동을 할 만한 장소가 없어서 운동을 싫어해서 기타
0 서울시 서울시 49.7 8.1 5.8 34.7 1.7
1 성별 남자 55.2 7.9 5.5 29.8 1.6
2 성별 여자 45.0 8.3 6.0 38.8 1.8
3 연령별 10대 55.7 6.1 5.6 32.2 0.3
4 연령별 20대 54.8 6.9 5.2 32.9 0.1
5 연령별 30대 58.1 5.5 4.6 31.6 0.2
6 연령별 40대 57.7 6.8 5.2 29.4 1
7 연령별 50대 50.1 9.2 7.2 32.2 1.4
8 연령별 60대 이상 27.5 12.8 6.9 46.8 6
9 학력별 중졸 이하 26.1 13.7 6.6 46.2 7.4
10 학력별 고졸 이하 46.3 8.5 6.9 36.5 1.7
11 학력별 대졸 이하 57.4 6.6 4.9 30.7 0.4
12 학력별 대학원 이상 65.3 3.8 0.6 29.6 0.6
13 소득별 100만원 미만 22.7 10.3 3.6 50.7 12.7
14 소득별 100-200만원 미만 34.3 11.5 7.1 41.5 5.6
15 소득별 200-300만원 미만 48.8 12.3 6.8 30.7 1.4
16 소득별 300-400만원 미만 54.9 7.1 6.5 31.2 0.3
17 소득별 400-500만원 미만 56.1 5 5.3 33.0 0.6
18 소득별 500만원 이상 52.3 7.1 5.1 34.9 0.6
19 혼인상태별 기혼 50.7 7.8 5.4 34.9 1.2
20 혼인상태별 미혼 54.3 7.1 5.4 32.2 1
21 혼인상태별 이혼/별거 47.4 8.3 6.8 34.9 2.7
22 혼인상태별 사별 25.2 14.9 8.9 42.9 8
DF_G = DF[DF['대분류'] == '성별'].copy()

DF_G
  대분류 분류 운동을 할 충분한 시간이 없어서 함께 운동을 할 사람이 없어서 운동을 할 만한 장소가 없어서 운동을 싫어해서 기타
1 성별 남자 55.2 7.9 5.5 29.8 1.6
2 성별 여자 45.0 8.3 6.0 38.8 1.8
DF_G.drop(columns = '대분류', inplace = True)

DF_G
  분류 운동을 할 충분한 시간이 없어서 함께 운동을 할 사람이 없어서 운동을 할 만한 장소가 없어서 운동을 싫어해서 기타
1 남자 55.2 7.9 5.5 29.8 1.6
2 여자 45.0 8.3 6.0 38.8 1.8
DF_G.set_index('분류', inplace = True)

DF_G
  운동을 할 충분한 시간이 없어서 함께 운동을 할 사람이 없어서 운동을 할 만한 장소가 없어서 운동을 싫어해서 기타
분류          
남자 55.2 7.9 5.5 29.8 1.6
여자 45.0 8.3 6.0 38.8 1.8
import matplotlib.pyplot as plt

figure, ax = plt.subplots(2, 2, figsize = (10,10))


DF_G['운동을 할 충분한 시간이 없어서'].plot.pie(explode = [0, 0.02],
                                                ax = ax[0, 0],
                                                autopct = '%.1f%%')
ax[0, 0].set_title('운동을 할 충분한 시간이 없어서')
ax[0, 0].set_ylabel('')



DF_G['함께 운동을 할 사람이 없어서'].plot.pie(explode = [0, 0.02],
                                              ax = ax[0, 1],
                                              autopct = '%.1f%%')
ax[0, 1].set_title('함께 운동을 할 사람이 없어서')
ax[0, 1].set_ylabel('')


DF_G['운동을 할 만한 장소가 없어서'].plot.pie(explode = [0, 0.02],
                                              ax = ax[1, 0],
                                              autopct = '%.1f%%')
ax[1, 0].set_title('운동을 할 만한 장소가 없어서')
ax[1, 0].set_ylabel('')


DF_G['운동을 싫어해서'].plot.pie(explode = [0, 0.02],
                                 ax = ax[1, 1],
                                 autopct = '%.1f%%')
ax[1, 1].set_title('운동을 싫어해서')
ax[1, 1].set_ylabel('')

plt.show()

DF_A = DF[DF['대분류'] == '연령별'].copy()
DF_A.drop(columns = '대분류', inplace = True)
DF_A.set_index('분류', inplace = True)

DF_A
  운동을 할 충분한 시간이 없어서 함께 운동을 할 사람이 없어서 운동을 할 만한 장소가 없어서 운동을 싫어해서 기타
분류          
10대 55.7 6.1 5.6 32.2 0.3
20대 54.8 6.9 5.2 32.9 0.1
30대 58.1 5.5 4.6 31.6 0.2
40대 57.7 6.8 5.2 29.4 1
50대 50.1 9.2 7.2 32.2 1.4
60대 이상 27.5 12.8 6.9 46.8 6
import matplotlib.pyplot as plt

figure, ax = plt.subplots(1, 3, figsize = (16,8))

explode_set = [0.02, 0.02, 0.02, 0.02, 0.02, 0.02]

DF_A['운동을 할 충분한 시간이 없어서'].plot.pie(explode = explode_set,
                                                ax = ax[0],
                                                autopct = '%1.1f%%')
ax[0].set_title('운동을 할 충분한 시간이 없어서')
ax[0].set_ylabel('')



DF_A['함께 운동을 할 사람이 없어서'].plot.pie(explode = explode_set,
                                              ax = ax[1],
                                              autopct = '%1.1f%%')
ax[1].set_title('함께 운동을 할 사람이 없어서')
ax[1].set_ylabel('')



DF_A['운동을 할 만한 장소가 없어서'].plot.pie(explode = explode_set,
                                              ax = ax[2],
                                              autopct = '%1.1f%%')
ax[2].set_title('운동을 할 만한 장소가 없어서')
ax[2].set_ylabel('')

plt.show()

DF_V = DF[DF['대분류'] == '학력별'].copy()
DF_V.drop(columns = '대분류', inplace = True)
DF_V.set_index('분류', inplace = True)

DF_V
  운동을 할 충분한 시간이 없어서 함께 운동을 할 사람이 없어서 운동을 할 만한 장소가 없어서 운동을 싫어해서 기타
분류          
중졸 이하 26.1 13.7 6.6 46.2 7.4
고졸 이하 46.3 8.5 6.9 36.5 1.7
대졸 이하 57.4 6.6 4.9 30.7 0.4
대학원 이상 65.3 3.8 0.6 29.6 0.6
import matplotlib.pyplot as plt

figure, ax = plt.subplots(1, 2, figsize = (16,8))

explode_set = [0.02, 0.02, 0.02, 0.02]


DF_V['운동을 할 충분한 시간이 없어서'].plot.pie(explode = explode_set,
                                                ax = ax[0],
                                                autopct = '%.1f%%')
ax[0].set_title('운동을 할 충분한 시간이 없어서')
ax[0].set_ylabel('')


DF_V['운동을 싫어해서'].plot.pie(explode = explode_set,
                                 ax = ax[1],
                                 autopct = '%.1f%%')
ax[1].set_title('운동을 싫어해서')
ax[1].set_ylabel('')

plt.show()

반응형