이번 시간에는 merge 함수와 join함수를 사용해 dataframe을 병합해보자. merge를 이용한 병합은 지난 번에 공부한 concat()함수처럼 단순히 dataframe을 row level, col level로 붙이는 것이 아닌, SQL에서의 join처럼 특정한 column을 기준으로 같은 값끼리 묶는 병합이다. 실습을 위해 모양은 다르지만 같은 이름의 column을 갖는 두 개의 dataframe을 임의로 만들어 보았다. import numpy as np import pandas as pd # customer = pd.DataFrame({'customer_id' : np.arange(6), 'name' : ['철수'"", '영희', '길동', '영수', '수민', '동건'], '나이' : [4..
concat() 함수를 사용해 DataFrame을 병합해보자. concat()은 두 dataframe을 열이나 행 레벨로 그대로 가져다 붙이는 아주 날 것의 병합 방법이다. 간단하게 실습으로 공부해보자. 실습을 위해 key와 value를 갖는 간단한 DataFrame을 만들어보았다. import numpy as np import pandas as pd # df1 = pd.DataFrame({'key1' : np.arange(10), 'value1' : np.random.randn(10)}) df2 = pd.DataFrame({'key1' : np.arange(10), 'value1' : np.random.randn(10)}) print(df1) print(df2) 이제 이 두 DataFrame을 conc..
stack, unstack 함수를 사용해 DataFrame을 변경하는 방법에 대해 공부해보자. stack은 쌓다라는 의미를 가진다. stack을 쉽게 이해하려면 Data를 row level로 쌓는다는 의미로 이해하는 것이 좋다. 즉, column level에 있는 데이터를 row(index) level로 바꾸어 쌓는 것이다. 또한 unstack은 stack의 반대이므로 stack과는 반대로 row level의 data를 column level로 바꾸어 쌓는다. # import numpy as np import pandas as pd # df = pd.DataFrame({ '지역': ['서울', '서울', '서울', '경기', '경기', '부산', '서울', '서울', '부산', '경기', '경기', '경..
오늘은 transform 함수에 대해서 이해해보고 활용해보겠다. transform 함수는 DataFrame의 groupby에 내장된 member함수이다. transform함수가 하는 일은 groupby의 통계함수를 적용하는 것과 굉장히 비슷하다. 전 시간에 우리가 groupby를 통해서 통계함수를 적용하게 되면 원본 DataFrame과는 다른 shape의 DataFrame이 만들어지는 것을 확인했다. 그런데 transform 함수를 이용하게되면 원본 데이터의 인덱스를 유지한 채로 새로운 값을 추가하게 된다. 이러한 transform의 특성은 원본 데이터에 없던 새로운 속성을 추가하기에 굉장히 용이하게 한다. 몬말인지 잘 모르겠으니, 실습을 통해 공부해보자. import numpy as np import ..
group by란. 아래의 세 단계를 적용하여 데이터를 그룹화하는 것이다. SQL의 group by와 개념적으로는 동일하고, 사용법은 유사하다. 1. 데이터 분할 2. operation 적용 3. 데이터 병합 # import pandas as dp import numpy as np df = pd.read_csv('./train.csv') df.head() groupby()함수를 사용해 특정 column을 그룹화하는 것은 객체만이 반환 될 뿐, 큰 의미를 갖지는 않는다. groupby()의 groups속성을 활용해서 그룹에 속한 index를 dict형태로 표현할 수 있다. 말로만 하면 이해가 잘 되지 않으니 실습으로 공부해보자. # class_group = df.groupby('Pclass') # clas..
모든 data에는 type이 존재한다. DataFrame에서는 각 column이 가지고 있는 value의 type을 info()함수를 사용해 확인할 수 있다. # train_data = pd.read_csv('./train.csv') train_data.info() 반환된 값을 통해 승객id, 생존여부 등은 int(정수) type, 이름이나 성별은 obj type... 각 value의 data type을 확인할 수 있다. 이러한 데이터 타입을 분류할 수 있는 두 가지 분류법이 있는데, 바로 데이터를 숫자형 데이터와 범주형 데이터로 구분하는 방법이다. 1. 숫자형 데이터 (Numerical Type) - 숫자형 데이터란 연속성을 띄는 숫자로 이루어진 데이터이다. 이를 테면 연령 데이터나 요금 데이터처럼 값..
DataFrame에서는 여러가지 이유로 NaN(결측값)이 발생할 수 있다. 데이터의 누락이나 처음부터 원래 데이터가 없는 경우라던가. 앞서 배웠듯이, NaN는 값이 0이라는 것이 아닌 값 자체가 없다는 것을 의미한다. 이런 데이터의 전처리 방법은 값이 없는 것을 무시하는 방법, 값을 다른 값으로 채워 대체하는 방법 크게 두 가지로 나눌 수 있다. 오늘은 이 두 가지 방법에 대해서 공부해 보도록 하자. 우선 .info()함수를 통해 데이터에 결측치가 존재하는 지 확인할 수 있다. # import pandas as pd train_data = pd.read_csv('./train.csv') train_data.info() info를 보면 다른 변수들은 891개로 결측값이 없지만, Age와 Cabin,Emba..