데이터 살펴보기
데이터프레임 형태로 만들어진 전체 데이터를 먼저 살펴보자.
# 넘파이(Numpy), 판다스(Pandas) 불러오기
import pandas as pd
import numpy as np
# read_csv 함수로 "Clean_Dataset.csv" 불러오기
flight = pd.read_csv('./Clean_Dataset.csv', encoding = "cp949")
flight| Unnamed: 0 | airline | flight | source_city | departure_time | stops | arrival_time | destination_city | class | duration | days_left | price | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 0 | SpiceJet | SG-8709 | Delhi | Evening | zero | Night | Mumbai | Economy | 2.17 | 1 | 5953 |
| 1 | 1 | SpiceJet | SG-8157 | Delhi | Early_Morning | zero | Morning | Mumbai | Economy | 2.33 | 1 | 5953 |
| 2 | 2 | AirAsia | I5-764 | Delhi | Early_Morning | zero | Early_Morning | Mumbai | Economy | 2.17 | 1 | 5956 |
| 3 | 3 | Vistara | UK-995 | Delhi | Morning | zero | Afternoon | Mumbai | Economy | 2.25 | 1 | 5955 |
| 4 | 4 | Vistara | UK-963 | Delhi | Morning | zero | Morning | Mumbai | Economy | 2.33 | 1 | 5955 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 300148 | 300148 | Vistara | UK-822 | Chennai | Morning | one | Evening | Hyderabad | Business | 10.08 | 49 | 69265 |
| 300149 | 300149 | Vistara | UK-826 | Chennai | Afternoon | one | Night | Hyderabad | Business | 10.42 | 49 | 77105 |
| 300150 | 300150 | Vistara | UK-832 | Chennai | Early_Morning | one | Night | Hyderabad | Business | 13.83 | 49 | 79099 |
| 300151 | 300151 | Vistara | UK-828 | Chennai | Early_Morning | one | Evening | Hyderabad | Business | 10.00 | 49 | 81585 |
| 300152 | 300152 | Vistara | UK-822 | Chennai | Morning | one | Evening | Hyderabad | Business | 10.08 | 49 | 81585 |
300153 rows × 12 columns
각 항목이 의미하는 내용은 다음과 같다.
- 칼럼(Column): 열 레이블에 대한 정보를 보유한다.
- 인덱스(Index): 행(Row) 인덱스에 대한 정보를 보유한다.
- 생성된 데이터프레임의 행과 열의 수를 표시한다.
데이터프레임 이름만 실행할 경우 전체 데이터가 출력되지만, head, tail 메소드를 활용하면 데이터 일부만 확인할 수도 있다.
# head 확인하기
flight.head()| Unnamed: 0 | airline | flight | source_city | departure_time | stops | arrival_time | destination_city | class | duration | days_left | price | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 0 | SpiceJet | SG-8709 | Delhi | Evening | zero | Night | Mumbai | Economy | 2.17 | 1 | 5953 |
| 1 | 1 | SpiceJet | SG-8157 | Delhi | Early_Morning | zero | Morning | Mumbai | Economy | 2.33 | 1 | 5953 |
| 2 | 2 | AirAsia | I5-764 | Delhi | Early_Morning | zero | Early_Morning | Mumbai | Economy | 2.17 | 1 | 5956 |
| 3 | 3 | Vistara | UK-995 | Delhi | Morning | zero | Afternoon | Mumbai | Economy | 2.25 | 1 | 5955 |
| 4 | 4 | Vistara | UK-963 | Delhi | Morning | zero | Morning | Mumbai | Economy | 2.33 | 1 | 5955 |
# tail 확인하기
flight.tail()| Unnamed: 0 | airline | flight | source_city | departure_time | stops | arrival_time | destination_city | class | duration | days_left | price | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 300148 | 300148 | Vistara | UK-822 | Chennai | Morning | one | Evening | Hyderabad | Business | 10.08 | 49 | 69265 |
| 300149 | 300149 | Vistara | UK-826 | Chennai | Afternoon | one | Night | Hyderabad | Business | 10.42 | 49 | 77105 |
| 300150 | 300150 | Vistara | UK-832 | Chennai | Early_Morning | one | Night | Hyderabad | Business | 13.83 | 49 | 79099 |
| 300151 | 300151 | Vistara | UK-828 | Chennai | Early_Morning | one | Evening | Hyderabad | Business | 10.00 | 49 | 81585 |
| 300152 | 300152 | Vistara | UK-822 | Chennai | Morning | one | Evening | Hyderabad | Business | 10.08 | 49 | 81585 |
head와 tail 값을 별도로 지정하지 않으면 5줄을 보여주고, 값을 지정하면 지정한 행의 수만큼 보여준다.
# head로 상위 10개의 데이터 확인하기
flight.head(n=10)| Unnamed: 0 | airline | flight | source_city | departure_time | stops | arrival_time | destination_city | class | duration | days_left | price | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 0 | SpiceJet | SG-8709 | Delhi | Evening | zero | Night | Mumbai | Economy | 2.17 | 1 | 5953 |
| 1 | 1 | SpiceJet | SG-8157 | Delhi | Early_Morning | zero | Morning | Mumbai | Economy | 2.33 | 1 | 5953 |
| 2 | 2 | AirAsia | I5-764 | Delhi | Early_Morning | zero | Early_Morning | Mumbai | Economy | 2.17 | 1 | 5956 |
| 3 | 3 | Vistara | UK-995 | Delhi | Morning | zero | Afternoon | Mumbai | Economy | 2.25 | 1 | 5955 |
| 4 | 4 | Vistara | UK-963 | Delhi | Morning | zero | Morning | Mumbai | Economy | 2.33 | 1 | 5955 |
| 5 | 5 | Vistara | UK-945 | Delhi | Morning | zero | Afternoon | Mumbai | Economy | 2.33 | 1 | 5955 |
| 6 | 6 | Vistara | UK-927 | Delhi | Morning | zero | Morning | Mumbai | Economy | 2.08 | 1 | 6060 |
| 7 | 7 | Vistara | UK-951 | Delhi | Afternoon | zero | Evening | Mumbai | Economy | 2.17 | 1 | 6060 |
| 8 | 8 | GO_FIRST | G8-334 | Delhi | Early_Morning | zero | Morning | Mumbai | Economy | 2.17 | 1 | 5954 |
| 9 | 9 | GO_FIRST | G8-336 | Delhi | Afternoon | zero | Evening | Mumbai | Economy | 2.25 | 1 | 5954 |
데이터프레임의 기본 정보 확인하기
판다스는 데이터 분석을 위한 라이브러리로 기본적인 통계 정보를 제공한다.
shape의 속성 변환값은 튜플로 존재하며, 행(row)과 열(column)의 개수를 튜플 형태로 변환해준다.
# shape 확인하기
flight.shape(300153, 12)
columns는 데이터프레임을 구성하는 칼럼명을 확인할 때 사용한다.
# columns 확인하기
flight.columnsIndex(['Unnamed: 0', 'airline', 'flight', 'source_city', 'departure_time',
'stops', 'arrival_time', 'destination_city', 'class', 'duration',
'days_left', 'price'],
dtype='str')
info는 데이터 유형, 각 칼럼의 데이터 수 등을 한 번에 볼 수 있어 데이터의 구성이나 결측치 유무를 확인할 수 있다.
# info 확인하기
flight.info()<class 'pandas.DataFrame'>
RangeIndex: 300153 entries, 0 to 300152
Data columns (total 12 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Unnamed: 0 300153 non-null int64
1 airline 300153 non-null str
2 flight 300153 non-null str
3 source_city 300153 non-null str
4 departure_time 300153 non-null str
5 stops 300153 non-null str
6 arrival_time 300153 non-null str
7 destination_city 300153 non-null str
8 class 300153 non-null str
9 duration 300153 non-null float64
10 days_left 300153 non-null int64
11 price 300153 non-null int64
dtypes: float64(1), int64(3), str(8)
memory usage: 27.5 MB
describe는 데이터 칼럼별 요약 통계량을 나타낸다. float나 int처럼 숫자형 데이터의 통계치를 확인하는 데 유용하다.(count: 데이터 개수, mean: 평균값, std: 표준편차, min: 최솟값, max: 최댓값, 4분위값)
# describe 확인하기
flight.describe()| Unnamed: 0 | duration | days_left | price | |
|---|---|---|---|---|
| count | 300153.000000 | 300153.000000 | 300153.000000 | 300153.000000 |
| mean | 150076.000000 | 12.221021 | 26.004751 | 20889.660523 |
| std | 86646.852011 | 7.191997 | 13.561004 | 22697.767366 |
| min | 0.000000 | 0.830000 | 1.000000 | 1105.000000 |
| 25% | 75038.000000 | 6.830000 | 15.000000 | 4783.000000 |
| 50% | 150076.000000 | 11.250000 | 26.000000 | 7425.000000 |
| 75% | 225114.000000 | 16.170000 | 38.000000 | 42521.000000 |
| max | 300152.000000 | 49.830000 | 49.000000 | 123071.000000 |
info 함수에서 확인한 데이터 유형 중 float와 int형인 4개의 칼럼만 describe에서 값이 나온 것을 확인할 수 있다.
범주형 데이터 정보를 확인하려면 all로 지정한다.
flight.describe(indlude='all)
dtype는 데이터프레임이 가지는 데이터 형태의 종류를 나타낸다.
flight.dtypesUnnamed: 0 int64
airline str
flight str
source_city str
departure_time str
stops str
arrival_time str
destination_city str
class str
duration float64
days_left int64
price int64
dtype: object
value_counts는 지정된 칼럼의 값(value)에 대한 발생 횟수를 나타낸다.
# value_counts 확인하기
flight['source_city'].value_counts()source_city
Delhi 61343
Mumbai 60896
Bangalore 52061
Kolkata 46347
Hyderabad 40806
Chennai 38700
Name: count, dtype: int64