포스팅 목차
[변수와 관측치 선택] 2. 관측치 선택( WHERE, IF, SELECT IF )
1. Proc SQL
- where 문을 이용하여 해당 관측치 선택;
SAS Programming |
proc sql;
create table mydata2_1 as
select *
from BACK.mydata
where gender = 'm';
select * from mydata2_1;
quit;
Results |
id workshop gender q1 q2 q3 q4
--------------------------------------------------------------
5 1 m 4 5 2 4
6 2 m 5 4 5 5
7 1 m 5 3 4 4
8 2 m 4 5 5 5
SAS Programming |
proc sql;
create table mydata2_2 as
select *
from BACK.mydata
where gender = 'm' and q4=5;
select * from mydata2_2;
quit;
Results |
id workshop gender q1 q2 q3 q4
--------------------------------------------------------------
6 2 m 5 4 5 5
8 2 m 4 5 5 5
2. SAS Programming
- 관측치 선택을 위한 SAS 프로그램.
- Where 구문을 이용한 관측치 선택;
SAS Programming |
PROC PRINT data=BACK.mydata;
WHERE gender='m';
RUN;
Results |
OBS id workshop gender q1 q2 q3 q4
5 5 1 m 4 5 2 4
6 6 2 m 5 4 5 5
7 7 1 m 5 3 4 4
8 8 2 m 4 5 5 5
SAS Programming |
PROC PRINT data=BACK.mydata;
WHERE gender="m" & q4=5;
RUN;
Results |
OBS id workshop gender q1 q2 q3 q4
6 6 2 m 5 4 5 5
8 8 2 m 4 5 5 5
- Where 구문을 이용한 데이터 생성;
SAS Programming |
DATA BACK.males;
SET BACK.mydata;
WHERE gender="m";
RUN;
PROC PRINT;RUN;
Results |
OBS id workshop gender q1 q2 q3 q4
1 5 1 m 4 5 2 4
2 6 2 m 5 4 5 5
3 7 1 m 5 3 4 4
4 8 2 m 4 5 5 5
SAS Programming |
DATA BACK.females;
SET BACK.mydata;
WHERE gender="f";
RUN;
PROC PRINT;
RUN;
Results |
OBS id workshop gender q1 q2 q3 q4
1 1 1 f 1 1 5 1
2 2 2 f 2 1 4 1
3 3 1 f 2 2 4 3
4 4 2 f 3 1 . 3
3. SPSS
- 관측치 선택을 위한 SPSS 프로그램.
SPSS Programming |
TEMPORARY.
SELECT IF(gender = "m").
LIST.
EXECUTE.
TEMPORARY.
SELECT IF(gender = "m" & q2 >= 5).
LIST.
EXECUTE.
TEMPORARY.
SELECT IF(gender = "m").
SAVE OUTFILE='C:\males.sav'.
EXECUTE .
TEMPORARY.
SELECT IF(gender = "f").
SAVE OUTFILE='C:\females.sav'.
EXECUTE .
4. R Programming (R-PROJECT)
R Programming |
from rpy2.robjects import r
%load_ext rpy2.ipython
Results |
The rpy2.ipython extension is already loaded. To reload it, use:
%reload_ext rpy2.ipython
- 관측치 선택을 위한 R-PROJECT 프로그램.
R Programming |
%%R
library(tidyverse)
load(file="c://work/data/mydata.Rdata")
withmooc = mydata
attach(withmooc) # mydata를 기본 데이터 세트로 지정.
withmooc
Results |
workshop gender q1 q2 q3 q4
1 1 f 1 1 5 1
2 2 f 2 1 4 1
3 1 f 2 2 4 3
4 2 f 3 1 NA 3
5 1 m 4 5 2 4
6 2 m 5 4 5 5
7 1 m 5 3 4 4
8 2 m 4 5 5 5
1) 인덱스를 사용하여 관측치 선택
- 모든 행(관측치)을 출력
R Programming |
%%R
withmooc[1:8, ]
Results |
workshop gender q1 q2 q3 q4
1 1 f 1 1 5 1
2 2 f 2 1 4 1
3 1 f 2 2 4 3
4 2 f 3 1 NA 3
5 1 m 4 5 2 4
6 2 m 5 4 5 5
7 1 m 5 3 4 4
8 2 m 4 5 5 5
- 5번째 행에서 8번째 행 사이에 위치하고 있는 남성 관측치 선택:
R Programming |
%%R
withmooc[5:8, ]
Results |
workshop gender q1 q2 q3 q4
5 1 m 4 5 2 4
6 2 m 5 4 5 5
7 1 m 5 3 4 4
8 2 m 4 5 5 5
- 음수(-) 기호는 행을 제외 시 이용된다.
- Isolate 함수는 minus를 적용하기 위해 이용된다. 1행부터 4행을 제외.
- -1:4는 -1에서 4의 행을 지정(-1,0,1,2,3,4)
R Programming |
%%R
withmooc[-I(1:4), ]
Results |
workshop gender q1 q2 q3 q4
5 1 m 4 5 2 4
6 2 m 5 4 5 5
7 1 m 5 3 4 4
8 2 m 4 5 5 5
- Which 함수는 True 조건에 해당하는 인덱스 Number를 반환한다. 남성인 관측치의 인덱스 선택.
R Programming |
%%R
which(gender=="m")
Results |
[1] 5 6 7 8
- 인덱스 Number를 이용하여 관측치 선택. 5행에서 8행까지 선택.
R Programming |
%%R
withmooc[which(gender=="m"), ]
Results |
workshop gender q1 q2 q3 q4
5 1 m 4 5 2 4
6 2 m 5 4 5 5
7 1 m 5 3 4 4
8 2 m 4 5 5 5
- 복잡한 로직을 적용하여 관측치를 선택할 수 있다.
- 성별이 남성이면서 변수 q4의 관측치가 5인 관측치 선택.
R Programming |
%%R
withmooc[ which(gender=="m" & q4==5), ]
Results |
workshop gender q1 q2 q3 q4
6 2 m 5 4 5 5
8 2 m 4 5 5 5
- 원 데이터 프레임에서 외부로 저장할 인덱스를 수치 벡터로 저장할 수 있다.
- 성별이 남자이면서 q4의 값이 5인 행을 선택.
R Programming |
%%R
happyGuys <- which(gender=="m" & q4==5)
print(happyGuys)
Results |
[1] 6 8
- 관측치를 선택하기 위해 happyGuys벡터를 이용.
- 비록 happyGuys가 변수명이지만, 따옴표를 이용하지 않는다.
R Programming |
%%R
withmooc[happyGuys, ]
Results |
workshop gender q1 q2 q3 q4
6 2 m 5 4 5 5
8 2 m 4 5 5 5
2) 논리 벡터에 의해 관측치 선택
- 논리적인 비교는 원 데이터 프레임과 동등한 Length를 가진 논리 벡터를 생성한다.
- 8개 변수에 대한 논리 벡터를 생성. 성별이 남성인 논리 벡터 생성.
R Programming |
%%R
print(withmooc$gender=="m")
Results |
[1] FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE
- 행 위치에 논리 벡터를 넣어서 남성에 대한 관측치를 선택한다.
R Programming |
%%R
withmooc[withmooc$gender=="m", ]
Results |
workshop gender q1 q2 q3 q4
5 1 m 4 5 2 4
6 2 m 5 4 5 5
7 1 m 5 3 4 4
8 2 m 4 5 5 5
- mydata를 attach하면, 남성을 선택하기 위해 gender의 접두사로 mydata$를 사용하지 않아도 된다.
R Programming |
%%R
withmooc[gender=="m", ]
Results |
workshop gender q1 q2 q3 q4
5 1 m 4 5 2 4
6 2 m 5 4 5 5
7 1 m 5 3 4 4
8 2 m 4 5 5 5
- 복잡한 로직을 적용할수 있다.
- attach 함수의 사용을 통하여 which함수 도움 없이 바로 조건 추출.
- 남성이면서 변수 q4가 5인 관측치 선택.
R Programming |
%%R
withmooc[ gender=="m" & q4==5, ]
Results |
workshop gender q1 q2 q3 q4
6 2 m 5 4 5 5
8 2 m 4 5 5 5
- 로직이 복잡할 때, 데이터 세트에 로직 벡터를 저장하기를 원할 것이다.
- 조건에 대한 변수를 생성(TRUE / FALSE).
R Programming |
%%R
withmooc$happyGuys <- (gender=="m" & q4==5)
print(withmooc) # withmooc 데이터 세트에 추가된 변수(happyGuys)를 확인.
Results |
workshop gender q1 q2 q3 q4 happyGuys
1 1 f 1 1 5 1 FALSE
2 2 f 2 1 4 1 FALSE
3 1 f 2 2 4 3 FALSE
4 2 f 3 1 NA 3 FALSE
5 1 m 4 5 2 4 FALSE
6 2 m 5 4 5 5 TRUE
7 1 m 5 3 4 4 FALSE
8 2 m 4 5 5 5 TRUE
- 관측치 선택을 위해서 저장된 논리 벡터를 이용할 수 있다.
- 관측치 선택을 위해 저장된 논리 벡터를 이용할 때, 인용부호에 넣지 않는다.
- 파일이 attach 될 때에 happyGuys가 존재하지 않았기 때문에, 완전한 형태의 mydata$happyGusy를 이용해야 한다.
R Programming |
%%R
withmooc[withmooc$happyGuys, ]
Results |
workshop gender q1 q2 q3 q4 happyGuys
6 2 m 5 4 5 5 TRUE
8 2 m 4 5 5 5 TRUE
3) 행 이름에 의해 관측치 선택
- 행 이름을 출력한다.
- 값들이 인용부호에 있기 때문에, 문자 벡터를 생성한다.
R Programming |
%%R
row.names(withmooc)
Results |
[1] "1" "2" "3" "4" "5" "6" "7" "8"
- 행 이름을 사용하여서 행을 선택할 수 있다.
- 행 이름에 의해 처음 4개의 관측치를 선택한다.
R Programming |
%%R
withmooc[ c("1","2","3","4"), ]
Results |
workshop gender q1 q2 q3 q4 happyGuys
1 1 f 1 1 5 1 FALSE
2 2 f 2 1 4 1 FALSE
3 1 f 2 2 4 3 FALSE
4 2 f 3 1 NA 3 FALSE
- 행 이름으로써 Number를 가지는 것은 좀 불분명하다.
- 좀 더 확실한 행 이름을 지정한다.
R Programming |
%%R
mynames <- c("Ann","Cary","Sue","Carla",
"Bob","Scott","Mike","Rich")
print(mynames)
Results |
[1] "Ann" "Cary" "Sue" "Carla" "Bob" "Scott" "Mike" "Rich"
- mydata에서 row.names함수를 이용하여 새로운 행 이름을 저장.
R Programming |
%%R
row.names(withmooc) <- mynames
withmooc
Results |
workshop gender q1 q2 q3 q4 happyGuys
Ann 1 f 1 1 5 1 FALSE
Cary 2 f 2 1 4 1 FALSE
Sue 1 f 2 2 4 3 FALSE
Carla 2 f 3 1 NA 3 FALSE
Bob 1 m 4 5 2 4 FALSE
Scott 2 m 5 4 5 5 TRUE
Mike 1 m 5 3 4 4 FALSE
Rich 2 m 4 5 5 5 TRUE
- 행 이름으로 관측치를 선택. 이 방법이 더 확실하다.
R Programming |
%%R
withmooc[ c("Ann","Cary","Sue","Carla"), ]
Results |
workshop gender q1 q2 q3 q4 happyGuys
Ann 1 f 1 1 5 1 FALSE
Cary 2 f 2 1 4 1 FALSE
Sue 1 f 2 2 4 3 FALSE
Carla 2 f 3 1 NA 3 FALSE
- 만약 자주 이용하는 행 이름의 세트를 가졌다면, 그것을 문자 벡터로 저장하여 이용 가능.
R Programming |
%%R
myGals <- c("Ann","Cary","Sue","Carla")
print(myGals)
Results |
[1] "Ann" "Cary" "Sue" "Carla"
- 행을 선택 시에 myGals를 이용한다. 이 방법에 사용 시 인용부호에 넣을 필요 없다.
R Programming |
%%R
withmooc[ myGals, ]
Results |
workshop gender q1 q2 q3 q4 happyGuys
Ann 1 f 1 1 5 1 FALSE
Cary 2 f 2 1 4 1 FALSE
Sue 1 f 2 2 4 3 FALSE
Carla 2 f 3 1 NA 3 FALSE
- 그룹이 많은 값을 가졌다고 가정하면, 그 값의 리스트에 의해 단지 몇 개의 선택하기 원할 때 사용.
R Programming |
%%R
myGals <- row.names(withmooc)=="Ann" |
row.names(withmooc)=="Cary" |
row.names(withmooc)=="Sue" |
row.names(withmooc)=="Carla"
print(myGals)
Results |
[1] TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE
- %in% 함수는 Or함수보다 더 간단하다.
R Programming |
%%R
print( row.names(withmooc) %in% c("Ann","Cary","Sue","Carla") )
Results |
[1] TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE
- 인덱스 값을 취하기 위해서 “which” 함수를 이용할 수 있다.
- 행 이름이 Bob과 Rich의 인덱스 값을 찾는다.
R Programming |
%%R
firstMale <- which( row.names(withmooc)=="Bob" )
print(firstMale)
lastMale <- which( row.names(withmooc)=="Rich" )
print(lastMale)
Results |
[1] 5
[1] 8
- 행과 열을 동시에 선택하는 방법.
- 5번에서 8번째 행과 변수명이 q1과 q4의 열인 값을 선택.
R Programming |
%%R
withmooc[firstMale:lastMale, c("q1","q2","q3","q4")]
Results |
q1 q2 q3 q4
Bob 4 5 2 4
Scott 5 4 5 5
Mike 5 3 4 4
Rich 4 5 5 5
4) 선택된 관측치로 새로운 데이터 프래임 선택.
- 선택된 관측치를 새로운 데이터 프레임으로 저장.
- 남성을 선택하여 데이터 프레임 생성.
R Programming |
%%R
myMales <- withmooc[withmooc$gender=="m", ]
print(myMales)
Results |
workshop gender q1 q2 q3 q4 happyGuys
Bob 1 m 4 5 2 4 FALSE
Scott 2 m 5 4 5 5 TRUE
Mike 1 m 5 3 4 4 FALSE
Rich 2 m 4 5 5 5 TRUE
- 여성을 선택하여 데이터 프레임 생성.
R Programming |
%%R
myFemales <- withmooc[withmooc$gender=="f", ]
print(myFemales)
Results |
workshop gender q1 q2 q3 q4 happyGuys
Ann 1 f 1 1 5 1 FALSE
Cary 2 f 2 1 4 1 FALSE
Sue 1 f 2 2 4 3 FALSE
Carla 2 f 3 1 NA 3 FALSE
5. R - Tidyverse
R Programming |
from rpy2.robjects import r
%load_ext rpy2.ipython
Results |
The rpy2.ipython extension is already loaded. To reload it, use:
%reload_ext rpy2.ipython
R Programming |
%%R
library(tidyverse)
library(psych)
mydata <- read_csv("C:/work/data/mydata.csv",
col_types = cols( id = col_double(),
workshop = col_character(),
gender = col_character(),
q1 = col_double(),
q2 = col_double(),
q3 = col_double(),
q4 = col_double()
)
)
mydata <- mydata %>% select(-id)
withmooc = mydata
attach(withmooc) # mydata를 기본 데이터 세트로 지정.
withmooc
Results |
# A tibble: 8 x 6
workshop gender q1 q2 q3 q4
1 1 f 1 1 5 1
2 2 f 2 1 4 1
3 1 f 2 2 4 3
4 2 f 3 1 NA 3
5 1 m 4 5 2 4
6 2 m 5 4 5 5
7 1 m 5 3 4 4
8 2 m 4 5 5 5
1) 인덱스에 의해 관측치 선택
R Programming |
%%R
withmooc[ myGals, ]
Results |
# A tibble: 4 x 6
workshop gender q1 q2 q3 q4
1 1 f 1 1 5 1
2 2 f 2 1 4 1
3 1 f 2 2 4 3
4 2 f 3 1 NA 3
- 모든 행(관측치)을 출력.
R Programming |
%%R
withmooc %>%
slice()
Results |
# A tibble: 8 x 6
workshop gender q1 q2 q3 q4
1 1 f 1 1 5 1
2 2 f 2 1 4 1
3 1 f 2 2 4 3
4 2 f 3 1 NA 3
5 1 m 4 5 2 4
6 2 m 5 4 5 5
7 1 m 5 3 4 4
8 2 m 4 5 5 5
- 5행에서 8행의 남성 관측치 선택:
R Programming |
%%R
withmooc %>%
slice(5:8)
Results |
# A tibble: 4 x 6
workshop gender q1 q2 q3 q4
1 1 m 4 5 2 4
2 2 m 5 4 5 5
3 1 m 5 3 4 4
4 2 m 4 5 5 5
- 음수는 행을 제외 시 이용된다.
- Isolate 함수는 minus를 적용하기 위해 이용된다. 1행부터 4행을 제외.
- -1:4는 -1에서 4의 행을 지정(-1,0,1,2,3,4)
R Programming |
%%R
withmooc %>%
slice(-(5:8))
Results |
# A tibble: 4 x 6
workshop gender q1 q2 q3 q4
1 1 f 1 1 5 1
2 2 f 2 1 4 1
3 1 f 2 2 4 3
4 2 f 3 1 NA 3
- Selection는 True 조건의 인덱스 Number를 발견할 수 있다. 남성인 관측치의 인덱스 선택.
R Programming |
%%R
withmooc$gender == 'm'
Results |
[1] FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE
- 인덱스 Number를 이용하여 관측치 선택. 5행에서 8행까지 선택.
R Programming |
%%R
withmooc %>%
filter(gender == 'm')
Results |
# A tibble: 4 x 6
workshop gender q1 q2 q3 q4
1 1 m 4 5 2 4
2 2 m 5 4 5 5
3 1 m 5 3 4 4
4 2 m 4 5 5 5
- 복잡한 로직을 적용하여 관측치를 선택할 수 있다.
- 성별이 남성이면서 변수 q4의 관측치가 5인 관측치 선택.
R Programming |
%%R
withmooc %>%
filter(gender=="m" & q4 == "5")
Results |
# A tibble: 2 x 6
workshop gender q1 q2 q3 q4
1 2 m 5 4 5 5
2 2 m 4 5 5 5
- 원 데이터 프레임에서 외부로 저장할 인덱스를 수치 벡터로 저장할 수 있다.
- 성별이 남자이면서 q4의 값이 5인 행을 선택.
R Programming |
%%R
happyGuys <- which(withmooc$gender=="m" & withmooc$q4==5)
print(happyGuys)
withmooc %>%
slice(happyGuys)
Results |
[1] 6 8
# A tibble: 2 x 6
workshop gender q1 q2 q3 q4
1 2 m 5 4 5 5
2 2 m 4 5 5 5
2) 논리 벡터에 의해 관측치 선택
- 논리적인 비교는 원 데이터 프레임과 동등한 Length를 가진 논리 벡터를 생성한다.
- 8개 변수에 대한 논리 벡터를 생성. 성별이 남성인 논리 벡터 생성.
R Programming |
%%R
print(withmooc$gender=="m")
mydata %>%
filter(withmooc$gender=="m")
Results |
[1] FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE
# A tibble: 4 x 6
workshop gender q1 q2 q3 q4
1 1 m 4 5 2 4
2 2 m 5 4 5 5
3 1 m 5 3 4 4
4 2 m 4 5 5 5
- 복잡한 로직을 적용할 수 있다.
- attach 함수의 사용을 통하여 which함수 도움 없이 바로 조건 추출.
- 남성이면서 변수 q4가 5인 관측치 선택.
R Programming |
%%R
withmooc %>%
filter(withmooc$gender=="m" & withmooc$q4==5)
Results |
# A tibble: 2 x 6
workshop gender q1 q2 q3 q4
1 2 m 5 4 5 5
2 2 m 4 5 5 5
- 로직이 복잡할 때, 데이터 세트에 로직 벡터를 저장하기를 원할 것이다.
- 조건에 대한 변수를 생성(TRUE / FALSE).
R Programming |
%%R
withmooc <- withmooc %>%
mutate(happyGuys = (withmooc$gender=="m" & withmooc$q4==5))
withmooc
Results |
# A tibble: 8 x 7
workshop gender q1 q2 q3 q4 happyGuys
1 1 f 1 1 5 1 FALSE
2 2 f 2 1 4 1 FALSE
3 1 f 2 2 4 3 FALSE
4 2 f 3 1 NA 3 FALSE
5 1 m 4 5 2 4 FALSE
6 2 m 5 4 5 5 TRUE
7 1 m 5 3 4 4 FALSE
8 2 m 4 5 5 5 TRUE
- 관측치 선택을 위해서 저장된 논리 벡터를 이용할 수 있다.
- 관측치 선택을 위해 저장된 논리 벡터를 이용할 때, 인용부호에 넣지 않는다.
- 파일이 attach 될 때에 happyGuys가 존재하지 않았기 때문에, 완전한 형태의 mydata$happyGusy를 이용해야 한다.
R Programming |
%%R
withmooc %>%
filter(withmooc$happyGuys)
Results |
# A tibble: 2 x 7
workshop gender q1 q2 q3 q4 happyGuys
1 2 m 5 4 5 5 TRUE
2 2 m 4 5 5 5 TRUE
3) 행 이름에 의해 관측치 선택
- 행 이름을 출력한다.
- 값들이 인용부호에 있기 때문에, 문자 벡터를 생성한다.
R Programming |
%%R
row.names(withmooc)
Results |
[1] "1" "2" "3" "4" "5" "6" "7" "8"
- 행 이름을 사용하여서 행을 선택할 수 있다.
- 행 이름에 의해 처음 4개의 관측치를 선택한다.
R Programming |
%%R
# slice : 행 index로 행을 선택한다.
print( withmooc[ c("1","2","3","4"), ] )
# 동일한 결과를 산출하는 프로그램.
withmooc %>%
slice(1:4)
Results |
# A tibble: 4 x 7
workshop gender q1 q2 q3 q4 happyGuys
1 1 f 1 1 5 1 FALSE
2 2 f 2 1 4 1 FALSE
3 1 f 2 2 4 3 FALSE
4 2 f 3 1 NA 3 FALSE
# A tibble: 4 x 7
workshop gender q1 q2 q3 q4 happyGuys
1 1 f 1 1 5 1 FALSE
2 2 f 2 1 4 1 FALSE
3 1 f 2 2 4 3 FALSE
4 2 f 3 1 NA 3 FALSE
- 행 이름으로써 Number를 가지는 것은 좀 불분명하다.
- 좀 더 확실한 행 이름을 지정한다.
R Programming |
%%R
mydata<-read.table ("C:/work/data/mydata.csv",header=TRUE,sep=",",row.names="id")
withmooc = mydata
attach(withmooc) # mydata를 기본 데이터 세트로 지정.
withmooc
Results |
workshop gender q1 q2 q3 q4
1 1 f 1 1 5 1
2 2 f 2 1 4 1
3 1 f 2 2 4 3
4 2 f 3 1 NA 3
5 1 m 4 5 2 4
6 2 m 5 4 5 5
7 1 m 5 3 4 4
8 2 m 4 5 5 5
R Programming |
%%R
mynames <- c("Ann","Cary","Sue","Carla",
"Bob","Scott","Mike","Rich")
withmooc
Results |
workshop gender q1 q2 q3 q4
1 1 f 1 1 5 1
2 2 f 2 1 4 1
3 1 f 2 2 4 3
4 2 f 3 1 NA 3
5 1 m 4 5 2 4
6 2 m 5 4 5 5
7 1 m 5 3 4 4
8 2 m 4 5 5 5
- mydata에서 row.names함수를 이용하여 새로운 행 이름을 저장.
R Programming |
%%R
attr(withmooc, "row.names") <- mynames
withmooc
Results |
workshop gender q1 q2 q3 q4
Ann 1 f 1 1 5 1
Cary 2 f 2 1 4 1
Sue 1 f 2 2 4 3
Carla 2 f 3 1 NA 3
Bob 1 m 4 5 2 4
Scott 2 m 5 4 5 5
Mike 1 m 5 3 4 4
Rich 2 m 4 5 5 5
- 행 이름으로 관측치를 선택. 이 방법이 더 확실하다.
R Programming |
%%R
withmooc %>%
filter(row.names(withmooc) %in% c("Ann","Cary","Sue","Carla"))
Results |
workshop gender q1 q2 q3 q4
Ann 1 f 1 1 5 1
Cary 2 f 2 1 4 1
Sue 1 f 2 2 4 3
Carla 2 f 3 1 NA 3
- 만약 자주 이용하는 행 이름의 세트를 가졌다면, 그것을 문자 벡터로 저장하여 이용 가능.
R Programming |
%%R
myGals = c("Ann","Cary","Sue","Carla")
myGals
# 행을 선택시에 myGals를 이용한다. 이 방법에 사용시 인용부호에 넣을 필요 없다.
withmooc %>%
filter(row.names(withmooc) %in% myGals)
Results |
workshop gender q1 q2 q3 q4
Ann 1 f 1 1 5 1
Cary 2 f 2 1 4 1
Sue 1 f 2 2 4 3
Carla 2 f 3 1 NA 3
- 그룹이 많은 값을 가졌다고 가정하면, 그 값의 리스트에 의해 단지 몇 개의 선택하기 원할 때 사용.
R Programming |
%%R
myGals <- row.names(withmooc)=="Ann" |
row.names(withmooc)=="Cary" |
row.names(withmooc)=="Sue" |
row.names(withmooc)=="Carla"
print(myGals)
Results |
[1] TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE
- %in% 함수는 Or함수보다 더 간단하다.
R Programming |
%%R
row.names(withmooc) %in% c("Ann","Cary","Sue","Carla")
Results |
[1] TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE
- 인덱스 값을 취하기 위해서 “which” 함수를 이용할 수 있다.
- 행 이름이 Bob과 Rich의 인덱스 값을 찾는다.
R Programming |
%%R
firstMale <- which( row.names(withmooc)=="Bob" )
print(firstMale)
lastMale <- which( row.names(withmooc)=="Rich" )
print(lastMale)
Results |
[1] 5
[1] 8
- 행과 열을 동시에 선택하는 방법.
- 5번에서 8번째 행과 변수명이 q1과 q4의 열인 값을 선택.
R Programming |
%%R
withmooc[firstMale:lastMale, c("q1","q2","q3","q4")]
Results |
q1 q2 q3 q4
Bob 4 5 2 4
Scott 5 4 5 5
Mike 5 3 4 4
Rich 4 5 5 5
R Programming |
%%R
withmooc %>%
dplyr::slice(firstMale:lastMale) %>%
dplyr::select(q1,q2,q3,q4)
Results |
q1 q2 q3 q4
Bob 4 5 2 4
Scott 5 4 5 5
Mike 5 3 4 4
Rich 4 5 5 5
4) 선택된 관측치로 새로운 데이터 프래임 선택.
- 선택된 관측치를 새로운 데이터 프레임으로 저장.
- 남성을 선택하여 데이터 프레임 생성.
R Programming |
%%R
myMales <- withmooc %>%
filter(gender == "m")
print(myMales)
Results |
workshop gender q1 q2 q3 q4
Bob 1 m 4 5 2 4
Scott 2 m 5 4 5 5
Mike 1 m 5 3 4 4
Rich 2 m 4 5 5 5
- 여성을 선택하여 데이터 프레임 생성.
R Programming |
%%R
myFemales <- withmooc %>%
filter(gender == "f")
print(myFemales)
Results |
workshop gender q1 q2 q3 q4
Ann 1 f 1 1 5 1
Cary 2 f 2 1 4 1
Sue 1 f 2 2 4 3
Carla 2 f 3 1 NA 3
6. Python - Pandas
1) 인덱스에 의해 관측치 선택
Python Programming |
import pandas as pd
import numpy as np
import sweetviz as sv
mydata = pd.read_csv("C:/work/data/mydata.csv",sep=",",
dtype={'id':object,'workshop':object,
'q1':int, 'q2':int, 'q3':float, 'q4':int},
na_values=['NaN'],skipinitialspace =True)
mydata =mydata.drop('id',axis=1)
withmooc= mydata.copy()
withmooc
Results |
workshop gender q1 q2 q3 q4
0 1 f 1 1 5.0 1
1 2 f 2 1 4.0 1
2 1 f 2 2 4.0 3
3 2 f 3 1 NaN 3
4 1 m 4 5 2.0 4
5 2 m 5 4 5.0 5
6 1 m 5 3 4.0 4
7 2 m 4 5 5.0 5
- 모든 행(관측치)을 출력.
Python Programming |
withmooc[0:9]
Results |
workshop gender q1 q2 q3 q4
0 1 f 1 1 5.0 1
1 2 f 2 1 4.0 1
2 1 f 2 2 4.0 3
3 2 f 3 1 NaN 3
4 1 m 4 5 2.0 4
5 2 m 5 4 5.0 5
6 1 m 5 3 4.0 4
7 2 m 4 5 5.0 5
- 5행에서 8행의 남성 관측치 선택:
Python Programming |
withmooc[4:9]
# 동일한 결과를 산출하는 프로그램
withmooc.iloc[4:9]
Results |
workshop gender q1 q2 q3 q4
4 1 m 4 5 2.0 4
5 2 m 5 4 5.0 5
6 1 m 5 3 4.0 4
7 2 m 4 5 5.0 5
- Drop 함수는 행을 제외 시 이용된다.
Python Programming |
withmooc.drop([0,1,2], axis=0)
# 동일한 결과를 반환하는 프로그램
withmooc.drop(range(0,3), axis=0)
Results |
workshop gender q1 q2 q3 q4
3 2 f 3 1 NaN 3
4 1 m 4 5 2.0 4
5 2 m 5 4 5.0 5
6 1 m 5 3 4.0 4
7 2 m 4 5 5.0 5
- Selection는 True 조건의 인덱스 Number를 발견할 수 있다. 남성인 관측치의 인덱스 선택.
Python Programming |
print(withmooc.gender=="m")
# 인덱스 Number를 이용하여 관측치 선택. 5행에서 8행까지 선택.
mydata[withmooc.gender=="m"]
Results |
0 False
1 False
2 False
3 False
4 True
5 True
6 True
7 True
Name: gender, dtype: bool
Results |
workshop gender q1 q2 q3 q4
4 1 m 4 5 2.0 4
5 2 m 5 4 5.0 5
6 1 m 5 3 4.0 4
7 2 m 4 5 5.0 5
- 복잡한 로직을 적용하여 관측치를 선택할 수 있다.
- 성별이 남성이면서 변수 q4의 관측치가 5인 관측치 선택.
Python Programming |
withmooc[(withmooc.gender=="m") & (withmooc.q4 == 5)]
Results |
workshop gender q1 q2 q3 q4
5 2 m 5 4 5.0 5
7 2 m 4 5 5.0 5
- 원 데이터 프레임에서 외부로 저장할 인덱스를 수치 벡터로 저장할 수 있다.
- 성별이 남자이면서 q4의 값이 5인 행을 선택.
Python Programming |
happyGuys = withmooc[(withmooc.gender=="m") & (withmooc.q4 == 5)].index
happyGuys
Results |
Int64Index([5, 7], dtype='int64')
- 관측치를 선택하기 위해 happyGuys벡터를 이용.
- 비록 happyGuys가 변 수명이지만, 따옴표를 이용하지 않는다.
Python Programming |
withmooc.iloc[happyGuys,]
Results |
workshop gender q1 q2 q3 q4
5 2 m 5 4 5.0 5
7 2 m 4 5 5.0 5
2) 논리 벡터에 의해 관측치 선택
- 논리적인 비교는 원 데이터 프레임과 동등한 Length를 가진 논리 벡터를 생성한다.
- 8개 변수에 대한 논리 벡터를 생성. 성별이 남성인 논리 벡터 생성.
Python Programming |
withmooc.gender=="m"
Results |
0 False
1 False
2 False
3 False
4 True
5 True
6 True
7 True
Name: gender, dtype: bool
- 행 위치에 논리 벡터를 넣어서 남성에 대한 관측치를 선택한다.
Python Programming |
withmooc[withmooc.gender=="m"]
Results |
workshop gender q1 q2 q3 q4
4 1 m 4 5 2.0 4
5 2 m 5 4 5.0 5
6 1 m 5 3 4.0 4
7 2 m 4 5 5.0 5
Python Programming |
withmooc.loc[withmooc.gender=="m" , ]
Results |
workshop gender q1 q2 q3 q4
4 1 m 4 5 2.0 4
5 2 m 5 4 5.0 5
6 1 m 5 3 4.0 4
7 2 m 4 5 5.0 5
- 복잡한 로직을 적용할 수 있다.
- attach 함수의 사용을 통하여 which함수 도움 없이 바로 조건 추출.
- 남성이면서 변수 q4가 5인 관측치 선택.
Python Programming |
withmooc[ (withmooc.gender=="m") & (withmooc.q4==5) ]
Results |
workshop gender q1 q2 q3 q4
5 2 m 5 4 5.0 5
7 2 m 4 5 5.0 5
- 로직이 복잡할 때, 데이터 세트에 로직 벡터를 저장하기를 원할 것이다.
- 조건에 대한 변수를 생성(TRUE / FALSE).
Python Programming |
withmooc["happyGuys"] = ((withmooc.gender=="m") & (withmooc.q4==5))
withmooc # mydata에 추가변수(happyGuys)를 확인.
Results |
workshop gender q1 q2 q3 q4 happyGuys
0 1 f 1 1 5.0 1 False
1 2 f 2 1 4.0 1 False
2 1 f 2 2 4.0 3 False
3 2 f 3 1 NaN 3 False
4 1 m 4 5 2.0 4 False
5 2 m 5 4 5.0 5 True
6 1 m 5 3 4.0 4 False
7 2 m 4 5 5.0 5 True
- 관측치 선택을 위해서 저장된 논리 벡터를 이용할 수 있다.
- 관측치 선택을 위해 저장된 논리 벡터를 이용할 때, 인용부호에 넣지 않는다.
- 파일이 attach 될 때에 happyGuys가 존재하지 않았기 때문에, 완전한 형태의 mydata$happyGusy를 이용해야 한다.
Python Programming |
withmooc[withmooc.happyGuys]
# 동일한 결과를 반환하는 프로그램.
withmooc.loc[withmooc.happyGuys , ]
Results |
id workshop gender q1 q2 q3 q4 happyGuys
5 6 2 m 5 4 5.0 5 True
7 8 2 m 4 5 5.0 5 True
3) 행 이름에 의해 관측치 선택
- 행 이름을 출력한다.
- 값들이 인용부호에 있기 때문에, 문자 벡터를 생성한다.
Python Programming |
print(withmooc.index)
list(withmooc.index) # Range 확인
Results |
RangeIndex(start=0, stop=8, step=1)
[0, 1, 2, 3, 4, 5, 6, 7]
- 행 이름을 사용하여서 행을 선택할 수 있다.
- 행 이름에 의해 처음 4개의 관측치를 선택한다.
Python Programming |
withmooc.iloc[[0,1,2,3],]
Results |
workshop gender q1 q2 q3 q4 happyGuys
0 1 f 1 1 5.0 1 False
1 2 f 2 1 4.0 1 False
2 1 f 2 2 4.0 3 False
3 2 f 3 1 NaN 3 False
- 행 이름으로써 Number를 가지는 것은 좀 불분명하다.
- 좀 더 확실한 행 이름을 지정한다.
Python Programming |
mynames = ["Ann","Cary","Sue","Carla","Bob","Scott","Mike","Rich"]
print(mynames)
Results |
['Ann', 'Cary', 'Sue', 'Carla', 'Bob', 'Scott', 'Mike', 'Rich']
- mydata에서 row.names함수를 이용하여 새로운 행 이름을 저장.
Python Programming |
withmooc.index = mynames
withmooc
Results |
workshop gender q1 q2 q3 q4 happyGuys
Ann 1 f 1 1 5.0 1 False
Cary 2 f 2 1 4.0 1 False
Sue 1 f 2 2 4.0 3 False
Carla 2 f 3 1 NaN 3 False
Bob 1 m 4 5 2.0 4 False
Scott 2 m 5 4 5.0 5 True
Mike 1 m 5 3 4.0 4 False
Rich 2 m 4 5 5.0 5 True
- 행 이름으로 관측치를 선택. 이 방법이 더 확실하다.
Python Programming |
withmooc.loc[ ["Ann","Cary","Sue","Carla"], ]
Results |
workshop gender q1 q2 q3 q4 happyGuys
Ann 1 f 1 1 5.0 1 False
Cary 2 f 2 1 4.0 1 False
Sue 1 f 2 2 4.0 3 False
Carla 2 f 3 1 NaN 3 False
- 만약 자주 이용하는 행 이름의 세트를 가졌다면, 그것을 문자 벡터로 저장하여 이용 가능.
Python Programming |
myGals = ["Ann","Cary","Sue","Carla"]
myGals
Results |
['Ann', 'Cary', 'Sue', 'Carla']
- 행을 선택 시에 myGals를 이용한다. 이 방법에 사용 시 인용부호에 넣을 필요 없다.
Python Programming |
withmooc.loc[ myGals, ]
Results |
workshop gender q1 q2 q3 q4 happyGuys
Ann 1 f 1 1 5.0 1 False
Cary 2 f 2 1 4.0 1 False
Sue 1 f 2 2 4.0 3 False
Carla 2 f 3 1 NaN 3 False
- 그룹이 많은 값을 가졌다고 가정하면, 그 값의 리스트에 의해 단지 몇 개의 선택하기 원할 때 사용.
Python Programming |
myqs_1 = (withmooc.index == "Ann") | (withmooc.index == "Cary") |
(withmooc.index == "Sue") | (withmooc.index == "Carla")
print(myqs_1)
myGals = withmooc.loc[myqs_1, : ]
myGals
Results |
[ True True True True False False False False]
Results |
workshop gender q1 q2 q3 q4 happyGuys
Ann 1 f 1 1 5.0 1 False
Cary 2 f 2 1 4.0 1 False
Sue 1 f 2 2 4.0 3 False
Carla 2 f 3 1 NaN 3 False
Python Programming |
# isin 함수는 Or함수보다 더 간단하다.
withmooc.index.isin (["Ann","Cary","Sue","Carla"])
Results |
array([ True, True, True, True, False, False, False, False])
- 인덱스 값을 취하기 위해서 “which” 함수를 이용할 수 있다.
- 행 이름이 Bob과 Rich의 인덱스 값을 찾는다.
Python Programming |
firstMale = withmooc[withmooc.index=="Bob"]
print(firstMale);print()
lastMale = withmooc[withmooc.index=="Rich"]
print(lastMale)
Results |
workshop gender q1 q2 q3 q4 happyGuys
Bob 1 m 4 5 2.0 4 False
workshop gender q1 q2 q3 q4 happyGuys
Rich 2 m 4 5 5.0 5 True
- 단독 Number를 가진 numeric 벡터에 단독 인덱스 값을 저장.
Python Programming |
mylist = withmooc.index
myA = [index for index, item in enumerate(mylist) if item == "Bob"]
print(myA)
# 단독 Number를 가진 numeric 벡터에 단독 인덱스 값을 저장.
myZ = [index for index, item in enumerate(mylist) if item == "Rich"]
print(myZ)
Results |
[4]
[7]
- 행과 열을 동시에 선택하는 방법.
- 5번에서 8번째 행과 변수명이 q1과 q4의 열인 값을 선택.
Python Programming |
# 행과 열을 동시에 선택하는 방법.
# 5번에서 8번째 행과 변수명이 q1과 q4의 열인 값을 선택.
withmooc.iloc[myA[0] : myZ[0] + 1 , 2:6]
Results |
q1 q2 q3 q4
Bob 4 5 2.0 4
Scott 5 4 5.0 5
Mike 5 3 4.0 4
Rich 4 5 5.0 5
Python Programming |
mylist = list(withmooc.index)
myA = mylist.index("Bob")
print(myA)
myZ = mylist.index("Rich")
print(myZ)
withmooc.iloc[myA:myZ + 1, 2:6 ] # 변수 3에서 6번째 변수를 출력.
Results |
4
7
Results |
q1 q2 q3 q4
Bob 4 5 2.0 4
Scott 5 4 5.0 5
Mike 5 3 4.0 4
Rich 4 5 5.0 5
4) 선택된 관측치로 새로운 데이터 프래임 선택.
- 선택된 관측치를 새로운 데이터 프레임으로 저장.
- 남성을 선택하여 데이터 프레임 생성.
Python Programming |
withmooc[withmooc.gender=="m"]
myMales = withmooc.loc[withmooc.gender=="m" , ]
myMales
Results |
workshop gender q1 q2 q3 q4 happyGuys
Bob 1 m 4 5 2.0 4 False
Scott 2 m 5 4 5.0 5 True
Mike 1 m 5 3 4.0 4 False
Rich 2 m 4 5 5.0 5 True
- 여성을 선택하여 데이터 프레임 생성.
Python Programming |
myFemales = withmooc.loc[withmooc.gender=="f" , ]
myFemales
Results |
workshop gender q1 q2 q3 q4 happyGuys
Ann 1 f 1 1 5.0 1 False
Cary 2 f 2 1 4.0 1 False
Sue 1 f 2 2 4.0 3 False
Carla 2 f 3 1 NaN 3 False
7. Python - dfply
1) 인덱스에 의해 관측치 선택
Python Programming |
import pandas as pd
from dfply import *
mydata = pd.read_csv("C:/work/data/mydata.csv",sep=",",
dtype={'id':object,'workshop':object,
'q1':int, 'q2':int, 'q3':float, 'q4':int},
na_values=['NaN'],skipinitialspace =True)
mydata =mydata.drop('id',axis=1)
withmooc= mydata.copy()
withmooc
Results |
workshop gender q1 q2 q3 q4
0 1 f 1 1 5.0 1
1 2 f 2 1 4.0 1
2 1 f 2 2 4.0 3
3 2 f 3 1 NaN 3
4 1 m 4 5 2.0 4
5 2 m 5 4 5.0 5
6 1 m 5 3 4.0 4
7 2 m 4 5 5.0 5
- 모든 행(관측치)을 출력.
Python Programming |
withmooc >> row_slice(list(range(len(mydata)-1)))
Results |
workshop gender q1 q2 q3 q4
0 1 f 1 1 5.0 1
1 2 f 2 1 4.0 1
2 1 f 2 2 4.0 3
3 2 f 3 1 NaN 3
4 1 m 4 5 2.0 4
5 2 m 5 4 5.0 5
6 1 m 5 3 4.0 4
Python Programming |
withmooc >> row_slice(np.arange(len(withmooc)-1))
Results |
workshop gender q1 q2 q3 q4
0 1 f 1 1 5.0 1
1 2 f 2 1 4.0 1
2 1 f 2 2 4.0 3
3 2 f 3 1 NaN 3
4 1 m 4 5 2.0 4
5 2 m 5 4 5.0 5
6 1 m 5 3 4.0 4
- 5행에서 8행의 남성 관측치 선택:
Python Programming |
withmooc >> row_slice(list(range(4,8)))
withmooc >> row_slice(np.arange(4,8))
Results |
workshop gender q1 q2 q3 q4
4 1 m 4 5 2.0 4
5 2 m 5 4 5.0 5
6 1 m 5 3 4.0 4
7 2 m 4 5 5.0 5
Python Programming |
withmooc >> tail(len(withmooc)-4)
Results |
workshop gender q1 q2 q3 q4
4 1 m 4 5 2.0 4
5 2 m 5 4 5.0 5
6 1 m 5 3 4.0 4
7 2 m 4 5 5.0 5
Python Programming |
withmooc >> row_slice(X.index >= 4 ) >> row_slice( X.index <= 8)
Results |
workshop gender q1 q2 q3 q4
4 1 m 4 5 2.0 4
5 2 m 5 4 5.0 5
6 1 m 5 3 4.0 4
7 2 m 4 5 5.0 5
- 음수는 행을 제외 시 이용된다. 1행부터 4행을 제외.
Python Programming |
print( list(set(range(len(withmooc))) - set([0,1,2,3])) )
withmooc >> row_slice(list(set(range(len(withmooc))) - set([0,1,2,3])))
Results |
[4, 5, 6, 7]
Results |
workshop gender q1 q2 q3 q4
4 1 m 4 5 2.0 4
5 2 m 5 4 5.0 5
6 1 m 5 3 4.0 4
7 2 m 4 5 5.0 5
- Which 함수는 True 조건의 인덱스 Number를 발견할 수 있다.
- 인덱스 Number를 이용하여 관측치 선택.
Python Programming |
withmooc >> row_slice(X.gender=="m")
Results |
workshop gender q1 q2 q3 q4
4 1 m 4 5 2.0 4
5 2 m 5 4 5.0 5
6 1 m 5 3 4.0 4
7 2 m 4 5 5.0 5
- 매우 복잡한 로직을 적용하여 관측치를 선택할 수 있다.
- 성별이 남성이면서 변수 q4의 관측치가 5인 관측치 선택.
Python Programming |
withmooc >> filter_by(X.gender=="m", X.q4==5)
Results |
workshop gender q1 q2 q3 q4
5 2 m 5 4 5.0 5
7 2 m 4 5 5.0 5
Python Programming |
print(withmooc.index[ (withmooc['gender']=='m') & (withmooc['q4'] == 5)].tolist())
withmooc >> row_slice(withmooc.index[ (withmooc['gender']=='m') & (withmooc['q4'] == 5)].tolist())
Results |
[5, 7]
Results |
workshop gender q1 q2 q3 q4
5 2 m 5 4 5.0 5
7 2 m 4 5 5.0 5
Python Programming |
withmooc >> \
row_slice([index for index, item in enumerate(np.where( (withmooc['gender']=='m') & (withmooc['q4'] == 5), 1, 0)) if item == 1])
Results |
workshop gender q1 q2 q3 q4
5 2 m 5 4 5.0 5
7 2 m 4 5 5.0 5
- 로직이 복잡할 때, 데이터 세트에 로직 벡터를 저장하기를 원할 것이다.
- 조건에 대한 변수를 생성(TRUE / FALSE).
Python Programming |
withmooc = withmooc >> mutate(happyGuys = ( (X.gender=="m") & (X.q4 == 5)))
withmooc
Results |
workshop gender q1 q2 q3 q4 happyGuys
0 1 f 1 1 5.0 1 False
1 2 f 2 1 4.0 1 False
2 1 f 2 2 4.0 3 False
3 2 f 3 1 NaN 3 False
4 1 m 4 5 2.0 4 False
5 2 m 5 4 5.0 5 True
6 1 m 5 3 4.0 4 False
7 2 m 4 5 5.0 5 True
- 관측치 선택을 위해서 저장된 논리 벡터를 이용할 수 있다.
- 관측치 선택을 위해 저장된 논리 벡터를 이용할 때, 인용부호에 넣지 않는다.
- 파일이 attach 될 때에 happyGuys가 존재하지 않았기 때문에, 완전한 형태의 mydata$happyGusy를 이용해야 한다.
Python Programming |
withmooc >> filter_by(X.happyGuys)
Results |
workshop gender q1 q2 q3 q4 happyGuys
5 2 m 5 4 5.0 5 True
7 2 m 4 5 5.0 5 True
2) 행 이름에 의해 관측치 선택
- 행 이름을 출력한다.
- 값들이 인용부호에 있기 때문에, 문자 벡터를 생성한다.
Python Programming |
withmooc.index
Results |
RangeIndex(start=0, stop=8, step=1)
- 행 이름을 사용하여서 행을 선택할 수 있다.
- 행 이름에 의해 처음 4개의 관측치를 선택한다.
Python Programming |
# slice : 행 index로 행을 선택한다.
withmooc >> row_slice([0,1,2,3])
Results |
workshop gender q1 q2 q3 q4 happyGuys
0 1 f 1 1 5.0 1 False
1 2 f 2 1 4.0 1 False
2 1 f 2 2 4.0 3 False
3 2 f 3 1 NaN 3 False
- 행 이름으로써 Number를 가지는 것은 좀 불분명하다.
- 좀 더 확실한 행 이름을 지정한다.
Python Programming |
mynames = ["Ann","Cary","Sue","Carla","Bob","Scott","Mike","Rich"]
print(withmooc)
# mydata에서 row.names함수를 이용하여 새로운 행 이름을 저장.
withmooc.index = mynames
withmooc
Results |
workshop gender q1 q2 q3 q4 happyGuys
0 1 f 1 1 5.0 1 False
1 2 f 2 1 4.0 1 False
2 1 f 2 2 4.0 3 False
3 2 f 3 1 NaN 3 False
4 1 m 4 5 2.0 4 False
5 2 m 5 4 5.0 5 True
6 1 m 5 3 4.0 4 False
7 2 m 4 5 5.0 5 True
Results |
workshop gender q1 q2 q3 q4 happyGuys
Ann 1 f 1 1 5.0 1 False
Cary 2 f 2 1 4.0 1 False
Sue 1 f 2 2 4.0 3 False
Carla 2 f 3 1 NaN 3 False
Bob 1 m 4 5 2.0 4 False
Scott 2 m 5 4 5.0 5 True
Mike 1 m 5 3 4.0 4 False
Rich 2 m 4 5 5.0 5 True
- 행 이름으로 관측치를 선택. 이 방법이 더 확실하다.
Python Programming |
withmooc >> row_slice(withmooc.index.isin (["Ann","Cary","Sue","Carla"]))
Results |
workshop gender q1 q2 q3 q4 happyGuys
Ann 1 f 1 1 5.0 1 False
Cary 2 f 2 1 4.0 1 False
Sue 1 f 2 2 4.0 3 False
Carla 2 f 3 1 NaN 3 False
- 만약 자주 이용하는 행 이름의 세트를 가졌다면, 그것을 문자 벡터로 저장하여 이용 가능.
Python Programming |
myGals = ["Ann","Cary","Sue","Carla"]
print(myGals)
# 행을 선택시에 myGals를 이용한다. 이 방법에 사용시 인용부호에 넣을 필요 없다.
withmooc >> row_slice(withmooc.index.isin (myGals))
Results |
['Ann', 'Cary', 'Sue', 'Carla']
Results |
workshop gender q1 q2 q3 q4 happyGuys
Ann 1 f 1 1 5.0 1 False
Cary 2 f 2 1 4.0 1 False
Sue 1 f 2 2 4.0 3 False
Carla 2 f 3 1 NaN 3 False
- 그룹이 많은 값을 가졌다고 가정하면, 그 값의 리스트에 의해 단지 몇 개의 선택하기 원할 때 사용.
Python Programming |
myGals_1 = (withmooc.index == "Ann") | (withmooc.index == "Cary") | (withmooc.index == "Sue") | (withmooc.index == "Carla")
print(myGals_1)
# isin 함수는 Or함수보다 더 간단하다.
print(withmooc.index.isin (myGals))
Results |
[ True True True True False False False False]
[ True True True True False False False False]
- 인덱스 값을 취하기 위해서 “which” 함수를 이용할 수 있다.
- 행 이름이 Bob과 Rich의 인덱스 값을 찾는다.
Python Programming |
firstMale= [index for index, item in enumerate(withmooc.index) if item == "Bob"]
print(firstMale)
lastMale= [index for index, item in enumerate(withmooc.index) if item == "Rich"]
print(lastMale)
Results |
[4]
[7]
Python Programming |
withmooc >> row_slice(list(range(firstMale[0],lastMale[0]+1)))
Results |
workshop gender q1 q2 q3 q4 happyGuys
Bob 1 m 4 5 2.0 4 False
Scott 2 m 5 4 5.0 5 True
Mike 1 m 5 3 4.0 4 False
Rich 2 m 4 5 5.0 5 True
- 행과 열을 동시에 선택하는 방법
- 5번에서 8번째 행과 변수명이 q1과 q4의 열인 값을 선택.
Python Programming |
withmooc >> row_slice(list(range(firstMale[0],lastMale[0]+1))) >> select(X.q1,X.q2,X.q3,X.q4)
Results |
q1 q2 q3 q4
4 4 5 2.0 4
5 5 4 5.0 5
6 5 3 4.0 4
7 4 5 5.0 5
4) 선택된 관측치로 새로운 데이터 프래임 선택.
Python Programming |
myMales = mydata >> filter_by(X.gender=="m")
myMales
Results |
workshop gender q1 q2 q3 q4
4 1 m 4 5 2.0 4
5 2 m 5 4 5.0 5
6 1 m 5 3 4.0 4
7 2 m 4 5 5.0 5
- 여성을 선택하여 데이터 프레임 생성.
Python Programming |
myFemales = mydata >> filter_by(X.gender=="f")
myFemales
Results |
workshop gender q1 q2 q3 q4
0 1 f 1 1 5.0 1
1 2 f 2 1 4.0 1
2 1 f 2 2 4.0 3
3 2 f 3 1 NaN 3
통계프로그램 비교 목록(Proc sql, SAS, SPSS, R 프로그래밍, R Tidyverse, Python Pandas, Python Dfply) |
[Oracle, Pandas, R Prog, Dplyr, Sqldf, Pandasql, Data.Table] 오라클 함수와 R & Python 비교 사전 목록 링크 |
[SQL, Pandas, R Prog, Dplyr, SQLDF, PANDASQL, DATA.TABLE] SQL EMP 예제로 만나는 테이블 데이터 처리 방법 리스트 링크 |
반응형
'통계프로그램 비교 시리즈 > 데이터 전처리 비교' 카테고리의 다른 글
통계프로그램 비교 시리즈 – [데이터 관리] 1. 변수 변환 (0) | 2022.01.07 |
---|---|
통계프로그램 비교 시리즈 – [변수와 관측치 선택] 3. 변수와 관측치를 동시에 선택 (0) | 2022.01.07 |
통계프로그램 비교 시리즈 – [변수와 관측치 선택] 1. 변수 선택하기 (0) | 2022.01.06 |
통계프로그램 비교 시리즈 – 9. EXPORTING DATA TO SAS & SPSS DATA SETS (0) | 2022.01.06 |
통계프로그램 비교 시리즈 – 8. IMPORTING DATA FROM SPSS (0) | 2022.01.06 |
댓글