코드 프레소 [Python으로 배우는 Pandas] 강의 내용 정리
# 수치형 데이터 & 범주형 데이터..?
수치형 데이터는 관측된 값이 수치로 측정되는 데이터이다. "연속형" 데이터라고도 한다.
값의 평균, 중앙값, 표준편차 등과 같은 접근이 의미가 있는 데이터이다.
(ex :: 키, 몸무계, 시험점수, 자동차 판매 건수 ..etc)
범주형 데이터는 데이터가 범주 또는, 항목으로 표현되는 것으로 숫자로 표현되기도 하나, 수치적인 의미가 없다.
(ex:: 성별, 국적, 거주지역, 메달 순위, 설문조사 결과 ..etc)
범주형 데이터에 접근시 범주의 종류나 빈도수로 접근할 수 있다.
(ex:: 요일별 커피 판매수 )
#예시 코드
# 수치형 데이터 확인 및 데이터 정보 출력
import pandas as pd
# 실습 데이터 생성
score = { 'name' : ['Jessi', 'Emma', 'Alex', 'Jessi', 'Tom'],
'age': [20, 24, 23, 20, 27],
'score': [100, 95, 80, 85, 97],
'grade': ['A','A','B','B','A'],
'subject':['python', 'java','python', 'c','java']}
score_df = pd.DataFrame(data=score)
print(score_df)
print("\nGenerate Descriptive Statistics")
print(score_df.describe())
name age score grade subject
0 Jessi 20 100 A python
1 Emma 24 95 A java
2 Alex 23 80 B python
3 Jessi 20 85 B c
4 Tom 27 97 A java
Generate Descriptive Statistics
age score
count 5.000000 5.000000
mean 22.800000 91.400000
std 2.949576 8.502941
min 20.000000 80.000000
25% 20.000000 85.000000
50% 23.000000 95.000000
75% 24.000000 97.000000
max 27.000000 100.000000
위의 소스 코드 결과를 살펴보면 describe()를 호출하였을때 연산 가능한 데이터(수치형 데이터)인 age와 score에 대한 count, mean, std, min, max, 값이 출력되는 것을 볼 수 있다. (중간에 퍼센테이지 값은 데이터의 해당 퍼센테이지의 값을 의미한다.)
# 범주형 데이터 확인 및 데이터 정보 출력
import pandas as pd
# 실습 데이터 생성
score = { 'name' : ['Jessi', 'Emma', 'Alex', 'Jessi', 'Tom'],
'age': [20, 24, 23, 20, 27],
'score': [100, 95, 80, 85, 97],
'grade': ['A','A','B','B','A'],
'subject':['python', 'java','python', 'c','java']}
score_df = pd.DataFrame(data=score)
print(score_df)
print("\nGenerate Descriptive Statistics for Categorical")
print(score_df[['grade','subject']].describe())
name age score grade subject
0 Jessi 20 100 A python
1 Emma 24 95 A java
2 Alex 23 80 B python
3 Jessi 20 85 B c
4 Tom 27 97 A java
Generate Descriptive Statistics for Categorical
grade subject
count 5 5
unique 2 3
top A python
freq 3 2
이전 수치형 데이터에 대한 describe()를 호출했을 때와는 달리 count,unique,top,freq 값이 출력되는 것을 볼 수 있다.
# describe(include ='all') 예시 코드
import pandas as pd
# 실습 데이터 생성
score = { 'name' : ['Jessi', 'Emma', 'Alex', 'Jessi', 'Tom'],
'age': [20, 24, 23, 20, 27],
'score': [100, 95, 80, 85, 97],
'grade': ['A','A','B','B','A'],
'subject':['python', 'java','python', 'c','java']}
score_df = pd.DataFrame(data=score)
print(score_df)
print("\nGenerate Descriptive Statistics for all data")
print(score_df.describe(include = 'all'))
name age score grade subject
0 Jessi 20 100 A python
1 Emma 24 95 A java
2 Alex 23 80 B python
3 Jessi 20 85 B c
4 Tom 27 97 A java
Generate Descriptive Statistics for all data
name age score grade subject
count 5 5.000000 5.000000 5 5
unique 4 NaN NaN 2 3
top Jessi NaN NaN A python
freq 2 NaN NaN 3 2
mean NaN 22.800000 91.400000 NaN NaN
std NaN 2.949576 8.502941 NaN NaN
min NaN 20.000000 80.000000 NaN NaN
25% NaN 20.000000 85.000000 NaN NaN
50% NaN 23.000000 95.000000 NaN NaN
75% NaN 24.000000 97.000000 NaN NaN
max NaN 27.000000 100.000000 NaN NaN
결과를 살펴보면 수치형 데이터와 범주형 데이터에 대한 정보가 함께출력되는 것을 볼 수 있다. 다만, NaN으로 표현되는 결측치도 같이 출력됨을 볼 수 있다. 이는 해당 column의 데이터는 해당 row의 정보로 연산되지 않음을 의미한다.
# unique() 활용 (범주형 데이터)
import pandas as pd
# 실습 데이터 생성
score = { 'name' : ['Jessi', 'Emma', 'Alex', 'Jessi', 'Tom'],
'age': [20, 24, 23, 20, 27],
'score': [100, 95, 80, 85, 97],
'grade': ['A','A','B','B','A'],
'subject':['python', 'java','python', 'c','java']}
score_df = pd.DataFrame(data=score)
print(score_df)
print('\nThe unique Values')
print(score_df['subject'].unique())
name age score grade subject
0 Jessi 20 100 A python
1 Emma 24 95 A java
2 Alex 23 80 B python
3 Jessi 20 85 B c
4 Tom 27 97 A java
The unique Values
['python' 'java' 'c']
# value_counts() 활용 (범주형 데이터)
import pandas as pd
# 실습 데이터 생성
score = { 'name' : ['Jessi', 'Emma', 'Alex', 'Jessi', 'Tom'],
'age': [20, 24, 23, 20, 27],
'score': [100, 95, 80, 85, 97],
'grade': ['A','A','B','B','A'],
'subject':['python', 'java','python', 'c','java']}
score_df = pd.DataFrame(data=score)
print(score_df)
print('\nThe Value Counts')
print(score_df['subject'].value_counts())
#정규화하여 value count를 표현
print('\nThe Normalized Value Counts')
print(score_df['subject'].value_counts(normalize = True))
name age score grade subject
0 Jessi 20 100 A python
1 Emma 24 95 A java
2 Alex 23 80 B python
3 Jessi 20 85 B c
4 Tom 27 97 A java
The Value Counts
python 2
java 2
c 1
Name: subject, dtype: int64
The Normalized Value Counts
python 0.4
java 0.4
c 0.2
Name: subject, dtype: float64
'공부한 것들.. > Pandas' 카테고리의 다른 글
Pandas 결측치 이해 및 결측치 처리 (2) | 2024.09.14 |
---|---|
Pandas 데이터 파일 읽기 (1) | 2024.09.14 |
Pandas DataFrame 데이터 추가 및 삭제 (0) | 2024.09.13 |
Pandas 데이터 조회 및 변경 (0) | 2024.09.13 |
Pandas 자료구조:: Series & DataFrame (0) | 2024.09.13 |