기초 통계량
어떤 데이터가 가지고 있는 성질을 확인하려면 기초 통계량을 확인해야 할 것이다. 이러한 통계량으로는 평균, 중앙값, 분산, 최대값, 최소값, 빈도수 등이 있을 것이다.
일단 예시를 위해 임의로 데이터를 불러오자.
import seaborn as sns
import pandas as pd
df = sns.load_dataset("iris")
seaborn의 iris 데이터셋을 불러왔다.
iris 데이터셋에는 sepal_length, sepal_width, petal_length, petal_width, species 열이 있는데, 이 중 species 열만 범주형이다. 범주형이 아닌 수치형 자료는 평균, 중앙값 등을 가지는데, 범주형 자료는 빈도수, 종류 등의 통계량을 가진다.
기본적으로 통계량은 describe
(참고링크)를 이용하면 된다.
df["petal_width"].describe()
먼저 수치형 자료의 기초통계량부터 확인하면 다음과 같다.
count 150.000000
mean 1.199333
std 0.762238
min 0.100000
25% 0.300000
50% 1.300000
75% 1.800000
max 2.500000
Name: petal_width, dtype: float64
이런 식으로 빈도수, 평균, 표준편차, 최소값, 사분위수, 최대값, 열 이름, 타입을 보여준다.
df["species"].describe()
범주형 자료의 기초통계량을 확인하면 다음과 같다.
count 150
unique 3
top setosa
freq 50
Name: species, dtype: object
범주형 자료는 이런 식으로 빈도수, 값의 종류, 최빈값, 최빈값의 빈도, 열 이름, 타입을 보여준다. 참고로 최빈값이 여러개인 경우 사전식 순서로 가장 앞선 것을 보여주기 때문에 다시 확인해야 한다.
이때는 value_count
(참고링크)를 활용하면 좋다.
df["species"].value_counts()
아래와 같이 출력되어 각 값의 빈도를 확인할 수 있다.
species
setosa 50
versicolor 50
virginica 50
Name: count, dtype: int64
데이터 전체에 대해서도 확인 가능한데, 매개변수 include
를 이용해야 한다. 기본 설정은 object
, 즉 범주형은 제외하기 때문에 범주형을 포함하도록 아래와 같이 설정하면 된다.
df.describe(include=["object", "float"])
출력은 다음과 같다.
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 setosa
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
각각의 메소드
앞서 언급한 것들을 다양한 메소드를 통해 따로따로 접근하고 추출할 수 있다.
평균은 mean
(참고링크)을 통해 한다. 이때 mean
의 매개변수로 axis
를 넣을 수 있는데, 이를 통해서 열이 아니라 행의 평균에도 접근할 수 있다. 단 mean
으로 접근하는 자료는 반드시 수치형이어야 하기 때문에 범주형 자료가 섞여 있다면 에러가 뜬다.
df_num = df.drop(columns=["species"])
df_num.mean()
출력은 아래와 같다. 위처럼 데이터프레임 전체에 접근도 가능하고, 각 열에 대해 접근도 가능하다.
sepal_length 5.843333
sepal_width 3.057333
petal_length 3.758000
petal_width 1.199333
dtype: float64
median
(참고링크), sum
(참고링크), min
(참고링크), max
(참고링크), var
(참고링크), std
(참고링크), count
(참고링크) 역시 유사한 방식으로 동작하니 레퍼런스 참고해서 사용하면 된다.
범주형 자료에는 nunique
(참고링크), unique
(참고링크), mode
(참고링크)가 주로 사용된다. nunique
는 값의 종류를 수로 나타내고, unique
는 값의 종류를 모두 나타내며, mode
는 최빈값을 나타낸다.
df["species"].unique()
출력은 다음과 같다.
array(['setosa', 'versicolor', 'virginica'], dtype=object)
이러한 방식으로 다양한 통계량을 확인하고 추출할 수 있다.
'Data Science > Pandas' 카테고리의 다른 글
[Pandas] 값 혹은 인덱스를 기준으로 데이터프레임 정렬 (0) | 2024.12.29 |
---|---|
[Pandas] 판다스를 통한 데이터 시각화(data visualization) (0) | 2024.12.28 |
[Pandas] 데이터 정보 확인과 미리보기 및 결측치 확인과 처리 (0) | 2024.12.25 |
[Pandas] 판다스 csv, 엑셀(xlsx, xls) 불러오기 및 저장하기 (0) | 2024.12.25 |
[Pandas] 판다스 소개 및 시리즈(series)와 데이터프레임(dataframe) (0) | 2024.12.25 |