# 기술 통계
# - 자료를 정리 및 요약하는 기초적인 통계
# - 데이터 분석 전에 전체적인 데이터 분포의 이해와 통계적 수치 제공
# - 추론통계의 기초자료로 많이 쓰인다.
# 기술통계량 유형 - 대표값, 산포도, 비대칭도 : 왜도, 첨도
# 기술 통계 분석 - 정보의 손실을 최대로 줄이면서 데이터를 효과적으로 요약할 수 있는 분석방법.
# 돗수 분포표 : 특정 구간에 속하는 자료의 수를 나타내는 표
# 일변량(one variable) - 명목형 - 빈도 분석
import pandas as pd
import matplotlib.pyplot as plt
frame = pd.read_csv('../testdata/ex_studentlist.csv')
print(frame) # csv파일을 불러와서 호출한다.
print(frame.info()) # 칼럼 정보를 확인
print(frame['age'].mean(), frame['age'].var(), frame['age'].std())
# plt.plot(frame['age'])
# plt.show()
print(frame['bloodtype'].unique()) # 값이 뭐가 있는 지 확인 가능하다.
# bloodtype별 인원수
data1 = frame.groupby(['bloodtype'])['bloodtype'].count()
print(data1) # groupby 방법
data2 = pd.crosstab(index=frame['bloodtype'], columns='count')
print(data2) # crosstab 방법
print('---')
# 이변량(two variable) - 명목형(성별, 혈액형) - 빈도 분석
data3 = pd.crosstab(index=frame['bloodtype'], columns=frame['sex'])
print(data3)
print()
data4 = pd.crosstab(index=frame['bloodtype'], columns=frame['sex'], margins=True)
print(data4)
print()
data4.columns = ['남','여','합계']
data4.index = ['A', 'AB', 'B', 'O', '합계']
print(data4)
<console>
name sex age grade absence bloodtype height weight
0 김길동 남자 23 3 유 O 165.3 68.2
1 이미린 여자 22 2 무 AB 170.1 53.0
2 홍길동 남자 24 4 무 B 175.0 80.1
3 공기밥 남자 23 3 무 AB 182.1 85.7
4 손세수 여자 20 1 유 A 168.0 49.5
5 박미희 여자 21 2 무 O 162.0 52.0
6 강가에 여자 22 1 무 O 155.2 45.3
7 이희수 여자 23 1 무 A 176.9 55.0
8 이철린 남자 23 3 무 B 178.5 64.2
9 박치기 남자 22 2 무 B 176.1 61.3
10 박수호 남자 24 4 유 O 167.1 62.0
11 임동민 남자 22 2 무 AB 180.0 75.8
12 김민수 남자 21 1 무 A 162.2 55.3
13 이겨라 여자 23 3 무 O 176.1 53.1
14 김미진 여자 22 2 무 B 158.2 45.2
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 15 entries, 0 to 14
Data columns (total 8 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 name 15 non-null object
1 sex 15 non-null object
2 age 15 non-null int64
3 grade 15 non-null int64
4 absence 15 non-null object
5 bloodtype 15 non-null object
6 height 15 non-null float64
7 weight 15 non-null float64
dtypes: float64(2), int64(2), object(4)
memory usage: 1.1+ KB
None
22.333333333333332 1.2380952380952384 1.1126972805283737
['O' 'AB' 'B' 'A']
bloodtype
A 3
AB 3
B 4
O 5
Name: bloodtype, dtype: int64
col_0 count
bloodtype
A 3
AB 3
B 4
O 5
---
sex 남자 여자
bloodtype
A 1 2
AB 2 1
B 3 1
O 2 3
sex 남자 여자 All
bloodtype
A 1 2 3
AB 2 1 3
B 3 1 4
O 2 3 5
All 8 7 15
남 여 합계
A 1 2 3
AB 2 1 3
B 3 1 4
O 2 3 5
합계 8 7 15