2. 데이터프레임 탐색
# 라이브러리 불러오기
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
# 데이터 읽어오기
path = 'csv파일 url'
tip = pd.read_csv(path)
# 확인
tip.head()
예시)
[참고] 익숙해져야 할 기능 목록
- head(): 상위 데이터 확인
- tail(): 하위 데이터 확인
- shape: 데이터프레임 크기
- index: 인덱스 정보 확인
- values: 값 정보 확인
- columns: 열 정보 확인
- dtypes: 열 자료형 확인
- info(): 열에 대한 상세한 정보 확인
- describe(): 기술통계정보 확인
2.1. 앞, 뒤 일부 데이터, 크기 확인
- head(n), tail(n) 메서드를 사용해 앞 뒤 데이터 확인
- 개수를 지정하지 않으면 기본적으로 5개 행이 조회된다.
1) 상위 데이터 확인
# 상위 3개 행 데이터
tip.head(3)
예시)
2) 하위 데이터 확인
# 하위 3개 행 데이터
tip.tail(3)
예시)
3) 크기 확인
- (rows, cols) 값을 갖는 튜플 형태로 확인이 가능합니다.
- 데이터를 분석할 때 처리할 데이터 양을 확인하는 목적으로 많이 사용한다.
# 행 수와 열 수 확인
tip.shape
---
# 출력
# (244, 7)
2.2. 열, 행 정보 보기
1) 인덱스 확인
# 인덱스 확인
tip.index
---
# 출력
# RangeIndex(start=0, stop=244, step=1)
2) 값 확인
- values 속성 조회 결과는 Array(배열)이다.
# 값 확인
tip.values
---
# 출력
# array([[16.99, 1.01, 'Female', ..., 'Sun', 'Dinner', 2],
# [10.34, 1.66, 'Male', ..., 'Sun', 'Dinner', 3],
# [21.01, 3.5, 'Male', ..., 'Sun', 'Dinner', 3],
# ...,
# [22.67, 2.0, 'Male', ..., 'Sat', 'Dinner', 2],
# [17.82, 1.75, 'Male', ..., 'Sat', 'Dinner', 2],
# [18.78, 3.0, 'Female', ..., 'Thur', 'Dinner', 2]], dtype=object)
※ pandas 에서의 자료형 object는 str(문자열)이다.
3) 열 확인
# 열 확인
tip.columns
---
# 출력
# Index(['total_bill', 'tip', 'sex', 'smoker', 'day', 'time', 'size'], dtype='object')
4) 자료형 확인
- int64: 정수형 데이터(int)
- float64: 실수형 데이터(float)
- object: 문자열 데이터(string)
# 열 자료형 확인
tip.dtypes
---
# 출력
# total_bill float64
# tip float64
# sex object
# smoker object
# day object
# time object
# size int64
# dtype: object
# 열 자료형, 값 개수 확인
tip.info() # 자주 사용되니 기억할 것
5) 기술 통계 확인
- 기술 통계(Descriptive Statistics): 데이터의 정리, 요약, 해석, 표현 등을 통해 데이터가 갖는 특성을 나타내는 정보
- describe() 메서드는 데이터에 대한 많은 정보를 제공하는 매우 중요한 메서드
- 개수(count), 평균(mean), 표준편차(std), 최솟값(min), 사분위값(25%, 50%, 75%), 최댓값(max)을 표시함
# 기술 통계
tip.describe()
# tip.describe(include='all') # 이렇게 하면 결측치를 포함한 모든 값을 확인
예시)
# 전치행렬로 표시(행과 열의 위치 바뀜)
tip.describe().T
예시)
- 일부 열에 대해서만 기술 통계를 확인할 수 있다.
# 기술 통계
tip[['tip']].describe()
예시)
2.3. 정렬해서 보기
- 인덱스를 기준으로 정렬하는 방법과 특정 열을 기준으로 정렬하는 방법이 있습니다.
- sort_values() 메서드로 특정 열을 기준으로 정렬합니다.
- ascending 옵션을 설정해 오름차순, 내림차순을 설정할 수 있습니다.
- ascending=True: 오름차순 정렬(기본값)
- ascending=False: 내림차순 정렬
# 단일 열 정렬
tip.sort_values('total_bill').head(5)
예시)
# 복합 열('total_bill', 'tip') 정렬
## total_bill은 내림차순, tip은 오름차순으로 정렬
tip.sort_values(['total_bill', 'tip'], ascending=[False, True])
예시)
2.4. 기본 집계
2.4.1. 고윳값 확인
- 범주형 열(열이 가진 값이 일정한 값인 경우, 성별, 등급 등)인지 확인할 때 사용
1) 고윳값 확인
- unique() 메서드로 고윳값을 확인하며, 결괏값은 배열 형태가 된다.
# day 열 고윳값 확인
tip['day'].unique() # 자료 타입: 시리즈
# tip[['day']] # 이렇게 하면 데이터프레임 형태로 볼 수 있다.
---
# 출력
# array(['Sun', 'Sat', 'Thur', 'Fri'], dtype=object)
2) 고윳값과 개수 확인
- value_counts() 메서드로 고윳값과 그 개수를 확인하며, 결괏값은 시리즈 형태가 된다.
- dropna 옵션을 생략하거나 dropna=True로 지정하면 NaN 값은 대상에서 제외한다.
# day 열 고윳값 개수 확인
tip['day'].value_counts().plot(kind='bar')
# 여기서 Sat이 최빈값이 된다.
예시)
# smoker 열 고윳값 개수 확인
tip['smoker'].value_counts()
---
# 출력
# smoker
# No 151
# Yes 93
# Name: count, dtype: int64
# 비율 확인하는 법
tip['smoker'].value_counts(normalize=True)
---
# 출력
# smoker
# No 0.618852
# Yes 0.381148
# Name: proportion, dtype: float64
# normalize 사용하지 않고 확인하는 법
tip['smoker'].value_counts() / len(tip)
---
# 출력
# smoker
# No 0.618852
# Yes 0.381148
# Name: count, dtype: float64
2.4.2. 최빈값 확인
- 최빈값: 가장 많이 관측되는 수, 즉 주어진 값 중에서 가장 자주 나오는 값
- 예) {1, 3, 6, 6, 6, 7, 7, 12, 12, 17}의 최빈값은 6
- 최빈값은 산술 평균과 달리 유일한 값이 아닐 수도 있다.
- mode() 메서드로 최빈값을 확인할 수 있다.
- 최빈값이 여렷인 경우 행으로 구분되어 표시된다.
# day 열 최빈값 확인
tip['day'].mode()
---
# 출력
# 0 Sat
# Name: day, dtype: object
# 최빈값만 얻기
tip['day'].mode()[0]
---
# 출력
# 'Sat'
2.4.3. 기본 통계 메서드 사용
# 리스트 만들기
stock = [[94500, 92100, 92200, 92300],
[96500, 93200, 95900, 94300],
[93400, 91900, 93400, 92100],
[94200, 92100, 94100, 92400],
[94500, 92500, 94300, 92600]]
dates = ['2019-02-15', '2019-02-16', '2019-02-17', '2019-02-18', '2019-02-19']
names = ['High', 'Low', 'Open', 'Close']
# 데이터프레임 만들기
df = pd.DataFrame(stock, index=dates, columns=names)
# 확인
df.head()
- df.sum(): df.sum(axis=0) 과 같으며 전체 열 기준으로 합을 집계한다.
- 전체 행 기준으로 집계를 하려면 df.sum(axis=1) 형태로 axis=1을 지정한다.
# 전체 열 기준 합(행 더하기)
df.sum(axis=0) # 대부분 열 기준 합을 사용하게 될 것이다.
---
# 출력
# High 473100
# Low 461800
# Open 469900
# Close 463700
# dtype: int64
# 전체 행 기준 합(열 더하기)
df.sum(axis=1) # 거의 사용할 일 없다.
---
# 출력
# 2019-02-15 371100
# 2019-02-16 379900
# 2019-02-17 370800
# 2019-02-18 372800
# 2019-02-19 373900
# dtype: int64
- tip 데이터프레임에 대한 집계
# 전체 열 기준 합
tip.sum(numeric_only=True, axis=0) # numeric_only: 숫자값만 보고싶을때 사용
# 또는
# tip.sum()
---
# 출력
# total_bill 4827.77
# tip 731.58
# size 627.00
# dtype: float64
# total_bill 열 합계 조회
tip['total_bill'].sum()
---
# 출력
# 4827.77
# tip 열 최댓값 조회
tip['tip'].max()
---
# 출력
# 10.0
# total_bill, tip 열 평균값 확인
tip[['total_bill', 'tip']].mean()
---
# 출력
# total_bill 19.785943
# tip 2.998279
# dtype: float64
# total_bill, tip 열 중앙값 확인
tip[['total_bill', 'tip']].median()
---
# 출력
# total_bill 17.795
# tip 2.900
# dtype: float64
'에이블스쿨 6기 DX 트랙 > 일일 복습' 카테고리의 다른 글
데이터 분석 - 이변량: 범주 vs 숫자 (0) | 2024.10.04 |
---|---|
DAY 08. 데이터프레임 조회 (0) | 2024.09.20 |
DAY 07. 데이터프레임 생성 (3) | 2024.09.18 |
DAY 07. 넘파이 기초 (1) | 2024.09.18 |
DAY 05. 함수 (1) | 2024.09.12 |