import pandas as pd
flight = pd.read_csv("https://www.yeinart.co.kr/ai/Clean_Dataset.csv",encoding="cp949")
flight[['departure_time']]
실행결과
departure_time
0 Evening
1 Early_Morning
2 Early_Morning
3 Morning
4 Morning
... ...
300148 Morning
300149 Afternoon
300150 Early_Morning
300151 Early_Morning
300152 Morning
300153 rows × 1 columns
만약 존재하지 않는 컬럼명 일 경우 key error를 return 한다.
import pandas as pd
flight = pd.read_csv("https://www.yeinart.co.kr/ai/Clean_Dataset.csv",encoding="cp949")
flight[['airline','departure_time', 'source_city']]
실행 결과
airline departure_time source_city
0 SpiceJet Evening Delhi
1 SpiceJet Early_Morning Delhi
2 AirAsia Early_Morning Delhi
3 Vistara Morning Delhi
4 Vistara Morning Delhi
... ... ... ...
300148 Vistara Morning Chennai
300149 Vistara Afternoon Chennai
300150 Vistara Early_Morning Chennai
300151 Vistara Early_Morning Chennai
300152 Vistara Morning Chennai
300153 rows × 3 columns
팬시 인덱싱(Fancy Indexing)
특정 인덱스 위치를 지정하는 형태의 리스트를 인덱싱 조건으로 적용하는 것을 팬시 인덱싱이라고 한다.
연속적이지 않고, 비 연속적인 여러 개의 값을 가지고 올 수 있다.
데이터프레임에서 슬라이싱을 이용하여 행 범위의 데이터를 선택 할 수 있다.
데이터프레임 이름[시작 : 끝]
이때 데이터는 끝 전까지 출력함.
port pandas as pd
flight = pd.read_csv("https://www.yeinart.co.kr/ai/Clean_Dataset.csv", encoding="cp949")
# 특정 속성의 값을 변수에 저장함
flight_departure_time = flight[['departure_time']]
# 처음부터 5전까지
flight_departure_time[:5]
실행결과
departure_time
0 Evening
1 Early_Morning
2 Early_Morning
3 Morning
4 Morning
# 10행부터 12행전까지
flight_departure_time[10:12]
실행결과
departure_time
10 Afternoon
11 Morning
# 30000행부터 끝까지
flight_departure_time[30000:]
실행결과
departure_time
30000 Early_Morning
30001 Afternoon
30002 Afternoon
30003 Morning
30004 Night
... ...
300148 Morning
300149 Afternoon
300150 Early_Morning
300151 Early_Morning
300152 Morning
270153 rows × 1 columns
loc는 설정한 인덱스를 그대로 사용하며 iloc는 based index를 사용
따라서 검색하는 방법에서도 차이를 보인다.
import pandas as pd
flight = pd.read_csv("https://www.yeinart.co.kr/ai/Clean_Dataset.csv", encoding="cp949")
# 특정 인덱스의 데이터 찾기
flight.loc[[10,202,302]]
아래와 같이 인덱스 10, 202, 302의 결과를 볼 수 있다.
Unnamed: 0 airline flight source_city departure_time stops arrival_time destination_city class duration days_left price
10 10 GO_FIRST G8-392 Delhi Afternoon zero Evening Mumbai Economy 2.25 1 5954
202 202 Vistara UK-879 Delhi Evening one Night Mumbai Economy 5.33 2 13673
302 302 Indigo 6E-2193 Delhi Afternoon one Night Mumbai Economy 8.33 3 11326
import pandas as pd
import numpy as np
flight = pd.read_csv("https://www.yeinart.co.kr/ai/Clean_Dataset.csv", encoding="cp949")
#numpy의 arnage 함수를 이용하여 시작 인덱스와 종료인덱스를 변경하였다.
flight.index = np.arange(100,300253)
flight.iloc[[2,102,202]]
다음과 같이 변경된 인덱스에 적용되어 결과를 출력한다.
위와 같이 인덱스를 변경 후 loc함수를 사용하면 설정한 인덱스를 그대로 사용하기 때문에 2는 100보다 작으니 인덱스 범위를 벗어나 오류가 발생한다.
Unnamed: 0 airline flight source_city departure_time stops arrival_time destination_city class duration days_left price
102 2 AirAsia I5-764 Delhi Early_Morning zero Early_Morning Mumbai Economy 2.17 1 5956
202 102 Vistara UK-819 Delhi Afternoon one Night Mumbai Economy 6.00 1 18923
302 202 Vistara UK-879 Delhi Evening one Night Mumbai Economy 5.33 2 13673
loc로 검색
flight.loc[[10,202,302], ['airline', 'source_city', 'price']]
airline source_city price
10 GO_FIRST Delhi 5954
202 Vistara Delhi 13673
302 Indigo Delhi 11326
iloc로 검색
flight.index = np.arange(100,300253)
flight.iloc[[10,202,302], [2, 3, 11]]
iloc는 특정 속성을 검색할 때 숫자로 검색한다.
flight source_city price
110 G8-392 Delhi 5954
302 UK-879 Delhi 13673
402 6E-2193 Delhi 11326
Boolean 연산을 통해 원하는 데이터만 추출할 수 있다.
import pandas as pd
import numpy as np
flight = pd.read_csv("https://www.yeinart.co.kr/ai/Clean_Dataset.csv", encoding="cp949")
# price가 12000초과이고, airline이 Air_india인 항목만 추출
flight_extract = flight[(flight['price'] > 12000) & (flight['airline'] == 'Air_India')]
# 특정 속성을 추려서 상위 5개만 검색
flight_extract[['airline','flight','source_city']].head(5)
airline flight source_city
40 Air_India AI-504 Delhi
41 Air_India AI-502 Delhi
42 Air_India AI-506 Delhi
43 Air_India AI-803 Delhi
44 Air_India AI-479 Delhi
# 조건1
flight_price = (flight['price']> 12000)
# 조건2
flight_airline = (flight['airline'] == 'Air_India')
# 조건에 맞는 검색결과를 변수에 저장
flight_check = flight[(flight_price) & (flight_airline)]
# 특정속성의 상위 2개만 출력
flight_check[['airline','flight','source_city']].head(2)
airline flight source_city price
40 Air_India AI-504 Delhi 12150
41 Air_India AI-502 Delhi 12150