R로 배우는 데이터 분석 첫 걸음 : 기초 문법부터 데이터 마이닝 실습까지 강좌의 맛보기 강의입니다.
저희가 데이터 프레임을 실습을 통해서 확인해 보도록 하겠습니다. 일단 콘솔 창을 깨끗하게 컨트롤 L로 한번 더 지우고 진행해 볼게요. 데이터 프레임을 만드는 방법은 크게 두 가지가 있죠. 기존에 이제 벡터가 있는 경우와 또 없는 경우. 또는 벡터가 있어도 cbind, rbind로 묶는 경우가 있고, data.frame이라고 해서 아예 생성을 해줘 라는 함수를 통해서 또 하는 방법이 있습니다. 그래서 일단 벡터가 있는 상태라고 생각하고 들어갈게요. 그래서 저희가 English 2개 정도만 만들어 보죠. 학생들의 영어 점수라고 생각하고 있고요. 영어 점수를 제가 받을게요. c로 묶어야 되겠죠. 90점, 한 사람은 80점, 60점, 70점 이런 식으로 한 4명 정도가 영어 시험을 봤는데 그 성적을 저희가 받아 봤다 라고 생각하시면 좋겠어요. 그 다음에 저희가 그 English를 한번 보죠. 수치형 벡터는 이제는 좀 아실 것 같고요. 그리고 수학 점수도 한번 받아보죠. 이 친구들 똑같은 학생들의 수학 점수를 4명 정도 다시 받도록 하겠습니다. math라고 해서 50점, 60점 수학 점수가 더 안 좋네요. 이 친구는 수학 천재인가 봐요. 100점이 나왔습니다. 4명이 있고요. math라고 해서 저희가 확인해 보도록 하겠습니다. 이렇게 해서 math를 만드시고요. 똑같이 벡터를 만들었습니다. 4개 4개는 똑같아야 되겠죠. 여기 4개 여기 4개, 개수는 똑같아야 어떻게든 묶어 주는 거니까. 지금 그래서 저는 세로로 이제 묶을 건데요. 묶을 때 이제 데이터 프레임을 만드는 방법이 여러 가지가 있는데 저희가 data.frame을 먼저 배우도록 하겠습니다. data.frame을 통해서 저희가 만들어 보도록 하겠습니다. 뭐를 통해서 만든다, data.frame을 통해서 만든다. data.frame 기존 벡터를 이용하여 데이터 프레임을 생성해 보겠습니다. df라고 한번 해볼까요? 중간고사라고 생각해서 제가 만들어 왔는데요. midterm이라고 하고요. 중간고사 성적을 봤더니 영어 성적과 수학 성적, 4명의 수학 성적을 받았어요. 이것을 데이터 프레임으로 만들 거면 data.frame입니다. 프레임하고 괄호 열고, 아까 여기 충분히 뭐가 있었냐면 여기 각각의 벡터 이름이 있었기 때문에 벡터 이름을 이렇게 줄게요. 첫 번째 점수는 English 점수를 한번 줘 보고요. 그 다음에 Math 수학 점수, 두 개를 합해서 데이터 프레임으로 만들 거야 라고 했어요. 만들어 볼까요? 이렇게 만들어 봤고요. 만들어 봤고 여기 있는 df, 그래서 언더바 midterm 한번 볼게요. midterm 보시면 이렇게 만들어져 있죠. 그래서 만들어진 게 저희가 확인해 보니까 이렇게 돼 있죠. 말 그대로 칼럼 단위로 이런 식으로 English, Math 이렇게, 이게 벡터였죠. English란 벡터, Math란 벡터가 데이터 프레임을 통해서 어떻게 된 거죠. 저희가 마치 cbind 한 것처럼 그죠. cbind 한 것처럼 붙어 있는 형태를 확인할 수가 있었어요. 그래서 이렇게 데이터 프레임 만들었고요. 데이터프레임을 만들면 저희가 하는 작업들이 있죠. 데이터프레임인지 형을 확인해야 되는데 is.data.frame, 말은 뭐라 그러냐면 저희가 데이터프레임이라고 하는데 사실은 데이터프레임을 쓸 때마다 data.frame을 쓰셔야 돼요. 데이터프레임 맞다고 그러죠. 그리고 얘는 structure를 꼭 보셔야 돼요. structure, str을 보시고요. midterm, 왜냐하면 칼럼이 여러 개로 구성되어 있기 때문에 각각 칼럼이 어떤 데이터 타입인지 알아야 되는 거거든요. 수치를 줬기 때문에 English라는 것도 역시 칼럼도 numeric이고요. 그 다음에 Math도 numeric이죠. 그래서 수치형 데이터를 받았고요. 전체 4개의 관측치가 있다는 얘기죠. 그 다음에 2개의 variable, 2개의 칼럼이 있어요. 라고 해서 데이터프레임에 관해서 자세히 보여주는 게 Structure였어요. 데이터프레임부터는 Structure를 굉장히 좀 확인을 잘 하셔야 각각의 전체의 개수, 그 다음에 dimension 개수죠. 어떻게 보면 행의 개수, 그 다음에 칼럼의 개수 내지는 각각의 데이터 타입이 칼럼이 어떤 데이터 타입으로 구성되는지 전체를 보여주는 거라 str이 굉장히 중요하다고 볼 수가 있어요. 그래서 str을 항상 저희가 처음 볼 때 꼭 봐주셔야 되고요. 그리고 저희가 이제 만약에 데이터 프레임을 만들었는데 데이터 프레임에다가 칼럼을 추가를 못할까요? 추가할 수 있겠죠. 기존의 데이터 프레임에 칼럼을 하나 추가해 볼게요. 학생의 반 정보를 한번 줘 보죠. 그래서 저는 class라고 하나 만들 거고요. 벡터를 하나 만들겠습니다. 그래서 저희가 1반, 1반 4명이었는데 2명은 1반, 2명은 2반이었다고 생각하실게요. 그래서 class를 만들어 볼게요. 클래스 만들어서 저희가 벡터로 만든 다음에 추가를 해보죠. 역시 midterm에 밀어 넣으실 거죠. 밀어 넣어서 할 거고요. 어디 있다가 data.frame이라고 하시고요. 만드는 건 데이터 프레임 맞고요. 어떻게 하냐면 English 기존에 있던 벡터를 묶어서 math랑 또 클래스랑 같이 이렇게 줘 보도록 하겠습니다. 이렇게 해서 해도 되고요. 아니면 진짜 cbind로 하셔도 되고 뭐 이렇습니다. 한번 저희가 이렇게 있으면 세 개를 다시 묶어서 만들면 되죠 데이터프레임을 묶어 버리면 이제 반 정보까지 완전히 들어가 있는 걸 확인할 수가 있죠 반 정보를 굳이 제가 왜 줬을까요 그저 반 정보로 뭐 통계 같은 것들 좀 낼 수 있게 반 정보를 좀 해봤구요 이렇게 이제 만들어진 데이터 프레임을 통해서 저희가 분석하는 기술 통계 부분을 조금 써볼게요 기술 통계는 워낙 지금 벡터에 대해서 많이 했기 때문에 기술통계 함수가 굉장히 많은데 이런 함수들을 몇 개 써보시도록 하시죠 데이터프레임은 칼럼이 여러 개 묶여 있기 때문에 칼럼 단위로 기술통계 함수를 적용할 수 있는 거죠 그래서 이제 접근하는 게 아까 말씀드렸지만 midterm이라고 했었고요 달러라고 하시면 칼럼 이름을 붙여 주면 되거든요 그래서 영어 성적 한번 볼까요 영어성적을 본다 그러면 영어성적만 이렇게 나오죠. 왜 영어성적이 가로로 되어 있나요? 영어성적 하나는 뭐가 된다고 그랬어요? 이거 하나만 끄집어오면 얘를 끄집어내오는 거거든요. 결국은 벡터가 되는 거죠. 그래서 벡터라 가로로 보여줘요. 한 줄짜리로. 같이 모여 있을 때야 가로가 있고 다시 말해 행이 있고 열이 있는 거지만 얘를 끄집어냈으니까 한 줄 단위로 쭉 끄집어냈으니까 얘가 다시 벡터가 됐고요. 벡터끼리 우리가 했던 연산처럼 뭐 할 수 있다? 기술 통계를 낼 수 있다는 얘기죠. English의 평균을 한번 볼까요? 평균을 보면 산술 평균은 75점이었죠. 수학의 평균 점수는 뭐였을까요? 영어하고 수학은 점수가 다 똑같지는 않죠. 어느 게 더 잘 봤을까요? 보시면 수학이 현저하게 좀 떨어진다 이런 느낌이 드시죠? 칼럼별로 갖고 오면 다시 벡터가 되는 거기 때문에 우리가 말했듯이 굉장히 많은 기술 통계 부분을 좀 쓸 수가 있다 라고 보시면 되겠습니다 기존에 저희가 벡터를 먼저 만들어서 그리고 data.frame으로 데이터 프레임을 만들었잖아요 그런데 벡터가 주어지지 않고 그냥 한번 만들어 보자 라고 얘기하는 거예요 그냥 만들어 보면 저희가 어떻게 해야 될까요 그죠 속에서 지정해 주시면 돼요 데이터 프레임을 벡터가 없다고 생각하고 그냥 처음부터 만들어 볼게요 DF 똑같은 거니까 midterm이라고 한번 해 보시고요 여기다 다시 주겠습니다 data.frame 만드는 건 data.frame이니까요 데이터 프레임을 주시고 여기다가 키 값 키 값 키 값 이렇게 주시면 돼요 그래서 벡터가 벡터도 뭐 그런 식으로 들어가는 거니까 벡터 이름이 있어서 벡터를 사용한 건데 그렇지 않으면 이렇게 줄여서 한번 해 볼까요 English라고 해서 저희가 칼럼을 좀 줄여서 얘기를 해 볼게요 그런데 얘가 이제 규칙적으로 그 벡터가 만들어진 게 아니었죠 규칙적으로 벡터가 만들어지는 게 아니고 우리가 일부러 4개 점수를 만들어 준 거라 c로 묶으셔야 돼요 combine으로 묶어서 60점 70점까지 이렇게 나왔죠 자 그리고 콤마 더 있죠 English 말고 math라고 해서 저희가 수학 점수도 있었는데 수학 점수도 50점 60점 저희가 받은 거에 의하면 100점 요 친구 때문에 많이 낮아졌나 보네요 20점짜리가 있었어요 자 그리고 클래스도 한번 같이 줘 보죠 반 정보도 보시면 1반, 1반, 2반, 2반 개수는 맞추셔야겠죠 4명이니까 4명의 영어 점수, 4명의 수학 점수, 4명의 반 정보 이런 정도 있으셔야 되겠죠 이렇게 해서 만드시면 돼요 이게 원래 벡터였죠 이게 벡터인 거죠 근데 벡터 만들 때는 저희가 실제로 밖에서 벡터를 만들 때는 여기 있는 그 데이터 프레임 안에서는 키, 값, 키, 값, 키, 값 이런 형태로 돌아가는 것이기 때문에 키는, 값, 키는, 값, = 쓰셔야 돼요. 할당 연산을 쓰면 에러 나니까 그 점은 유념하시면서 보시면 될 것 같습니다. 이렇게 실행 한번 해 보시고요. 이미 만들어졌는데 df_midterm 다시 한번 확인해 보시면 잘 만들어진 거 확인할 수가 있죠. 이렇게 해서 저희가 굳이 벡터를 처음부터 만들지 않아도 데이터 프레임을 여기서 키값, 키값 형태로 넣어주게 되면 데이터 프레임도 한 번에 벡터 없이도 당연히 만들 수가 있습니다. 이렇게 만들어진 데이터 프레임에 접근하는 방법을 볼게요. 일단은 dim을 한번 가져와 봤어요. dim은 차원을 알아내는 방법이었죠. 그래서 dim하고 저희가 만들었던 df_midterm을 한번 보시면, midterm 보시면 4행 3열이다 라고 했죠. 행이 4개고 열은 3개가 있어요 라고 해서 4행 3열 이렇게 보여주는 거고요. 그 다음에 행만 따로 행의 개수를 보여주는 명령을 한번 볼게요 행의 개수만 따로 우리가 쓸 수 있는 함수가 nrow였어요 nrow 기억하시죠? 그래서 nrow를 볼게요 그러면 행의 개수가 몇 개였어? 라고 물어볼 수가 있으니까 midterm을 다시 보시면 행의 개수는 여기 4개 첫 번째 걸 가져오는 거죠 4개예요 라고 한 거고요 열의 개수는 뭐였죠? 열의 개수 열의 개수를 출력하는 것도 저희가 이제 반복문이나 이런 걸 통해서도 할 수 있어야 되니까 ncol로 한번 보겠습니다 ncol은 여기 있는 칼럼의 개수는 뭐였어요? 라고 볼 수가 있겠죠 그러면 4행 3열이었으니까 열이 3개 있던데요 이렇게 해서 볼 수가 있고 확인할 수가 있습니다 또 하나 행과 열 이름이 있는데요 행과 열 이름을 한번 확인해 보도록 하겠습니다 행과 열의 이름을 확인해 볼게요 이름을 확인할 수가 있는데요 names라고 하는 게 colnames하고 똑같은 거죠 저희가 뭐가 더 중요하다고 말씀드렸냐면 칼럼의 이름이 훨씬 더 중요해요. row의 이름보다는 row의 이름은 사실 1, 2, 3, 4밖에 저희가 주지를 않아서 아직 정해 주지를 않아서 이렇게 해서 row를 접근할 수 있지만 칼럼은 반드시 여기 있는 새로 해당된 칼럼이 있어야 되기 때문에 칼럼 이름이 중요해졌죠. 그래서 df_midterm 그래서 데이터 프레임에서는 이렇게 나오죠. 마치 뭐처럼 문자열 벡터처럼 세 개의 이름이 이렇게 중복되서 세 개의 이름이 칼럼 이름들이 나오는 걸 확인할 수가 있어요 그래서 행의 이름도 한번 확인해 볼게요 이거는 열의 이름을 확인하는 방법이었어요 열의 이름이고요 행의 이름은 어떻게 확인하느냐 하면 row예요 row names라고 하고요 df midterm을 보겠습니다 그러면 row의 이름인데 아까 보셨겠지만 row가 1, 2, 3, 4 저희가 이름을 특별하게 지정하지 않았기 때문에 그냥 순번이 1, 2, 3, 4가 붙은 거죠 이거는 행의 이름입니다 행의 이름을 저희가 가끔 쓰는 경우도 있지만 가장 많이 쓰는 건 열의 이름을 좀 많이 써요 그래서 뭐를 꼭 하셔야 되냐면 컬럼 이름을 변경하는 거 컬럼의 이름을 변경하는 방법에 대해서 꼭 고민을 좀 하셔야 되는 건데 컬럼을 변경하는 방법은 아까 있는 colnames 다시 한번 해볼게요 colnames, DF 미드텀을 보시면 아까 했던 미처 못 왔네요 미드텀 엔터를 잘 쳐 주시고요 칼럼 이름이 잘 들어왔죠? 이 칼럼 이름은 제가 변경하고 싶다. 이건 names도 똑같습니다. 그냥 줄여서. 워낙 많이 쓰는 거니까 그냥 names는 칼럼의 이름이구나 라고 생각을 해주시면 좋겠습니다. 둘 다 칼럼 이름이 똑같습니다. 칼럼 이름 변경할 건 뭐냐면 이렇게 다 넣어주시면 돼요. names라고 해서 names에다가 내가 이렇게 줄 거야 라고 문자를 벡터로 주면 되겠죠. c로 묶어서 뭐로 줄까요? 두 자씩만 줄여볼까요? en이라 주고요. 데이터 프레임은 MA라고 줄이고요 우리가 프로그램 하시다 보시면 칼럼이 너무 길면 또 이름이 너무 길면 또 그럴 수 있거든요 그래서 이렇게 이름으로 제가 묶어서 넣어 줬어요 그리고 나서 다시 한번 names를 확인해 볼게요 다시 말하면 칼럼의 이름을 확인해 보면 어때요 이렇게 바뀌어 졌죠 다시 DF 미드텀만 보기도 하죠 DF 미드텀만 보시면 실제로 칼럼 이름이 이런 식으로 바뀌어 있는 걸 확인할 수가 있어요 칼럼 이름 자주 변경하고요. 특히 이제 엑셀 데이터나 이런 데이터를 불러오시면 외부의 데이터를 R로 불러오시면 한글로 되어 있는 경우가 많거든요. 한글로 되어 있는 경우는 아무래도 인코딩의 문제도 있고 깨지고 이러니까 또 너무 길거나 또는 중간에 스페이스가 있어서 저희가 처리하기 좀 힘들거나 뭐 이럴 때 저희가 많이 쓰는 방법이고요. 또 영어 영문자 같은 경우 다 대문자 되어 있으면 칼럼 이름을 일단 접근하기 쉬운 소문자로 바꿉니다 프로그램 할 때 용이하게 바꿔 쓰는 형태가 많기 때문에 특히 요거는 반드시 알고 계셔야 돼서 칼럼 이름 변경할 때는 이렇게 문자열 벡터로 밀어 넣으면 칼럼 이름 변경 되구나 라고 생각하시면 되겠습니다 이렇게 데이터 프레임을 저희가 이제 만들어 놨잖아요 데이터 프레임 만들어 놓으면 행이나 열을 추가할 때가 있겠죠 그래서 그럴 때는 rbind, cbind를 쓸 수가 있습니다 rbind, cbind를 통해서 저희가 어떻게 했냐면 데이터 프레임 생성할 때도 이걸 쓸 수가 있고요. 또는 기존의 데이터 프레임에다가 행을 추가하거나 열을 추가하는 것을 할 수가 있죠. 일단은 행을 병합하거나 추가, 병합이라는 얘기가 Merge라는 얘기인데요. 기존에 있는 행이 있는데 또 다른 행을 더 넣어서 두 개를 Merge시키는 거죠. 병합시키고 Merge시키고 우리말로 추가한다고 생각하셔도 미드텀을 보겠습니다. 미드텀 지금까지 만들어 본 게 이 4명이었거든요. 제가 다섯 번째 학생이 들어가는 거죠. 새로운 행을 추가하는 거예요. 새로운 학생을 추가 한번 해보겠습니다. 추가하면 학생에 뭐가 필요하나요? 영어 성적이 필요하고요. 그 다음에 수학 성적이 필요하고 그 다음에 뭐도 필요하죠? 반의 정보도 필요하죠. 그래서 새로운 추가 학생을 저희가 Student라고 해서 하나 만들어 볼게요. 벡터로 만들어서 들어가겠습니다. 벡터로 만들어서 이 친구 영어 성적이 90점, 수학 성적 90점, 일반이라고 해서 넣을게요. 이렇게 되면 여기 90, 91 이렇게 해서 다섯 번째 row가 생기는 걸로 저희가 이제 상상해 볼 수가 있는 거죠. 이렇게 student 벡터를 만들고 나서 여기다가 어떻게 할까요? DF 미드텀에다가 추가를 한번 해보도록 하겠습니다. 직접 추가하는 방법은 여기다가 rbind를 해주는 거예요. 여기 rbind row를 추가할 거니까요. 그래서 rbind를 쓰시고 어디다가 추가할 거냐면 DF 미드텀 이라는 곳에 추가할 거고 여기에다 Student 라는 벡터를 이렇게 추가해서 넣어줄 거다 이런 얘기죠 이렇게 돼서 이제 확인해 볼까요 미드텀이 어떻게 되어 있는지 확인해 봅시다 그러면 다섯 번째 학생이 90점 90점 일반의 성적으로 들어가 있는 걸 확인할 수가 있었어요 rbind를 통해서 기존에 데이터 프레임에 한 줄을 더 추가시킨 거죠 row를 두 번째는 볼게요 두 번째는 이번에는 cbind를 해볼게요 다시 말하면 열 병합을 해보겠다는 얘기죠. 열을 더 추가하는 거죠. 그래서 저희가 영어하고 과목이 수학만 있는 건 아니잖아요. 그래서 국어성적을 한번 추가를 해보도록 하겠습니다. 국어성적을 추가를 해볼게요. 국어성적을 추가하게 되면 다섯 명이죠. 다섯 명의 국어 성적을 충분하게 다 넣어줄 수가 있습니다. 물론 우리가 저번에 배웠던 결측치를 NA로 넣어줘도 되지만 일단은 없다고 생각하고요. 88점 첫 번째 친구 배우는 데이터 프레임 실습에서 배우는 데이터 프레임 실습에서 배우는 데이터 프레임 실습에서 배우는 데이터 미드텀의 KOR을 C로 칼럼 단위로 붙여주면 옆에 칼럼이 하나 더 추가가 되겠죠. 그리고 나서 DF 미드텀을 다시 한번 보도록 하겠습니다. 이렇게 되면 이런 식으로 국어 점수가 옆으로 붙은 거 확인하셨죠. 옆으로, 다시 말하면 칼럼 단위로 붙은 거 확인하셨어요. 확인하셨으면서 cbind는 이런 식으로 붙이는 거구나 라고 생각을 해주시면 될 것 같습니다. 데이터 프레임에서 특정 칼럼을 접근하거나 특정한 데이터를 추출하는 경우가 많거든요. 그래서 저희가 그 연습도 한번 해보도록 하겠습니다. 앞에 이제 cbind, rbind를 하면서 데이터가 조금 지저분해져서 데이터 미드텀이라는 데이터 프레임을 다시 한번 만들어 보도록 하겠습니다. 그래서 df_midterm 중간고사를 한번 더 만들었고요. 한번 확인해 볼게요. 그러면 칼럼이 영어 점수, 그 다음에 수학 점수, 반 정보 이렇게 들어가 있고요. 4개의 행이 들어가 있습니다. 4명의 학생의 점수와 반 정보가 들어가 있는 미드텀입니다. 미드텀에서 특정 칼럼을 먼저 가져와 보도록 하겠습니다. 칼럼을 접근하는 방법은 이렇게 됩니다. 칼럼을 접근하는 방법은 데이터 프레임 이름을 주시고요. 접근하고 싶은 데이터 프레임 이름을 적어 주시고 그 다음에 해당되는 원하는 칼럼이 있다면 달러를 붙이고 컬럼명을 적어 주시면 돼요. 간단하죠? 달러 표시입니다. 컬럼명을 뒤에다가 적어주시면 해당되는 프레임의 컬럼만 가져다가 데이터를 보여줄 수가 있어요. DF 미드텀을 한번 해볼 거고요. 여기 $에다가 지금 영어 성적만 보고 싶어요. 그러면 English를 이렇게 해주시면 되겠습니다. 그러면 원래는 데이터 프레임 행과 열이 있는 2차원이었는데 저희가 영어 점수만 잘라오기 때문에 1차원이 됐고요. 결국 벡터로 변환이 된 거죠. 벡터가 된 겁니다. 또 하나 더 해볼게요. 미드텀에서 이번에는 클래스 정보를 가져와 볼까요. 반 정보만 가지고 싶어 라고 하게 되면 반의 정보 역시 이렇게 잘라오게 되는 거고 벡터 형태로 리턴이 되게 됩니다. 두 번째는 인덱싱, 슬라이싱을 한번 해볼 건데요. 가져올 때 그냥 한 개의 열만 가져오는 게 아니고 두 개 이상의 열이나 두 개 이상의 행을 가져오고 싶을 때 인덱싱을 할 수 있죠. 그럴 때는 이제 데이터 프레임 이름을 먼저 주시고요. 그리고 행열이다 보니까 가로, 세로를 표시할 수 있어서 행을 먼저 이렇게 콤마 앞에 표시해 주고요. 열도 어디서부터 어디까지 각각 행의 인덱싱, 열의 인덱싱을 적어주시면 되겠습니다. 그래서 한번 해보도록 하겠습니다. df 미드텀 데이터 프레임에서 뭘 가지고 싶냐면 제가 2행부터 4행까지, 1행 빼고 여기 있는 점수 80, 60, 일반 이렇게 해서 세 줄을 가지고 싶어요. 세 행만. 그럴 때는 2부터 4까지 라고 행을 명시해 주시고요. 그 다음에 콤마 뒤에 아무것도 안 주게 되면 열은 모두 다 가져와 이렇게 되는 거거든요. 컨트롤 엔터를 누르시면 어때요. 첫 번째 행 빼고 나머지를 모두 다 갖고 열은 다 가져왔죠. 이렇게 하시면 되겠습니다. 두 번째는 거꾸로 열만 가지고 싶을 때도 있을 거란 말이죠. 그래서 콤마 치시고 뒤에다가 앞에는 아무것도 적어주지 않으시고 뭐 공간을 줘도 되고 안 줘도 상관없습니다. 그래서 여기서는 저희가 예를 들어 1열부터 2열까지만 가져오고 싶어 라고 하게 되면 여기 클래스 빼고 앞에 있는 영어 점수하고 수학 점수만 잘라서 세로로 짝 잘라서 가져올 수가 있죠. 그래서 열로도 당연히 가능하고요. 저기 표에 있던 마이너스 표현 있죠? 마이너스 표현도 쓸 수 있습니다. 예를 들어서 마이너스 콤마 하면 이렇게 행은 다 가져오는데 이거하고 똑같은 거, 위에 거하고 똑같은 거 쓰면 마이너스 3이란 건 뭐죠? 세 번째 열 빼고 가져올래요. 라는 거였기 때문에 똑같아졌죠. 이런 표기가 있었기 때문에 아래서는 이렇게 쓸 수가 있고요. 그럼 이번에는 행과 열을 동시에 선택해서 가져오고 싶다. 그러면 미드텀 해주시고 행과 열을 다 적어주시면 되죠. 원하는 행은 예를 들면 3행부터 4행까지만 가져와 주시고요. 콤마 그 다음에 열은 뭐냐면 예를 들어 1열부터 2열까지 가져와 주세요 라고 하게 되면 이렇게 가져와 주죠. 그래서 원하는 거 보면 3, 4하니까 여기죠. 여기 딱 잘라서 60, 100, 70, 20을 딱 가져다 준 거죠. 가로도 자르고 세로도 잘라서 잘 갖다 줬는데 요거가 만약에 변형을 해보시면 DF 미드텀 예를 들어 이제 저희가 행은 3행부터 4행까지가 맞았어요. 근데 열을 가져올 때 1열하고 3열만 가져오고 싶어요. 그러면 슬라이싱을 못하는 거죠. 그럴 때는 c로 묶어주세요. 컴바인 묶어줘서 1하고 3열 가져와요. 이렇게 만약에 1부터 3까지면 괜찮은데 1열하고 3열만 원할 때는 이 컴바인 c로 묶어주셔야 돼요. 이렇게 하면 이것도 가능합니다. 그래서 English하고 그 다음에 클래스가 세 번째 열이었잖아요. 그래서 첫 번째 열과 세 번째 열을 잘라서도 가져왔습니다. 이게 바로 저희가 데이터 프레임의 슬라이싱 인덱싱을 해본 겁니다. 이번에는 조건에 맞는 특정한 데이터만 추출하는 방법에 대해서 한번 해보도록 하겠습니다. 그래서 조건에 맞는 데이터를 선택하는 방법, 행을 선택하는 방법에 대해서 한번 해보도록 하겠습니다. 쓰는 방법은 데이터 프레임 이름을 먼저 주시고요. 그 다음에 행 조건, 열 조건 행만 가져오는 게 아니고 열도 가져올 수 있으니까 각각 행과 열의 조건을 주게 되면 원하는 데이터를 출력할 수가 있겠습니다. 첫 번째 제가 한번 조건을 줘 볼게요. 조건을 한번 만들어 보도록 하겠습니다. 일반 학생만 출력해 주세요 라고 이렇게 조건을 줬다고 할게요. 출력하세요 라고 하면 일반 학생은 다시 한번 볼까요? DF 미드텀으로 한번 더 확인하시면 일반 학생이 두 명 있어요 클래스가 일반이라고 되어 있는 게 조건이겠죠 이 조건을 주게 되면 되겠습니다 그래서 DF의 미드텀을 보시면 되겠고요 조건을 주는데 아까 행과 열을 접근하는 방법 저희가 배우셨죠 열이 지금 조건이 클래스니까 반이 클래스잖아요 이게 일반인 친구를 가져와요 라고 하면 되죠 그리고 모든 열을 가져오세요 그러면 행에 대한 조건을 이렇게 추가하게 되면 이 행에 대한 조건을 만족하는 일반만 다 들고 들어오겠죠. 그래서 한번 해보도록 하겠습니다. 그래서 실행을 해보시면 이렇게 돼서 일반 친구들만 들어왔죠. 2반이면 2반으로 들어오게 되면 되고요. 이런 식으로 들어갈 수가 있고요. 또 한 가지는 일반 학생인데 두 번째 일반 학생이면서 다 가져오지 말고 이렇게 할 수 있습니다. 일반 학생만 출력하는데 두 번째요. 두 번째 바꿔서 제가 뭐만 갖고 싶냐면 반은 알고 있으니까 일반 학생의 영어와 영어와 수학 점수만 갖고 오세요 출력하세요 라고 한번 해볼게요 그러면 뭐 빼고 클래스 빼고 지금 클래스까지 나왔으니까 이미 일반인지 전제 조건을 줬으니까 그건 빼고 가져와 주세요 이런 얘기고요 미드텀이고 그러면 조건은 똑같죠 미드텀이고 일반인지 일단 추려야 되니까요 그래서 클래스를 주시고 클래스가 이렇게 1 이면서 이걸 만족하면서 컬럼을 지정해 주면 되죠 컬럼을 c로 가져와도 되고 그냥 슬라이싱 해도 되겠네요 지금 왜냐면 붙어 있으니까요 1열부터 2열까지만 가져와 주세요 라고 하면 되겠죠 이렇게 되게 되면 일반이면서 해당되는 점수만 가져오기 때문에 원하는 조건도 만족하면서 해당되는 것을 가져올 수가 있어요 이번에는 한번 해보시죠 여러분이 세 번째 예제를 내드릴 테니까 한번 해보도록 할게요 수학 성적이 이렇게 점수로 하면 되잖아요 수학 성적이 60점 이상이라고 할까요? 많이 좋지 않네요 60점 이상인 학생만 출력해주세요 이렇게 한번 해보도록 하겠습니다 어떻게 할까요? 수학 성적은 math라는 칼럼에 접근하면 될 것 같고요 보시니까 60점 이상인 60점이 있고요 100점이 있죠 그래서 1반에 1명, 2반에 1명 이렇게 있는 것 같습니다 그래서 2명이 나와야 돼요 한번 해보실까요? DF 미드텀이라고 하고요 조건이 뭐죠 이번에는? 행을 골라오는 조건이 일단은 아까 했던 미드텀에서 어디죠? 수학 성적이니까 math죠 math가 60보다 크거나 같은 친구를 일단 골라오는 거죠 이렇게 골라오면 되고요 반드시 쉼표 잊지 말고 하셔야 돼요 행에 대한 조건만 준 거기 때문에 모든 열을 일단 다 가져와 볼게요 그렇게 되면 두 명 나왔죠? 60점, 100점 맞습니다 근데 제가 한 번 더 들어갈게요 이번에는 어떻게 했냐면 이렇게 할 수가 있겠죠 4. 수학 성적이 60점 이상인 학생만 출력하는데 수학 성적은 알겠으니까 그 친구의 반은 몇 반이야? 다시 말하면 지금은 수학 빼고 올게요 영어 성적하고 영어랑 영어 성적이랑 그 다음에 반 정보 반 정보를 출력하세요 이렇게 할게요 그러면 앞에 있는 요거 있죠 60점 이상인 거 한번 더 써 볼게요 DF 미드텀이라고 하고 DF 미드텀에 수학 성적이란 조건은 똑같아요 60보다 크거나 같은 친구가 60점 이상인 친구를 골라 오는데 이번에는 영어 성적 하고 그 다음에 반 정보 수학 성적을 빼고 오는데 여기 보시면 두 개가 이제 1 2 3열인데 1하고 3열만 가져와야 되는 거잖아요 그럼 얘가 떨어져 있으니까 아까처럼 슬라이싱으로 가져오면 안 되고 c로 반드시 붙이셔야 돼요 그래서 1하고 3열만 찍어서 가져오세요 라고 하게 되면 마지막까지 되는 거죠 60점인 친구는 영어 성적은 80점이고 1반이었고 100점인 친구는 영어는 60점 2반이었어요 라는 정보를 볼 수가 있으면 조건에 맞는 행과 열을 선택할 수가 있는 거죠 행을 가져온 다음에 해당된 열까지도 저희가 선택할 수가 있습니다 그래서 조건에 맞는 행을 선택하는 방법을 데이터 프레임에서 어떻게 하는지 한번 살펴봤습니다
