4. Summarize Data(자료 요약하기)
In [1]:
from IPython.core.display import display, HTML
display(HTML("<style> .container{width:90% !important;}</style>"))

Summarize Data

In [2]:
import pandas as pd
import seaborn as sns
import numpy as np
In [3]:
# 예제 데이터셋 불러오기
df = sns.load_dataset('iris')
df.shape
Out[3]:
(150, 5)
In [4]:
df.head()
Out[4]:
sepal_length sepal_width petal_length petal_width species
0 5.1 3.5 1.4 0.2 setosa
1 4.9 3.0 1.4 0.2 setosa
2 4.7 3.2 1.3 0.2 setosa
3 4.6 3.1 1.5 0.2 setosa
4 5.0 3.6 1.4 0.2 setosa
In [5]:
# 카테고리형 변수가 각 값별로 데이터가 얼마나 있는지 확인
df['species'].value_counts() 
Out[5]:
virginica     50
setosa        50
versicolor    50
Name: species, dtype: int64
In [6]:
# value_counts() 한 것을 데이터 프레임으로 넣기
df['species'].value_counts().to_frame()
# pd.DataFrame(df['species'].value_counts()) 도 같은 결과
Out[6]:
species
virginica 50
setosa 50
versicolor 50
In [7]:
# 데이터 프레임의 행수 확인
len(df)
# df.shape[0] 도 같은 결과
Out[7]:
150
In [8]:
# 변수의 유니크한 값 개수
df['species'].nunique() 
Out[8]:
3
In [9]:
# describe()를 사용해서 기본 통계값들을 확인할 수 있다.
df.describe()
Out[9]:
sepal_length sepal_width petal_length petal_width
count 150.000000 150.000000 150.000000 150.000000
mean 5.843333 3.057333 3.758000 1.199333
std 0.828066 0.435866 1.765298 0.762238
min 4.300000 2.000000 1.000000 0.100000
25% 5.100000 2.800000 1.600000 0.300000
50% 5.800000 3.000000 4.350000 1.300000
75% 6.400000 3.300000 5.100000 1.800000
max 7.900000 4.400000 6.900000 2.500000
In [10]:
# include = 'all' 인자를 넣어주면 categorical 변수에 대한 값인 unique, top, freq도 조회할 수 있음
df.describe(include='all')
Out[10]:
sepal_length sepal_width petal_length petal_width species
count 150.000000 150.000000 150.000000 150.000000 150
unique NaN NaN NaN NaN 3
top NaN NaN NaN NaN virginica
freq NaN NaN NaN NaN 50
mean 5.843333 3.057333 3.758000 1.199333 NaN
std 0.828066 0.435866 1.765298 0.762238 NaN
min 4.300000 2.000000 1.000000 0.100000 NaN
25% 5.100000 2.800000 1.600000 0.300000 NaN
50% 5.800000 3.000000 4.350000 1.300000 NaN
75% 6.400000 3.300000 5.100000 1.800000 NaN
max 7.900000 4.400000 6.900000 2.500000 NaN
In [11]:
# 문자형(카테고리형) 변수에 대한 통계값을 조회할 수 있음
df.describe(include=[np.object])
Out[11]:
species
count 150
unique 3
top virginica
freq 50
In [12]:
# 수치형 변수에 대한 통계값을 조회할 수 있음
df.describe(include=[np.number])
Out[12]:
sepal_length sepal_width petal_length petal_width
count 150.000000 150.000000 150.000000 150.000000
mean 5.843333 3.057333 3.758000 1.199333
std 0.828066 0.435866 1.765298 0.762238
min 4.300000 2.000000 1.000000 0.100000
25% 5.100000 2.800000 1.600000 0.300000
50% 5.800000 3.000000 4.350000 1.300000
75% 6.400000 3.300000 5.100000 1.800000
max 7.900000 4.400000 6.900000 2.500000
In [13]:
# 해당 컬럼의 값 합계
df['petal_width'].sum()
Out[13]:
179.90000000000003
In [14]:
# 해당 컬럼의 null이 아닌 행의 수
df['petal_width'].count()
Out[14]:
150
In [15]:
# 해당 컬럼의 중위수
df['petal_width'].median()
Out[15]:
1.3
In [16]:
# 해당 컬럼의 평균값
df['petal_width'].mean()
Out[16]:
1.199333333333334
In [17]:
# 데이터 프레임 각 컬럼의 평균값
df.mean()
Out[17]:
sepal_length    5.843333
sepal_width     3.057333
petal_length    3.758000
petal_width     1.199333
dtype: float64
In [18]:
# 4분위수 확인하기
df.quantile([0.25, 0.75])
Out[18]:
sepal_length sepal_width petal_length petal_width
0.25 5.1 2.8 1.6 0.3
0.75 6.4 3.3 5.1 1.8
In [19]:
# 데이터 프레임 각 컬럼의 최댓값
df.max()
Out[19]:
sepal_length          7.9
sepal_width           4.4
petal_length          6.9
petal_width           2.5
species         virginica
dtype: object
In [20]:
# 데이터 프레임 각 컬럼의 최솟값
df.min()
Out[20]:
sepal_length       4.3
sepal_width          2
petal_length         1
petal_width        0.1
species         setosa
dtype: object
In [21]:
# 데이터 프레임 각 컬럼의 분산
df.var()
Out[21]:
sepal_length    0.685694
sepal_width     0.189979
petal_length    3.116278
petal_width     0.581006
dtype: float64
In [22]:
# 데이터 프레임의 각 컬럼의 표준편차
df.std()
Out[22]:
sepal_length    0.828066
sepal_width     0.435866
petal_length    1.765298
petal_width     0.762238
dtype: float64

apply(function)

In [23]:
# 임의의 함수 설정
def smp(x):
    # 뒤에서 세번째까지의 문자를 가져오는 함수
    x = x[-3:]
    return x 
In [24]:
# lambda 익명함수 적용
df['species_3'] = df['species'].apply(lambda x : x[:3]) 
In [25]:
# 설정해둔 함수 적용
df['species_4'] = df['species'].apply(smp) 
In [26]:
df.head()
Out[26]:
sepal_length sepal_width petal_length petal_width species species_3 species_4
0 5.1 3.5 1.4 0.2 setosa set osa
1 4.9 3.0 1.4 0.2 setosa set osa
2 4.7 3.2 1.3 0.2 setosa set osa
3 4.6 3.1 1.5 0.2 setosa set osa
4 5.0 3.6 1.4 0.2 setosa set osa

+ Recent posts