칼럼명으로 데이터 선택하기

데이터의 칼럼이 많은 경우, 특정 칼럼을 기준으로 데이터프레임의 데이터를 추출할 수 있다.

import numpy as np
import pandas as pd
 
flight = pd.read_csv('Clean_Dataset.csv', encoding='cp949')
# 하나의 칼럼만 선택하기
flight[['departure_time']]
departure_time
0Evening
1Early_Morning
2Early_Morning
3Morning
4Morning
......
300148Morning
300149Afternoon
300150Early_Morning
300151Early_Morning
300152Morning

300153 rows × 1 columns

# 여러 개의 칼럼 선택하기
flight[['airline', 'departure_time', 'source_city']]
airlinedeparture_timesource_city
0SpiceJetEveningDelhi
1SpiceJetEarly_MorningDelhi
2AirAsiaEarly_MorningDelhi
3VistaraMorningDelhi
4VistaraMorningDelhi
............
300148VistaraMorningChennai
300149VistaraAfternoonChennai
300150VistaraEarly_MorningChennai
300151VistaraEarly_MorningChennai
300152VistaraMorningChennai

300153 rows × 3 columns

행 범위를 지정하여 데이터 선택하기

데이터프레임에서 슬라이싱(Slicing)을 이용하여 행(row) 범위의 데이터를 선택할 수 있다.

# 슬라이싱을 이용하여 10행부터 20행까지 데이터 가져오기
flight[10:21]
Unnamed: 0airlineflightsource_citydeparture_timestopsarrival_timedestination_cityclassdurationdays_leftprice
1010GO_FIRSTG8-392DelhiAfternoonzeroEveningMumbaiEconomy2.2515954
1111GO_FIRSTG8-338DelhiMorningzeroAfternoonMumbaiEconomy2.3315954
1212Indigo6E-5001DelhiEarly_MorningzeroMorningMumbaiEconomy2.1715955
1313Indigo6E-6202DelhiMorningzeroAfternoonMumbaiEconomy2.1715955
1414Indigo6E-549DelhiAfternoonzeroEveningMumbaiEconomy2.2515955
1515Indigo6E-6278DelhiMorningzeroMorningMumbaiEconomy2.3315955
1616Air_IndiaAI-887DelhiEarly_MorningzeroMorningMumbaiEconomy2.0815955
1717Air_IndiaAI-665DelhiEarly_MorningzeroMorningMumbaiEconomy2.1715955
1818AirAsiaI5-747DelhiEveningoneEarly_MorningMumbaiEconomy12.2515949
1919AirAsiaI5-747DelhiEveningoneMorningMumbaiEconomy16.3315949
2020GO_FIRSTG8-266DelhiEarly_MorningoneEveningMumbaiEconomy11.7515954

특정 행, 열의 범위를 선택하여 데이터를 선택하기

데이터프레임에서 특정 행과 열의 범위를 지정하여 데이터를 선택하는 방법으로 loc과 iloc이 있다.

loc(location)iloc(integer location)
데이터프레임의 행이나 열에 레이블로 접근데이터프레임의 행이나 열에 인덱스 값으로 접근
인덱스 및 칼럼명을 통해 지정하는 방법인덱스를 활용해 지정하는 방법
설정한 인덱스를 그대로 사용0 based index로 사용
# 인덱스 새롭게 지정하기
flight.index = np.arange(100, 300253)
flight
Unnamed: 0airlineflightsource_citydeparture_timestopsarrival_timedestination_cityclassdurationdays_leftprice
1000SpiceJetSG-8709DelhiEveningzeroNightMumbaiEconomy2.1715953
1011SpiceJetSG-8157DelhiEarly_MorningzeroMorningMumbaiEconomy2.3315953
1022AirAsiaI5-764DelhiEarly_MorningzeroEarly_MorningMumbaiEconomy2.1715956
1033VistaraUK-995DelhiMorningzeroAfternoonMumbaiEconomy2.2515955
1044VistaraUK-963DelhiMorningzeroMorningMumbaiEconomy2.3315955
.......................................
300248300148VistaraUK-822ChennaiMorningoneEveningHyderabadBusiness10.084969265
300249300149VistaraUK-826ChennaiAfternoononeNightHyderabadBusiness10.424977105
300250300150VistaraUK-832ChennaiEarly_MorningoneNightHyderabadBusiness13.834979099
300251300151VistaraUK-828ChennaiEarly_MorningoneEveningHyderabadBusiness10.004981585
300252300152VistaraUK-822ChennaiMorningoneEveningHyderabadBusiness10.084981585

300153 rows × 12 columns

# loc 사용하기
flight.loc[[102, 202, 302]]
Unnamed: 0airlineflightsource_citydeparture_timestopsarrival_timedestination_cityclassdurationdays_leftprice
1022AirAsiaI5-764DelhiEarly_MorningzeroEarly_MorningMumbaiEconomy2.1715956
202102VistaraUK-819DelhiAfternoononeNightMumbaiEconomy6.00118923
302202VistaraUK-879DelhiEveningoneNightMumbaiEconomy5.33213673
# iloc 사용하기
flight.iloc[[102, 202, 302]]
Unnamed: 0airlineflightsource_citydeparture_timestopsarrival_timedestination_cityclassdurationdays_leftprice
202102VistaraUK-819DelhiAfternoononeNightMumbaiEconomy6.00118923
302202VistaraUK-879DelhiEveningoneNightMumbaiEconomy5.33213673
402302Indigo6E-2193DelhiAfternoononeNightMumbaiEconomy8.33311326

조건으로 데이터 선택하기

Boolean 연산을 통해 원하는 데이터만 추출할 수도 있다.

# boolean 연산으로 조건을 만족하는 데이터만 추출하기
flight_extract = flight[(flight['price']>12000) & (flight['airline']=='Air_India')]
flight_extract.head()
Unnamed: 0airlineflightsource_citydeparture_timestopsarrival_timedestination_cityclassdurationdays_leftprice
4040Air_IndiaAI-504DelhiNightoneMorningMumbaiEconomy11.00112150
4141Air_IndiaAI-502DelhiAfternoononeMorningMumbaiEconomy19.08112150
4242Air_IndiaAI-506DelhiMorningoneMorningMumbaiEconomy22.83112150
4343Air_IndiaAI-803DelhiEarly_MorningoneMorningMumbaiEconomy26.42112150
4444Air_IndiaAI-479DelhiNightoneAfternoonMumbaiEconomy17.75112215

조건을 자주 변경해야 하거나 조건이 너무 많으면 조건을 변수로 저장하여 사용할 수도 있다.

# 조건을 별도로 지정하여 데이터 추출하기
# 가격 : 12000 초과
price_Tag = flight['price']>12000
 
# 항공사 이름 : Air_India
airline_tag = flight['airline']=='Air_India'
flight_extract2 = flight[price_Tag & airline_tag].head()
flight_extract2
Unnamed: 0airlineflightsource_citydeparture_timestopsarrival_timedestination_cityclassdurationdays_leftprice
4040Air_IndiaAI-504DelhiNightoneMorningMumbaiEconomy11.00112150
4141Air_IndiaAI-502DelhiAfternoononeMorningMumbaiEconomy19.08112150
4242Air_IndiaAI-506DelhiMorningoneMorningMumbaiEconomy22.83112150
4343Air_IndiaAI-803DelhiEarly_MorningoneMorningMumbaiEconomy26.42112150
4444Air_IndiaAI-479DelhiNightoneAfternoonMumbaiEconomy17.75112215