AICE - 기초데이터1

이강민·2023년 7월 31일
0

AICE

목록 보기
2/18
post-thumbnail

기초데이터

필요 데이터 선택하기

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

하나의 속성

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 차이

loc는 설정한 인덱스를 그대로 사용하며 iloc는 based index를 사용
따라서 검색하는 방법에서도 차이를 보인다.

loc
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
iloc
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
profile
NullpointException

0개의 댓글