Pandas 활용한 데이터 분석 입문(2) - DataFrame 데이터살펴보기, 수치형과 범주형 데이터

천호영·2021년 6월 22일
0

DataFrame 데이터살펴보기

DataFrames내 저장된 데이터를 살펴보기 위해 다음과 같은 함수를 사용합니다.

df.info()
  • DataFrame 의 전체적인 정보를 한 번에 확인할 수 있는 함수로
  • 객체의 타입, 행/열의 개수, 열의 인덱스명과 저장된 데이터의 타입 등을 확인할 수 있음
df.head(n)
  • DataFrame 의 가장 첫번째 행 부터 n 개의 행 데이터를 조회
  • n : 출력하고자 하는 행 데이터의 개수(default n 은 5 의 값을 가짐)
df.tail(n)
  • DataFrame 의 가장 마지막 행 부터 n 개의 데이터를 조회
  • n : 출력하고자 하는 행 데이터의 개수
df.sample(n, random_state)
  • 임의의 행 데이터 n 개를 랜덤하게 반환해주는 함수
  • n 은 생략 가능하며, 생략시 1개의 행 데이터 반환
  • random_state 인자에 임의의 정수를 지정하면 재현성을 항상 보장
df.sample(frac)
  • 임의의 행 데이터 n개를 랜덤하게 반환해주는 함수
  • frac 지정된 비중에 따라 일부 데이터를 반환함(fraction)
  • frac 인자는 0~1 값으로 지정할 수 있음
  • frac과 n 인자는 동시에 사용할 수 없음

<실습코드>

import pandas as pd

# 실습 데이터 생성
score = {'name': ['Jessi', 'Emma', 'Alex', 'Jessi', 'Tom'],
         '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)


'''
.info() 함수 실습
'''
print('\n<Summary of DataFrame>')
print(score_df.info())


'''
.head() 함수 실습
'''
print('\n<Return the first n rows>')
print(score_df.head(3))


'''
.tail() 함수 실습
'''
print('\n<Return the last n rows>')
print(score_df.tail(2))


'''
.sample() 함수 실습
'''
print('\n<Return a random sample>')
print(score_df.sample())


'''
.sample() 함수의 random_state 인자 실습
'''
print('\n<Return a random sample with random_state>')
print(score_df.sample(2, random_state=10))


'''
.sample() 함수의 flac 인자 실습
'''
print('\n<Return a random sample with flac 50%>')
print(score_df.sample(frac=0.5))

<실행결과>

    name  score grade subject
0  Jessi    100     A  python
1   Emma     95     A    java
2   Alex     80     B  python
3  Jessi     85     B       c
4    Tom     97     A    java

<Summary of DataFrame>
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 5 entries, 0 to 4
Data columns (total 4 columns):
 #   Column   Non-Null Count  Dtype 
---  ------   --------------  ----- 
 0   name     5 non-null      object
 1   score    5 non-null      int64 
 2   grade    5 non-null      object
 3   subject  5 non-null      object
dtypes: int64(1), object(3)
memory usage: 288.0+ bytes
None

<Return the first n rows>
        name       score       grade     subject
       Jessi         100           A      python
        Emma          95           A        java
        Alex          80           B      python


<Return the last n rows>
    name  score grade subject
3  Jessi     85     B       c
4    Tom     97     A    java

<Return a random sample>
    name  score grade subject
0  Jessi    100     A  python

<Return a random sample with random_state>
    name  score grade subject
2   Alex     80     B  python
3  Jessi     85     B       c

<Return a random sample with flac 50%>
    name  score grade subject
2   Alex     80     B  python
3  Jessi     85     B       c

DataFrame - 수치형과 범주형 데이터

수치형 데이터와 범주형 데이터의 특징에 대해 이해하고, 서로 다른 접근법을 학습합니다.

수치형(Numerical) 데이터

  • 관측된 값이 수치로 측정되는 데이터로 '연속형'데이터라고도 함
  • 값의 평균, 중앙값, 표준편차 등과 같은 접근이 의미가 있는 데이터
    ex) 키, 몸무게, 시험점수

범주형(Categorical) 데이터

  • 범주 또는 항목의 형태로 표현되는 데이터
  • 숫자로 표현될 수 있으나, 수치적인 의미를 가질 수 없음
    ex) 성별(남/여), 설문조사(1,2,3,4,5점)
df.describe()
  • 저장된 데이터에 대해서 기술 통계(descriptive statistics) 요약을 출력하는 함수
  • 기술 통계란? 수집한 데이터의 특성을 표현하고 분석하는 통계 기법
    수치형 데이터 : 개수, 평균, 표준편차, 최대값, 최소값, 25%분위수, 중앙값 을 출력
    범주형 데이터 : count, unique, top, freq 값 출력됨
df.unique()
  • 범주형 데이터의 고유한 종류를 출력하는 함수(수치형 데이터는 X)
df.value_counts()
  • 범주형 데이터의 각 카테고리별 빈도수를 출력하는 함수(수치형 데이터는 X)
  • df.value_counts(normalize=True)를 하면 빈도수를 비율로 출력

<실습코드>

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)


'''
describe() 함수 실습
'''
print("\nGenerate Descriptive Statistics")
print(score_df.describe())


'''
범주형 데이터에 대한 describe() 함수 실습
'''
print("\nGenerate Descriptive Statistics for Categorical")
print(score_df[['grade','subject']].describe())


'''
describe(include='all') 함수 실습
'''
print("\nGenerate Descriptive Statistics")
print(score_df.describe(include='all'))


'''
범주형 데이터를 위한 unique() 함수 실습
'''
print("\nThe Unique Values")
print(score_df['subject'].unique())


'''
범주형 데이터를 위한 value_counts() 함수 실습
'''
print("\nThe 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

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

Generate Descriptive Statistics for Categorical
       grade subject
count      5       5
unique     2       3
top        A  python
freq       3       2

Generate Descriptive Statistics
         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

The Unique Values
['python' 'java' 'c']

The Value Counts
python    0.4
java      0.4
c         0.2
Name: subject, dtype: float64

0개의 댓글