목록Python/Pandas (16)
오답노트

pivot 행 데이터를 열 데이터로 회전 시키는 것을 pivot이라고 한다. 결과는 무식하게 회전시키진 않았지만, 비슷한 모양을 하고 있다. df.pivot("idx","col","val") 첫번째 인자는 행이 될 시리즈명 두번째 인자는 열이 될 시리즈명 세번째 인자는 행 과 열에 맞게 배치될 값이 될 시리즈명이다. import pandas as pd data = { "idx" : [1,2,1,2], "col" : ['col1','col1','col2','col2'], "val" : [20,30,40,50] } df = pd.DataFrame(data) display(df) display(df.pivot("idx","col","val"))

가변수(Dummy Variable) 범주형 데이터의 unique를 각 열로 나누는 것을 의미한다. get_dummies pd.get_dummies(범주형 데이터변수,prefix,drop_first) pd.get_dummies(데이터프레임, columns=[범주형 데이터 변수], drop_first) 인자로 범주형 데이터 변수를 때, prefix 옵션은 생성될 가변수의 접두어를 설정할 수 있다. drop_first는 가변수를 생성할 때, 원본 범주혀 데이터를 삭제할 여부를 결정한다. True는 삭제, False는 삭제하지 않는다. 인자로 데이터프레임을 받을 때, columns 옵션에 데이터프레임 내에 범주형 데이터를 입력한다. drop_first는 위 설명과 같다. df['Serise1'].unique()..

NaN Not A Number의 약자로 사용할 수 없는 데이터, 빈 값이라고 볼 수 있다. NaN 확인하기 isnull 메소드와 isna 메소드 둘 다 같은 결과를 출력한다. 예제는 isna로만 살펴보자 df.isna() import pandas as pd df.isna() isna 는 데이터 프레임의 형태로 NaN라면 True 아니면 False로 요소를 표현한다. sum 각 시리즈 별로 NaN의 개수를 나타낸다. 집계함수 sum과 같다 df.isna().sum() ''' Label 0 Serise1 1 Serise2 2 Serise3 2 ''' any 각 시리즈별로 NaN이 존재 여부를 나타낸다. df.isna().any() ''' Label False Serise1 True Serise2 True S..

to_datetime 위 사진에서 date 열의 자료형은 object이다. 하지만 우리 눈에는 시간으로 보여진다. to_datetime을 이용해 시간 타입으로 바꿔보자 data['date'] = pd.to_datetime(data['date']) 이 datetime64 는 파이썬 기본 패키지인 datetime 의 datetime 클래스와 같다. 우선 공식 문서를 참고하자. 나중에 datetime에 대한 링크를 추가하도록 하겠다.

crosstab pd.crosstab(col1,col2) 두 범주형 변수로 빈도수를 파악하는데 사용된다. pd.crosstab(titanic['Survived'], titanic['Sex']) normalize normalize 옵션은 빈도 수의 합을 1로 만들어준다. columns 열의 합이 1이 되도록 normalize 시킨다. pd.crosstab(titanic['Survived'], titanic['Embarked'], normalize = 'columns') 각 열의 합은 모두 1이다. index 행의 합이 1이 되도록 normalize 시킨다. pd.crosstab(titanic['Survived'], titanic['Embarked'], normalize = 'index') 각 행의 합은 1..

Rolling df['col'].rolling(n,min_period).연산함수() 시리즈에서 사용할 수 있는 메소드로 시리즈의 값을 묶어서 이에 대한 연산을 할 수 있다. 연산한 결과는 n개로 묶을 때 마지막 인덱스에 입력한다. 묶을 개수는 n으로 정할 수 있다. min_periods옵션은 연산에 대한 최소 개수이다. 연산 함수에서 굳이 n개가 충족되지 않더라도 min_periods에서 설정한 개수만큼 데이터가 있다면 연산을 수행한다. min_periods를 설정하지 않으면 n을 기준으로 연산한다. df['S2'] = df['S1'].rolling(3).sum() #S1 시리즈에서 3개의 데이터를 합산 df['S2'] = df['S1'].rolling(3,min_periods=1).sum() #S1에서..

merge pd.merge(dataframe1,dataframe2,how,on,as_index) merge는 병합으로 SQL에서 join과 같다. key를 따로 지정하지 않으면 자동으로 지정한다. 인자로는 데이터프레임 2개를 받고 how 옵션은 merge할 방식을 left ,right, inner ,outer 으로 지정할 수 있다. 기본은 inner다. on 옵션은 병합의 기준이 될 행을 선택할 수 있다. 사용하지 않으면 자동으로 기준이 정해진다. left dataframe1을 기준으로 merge pd.merge(df1,df2,how="left") right dataframe2을 기준으로 merge pd.merge(df1,df2,how="right") inner dataframe1과 dataframe2에..

map 범주형 값을 다른 값으로 변경할 수 있다. 시리즈에서 사용할 수 있는 메소드로 인자로는 딕셔너리를 받는다. 딕셔너리에는 {"현재 시리즈의 값" : "변경할 값"} 과 같이 입력한다. dataframe['Status'] = dataframe['Status'].map({1: "Bad", 2:"Nomal",3:"Good"}) cut 수치형 요소를 구간을 지정하여 분할할 수 있다. cut 함수는 인자로 시리즈를 받고, 해당 시리즈를 분할한 값으로 입력한다. labels 옵션은 리스트를 입력할 수 있고, 구간을 지정하여 분할했을 때, 분할한 값을 지정한다. bins 옵션은 구간을 리스트로 입력할 수 있다. labels에 입력한 리스트의 크기보다 1 더 커야한다. bins = [0,30,60,100] dat..

열 이름 변경 rename (일부 열 이름 변경) columns 옵션에 딕셔너리 형태로 {"현재 열 이름" : "새로운 열 이름"}을 입력하면 된다. 하지만 inplace 옵션이 True일 경우에 현재 데이터프레임에 적용된다. 기본값은 False이므로 현재 데이터프레임에 적용하려면 inplace 옵션을 True로 해야한다. df_rename.rename(columns = {"Serise1": "Col1", "Serise2": "Col2",}, inplace = True) columns (전체 열 이름 변경) 데이터프레임의 columns 변수에 리스트로 값을 넣으면 해당 값 순서대로 열 이름이 변경된다. 단, 리스트의 크기는 데이터프레임의 열의 개수와 일치해야한다. df_rename_all.columns ..

조건 확인 시리즈를 조회하는 문법에 바로 조건절을 사용하면 된다. 결과는 Boolean으로 출력된다. 부정 기호는 ~ 이다. 부정하고 싶은 조건문에는 괄호를 쳐야만한다. dataframe['Status'] > 2 ''''''' 0 False 1 False 2 True 3 False 4 True 5 False 6 False 7 False 8 False 9 True 10 False 11 False ''''''' ~ (dataframe['Status'] > 2) ''''''' 0 True 1 True 2 False 3 True 4 False 5 True 6 True 7 True 8 True 9 False 10 True 11 True ''''''' 여러 조건을 조회 할때는 &(and) 와 |(or) 기호를 사용..