상세 컨텐츠

본문 제목

Python pandas 데이터프레임 자주 사용되는 구문

프로그래밍/Big Data

by 삶의 재발견 2018. 1. 26. 15:01

본문

반응형

Python pandas 데이터프레임(DataFrame) 사용시 자주사용되는 기능


1. 특정 인덱스의 컬럼값을 변경해


#방법1

 df3.ix[81, '년도']=2000


#방법2

df3.loc[df3.index == 81, '년도']=1998



2. SQL문: Select와 Where 문 조함


# Select 인원수1, 인원수2 From df3 Where df3.인원수1> 10

# and df3.인원수1< 100

# and 인원수2 IS NULL;


# Null 값 여부 확인은 isna() 또는  notna() 사용

df3[(df3.인원수1>10) & (df3.인원수2.isna())][['인원수1', '인원수2']]



3. SQL문: Update 문


#UPDATE df  SET col = col+1  WHERE col2 < 2;


df.loc[df['col'] < 2, 'col'] += 1



4. SQL문: Delete 문


# DELETE FROM df WHERE col > 9;


#직접 삭제할 수 없으며, 대신 삭제되지 않아야 할 조건으로 추출


df = df.loc[df['col'] <= 9]


5. SQL문 Group By


#SELECT gender, count(*) FROM  df  GROUP BY gender, year;


#coun()가 아닌 size()를 사용

#as_index=False 를 적용하지 않으면 group 컬럼이 인덱스로 변환됨


df.groupby('gender', as_index=False).size()


#count()는 개별컬럼들의 null을 제외한 수를 제공하며, 

#만일 개별 하나이 컬럼이 null을 제외한 갯수를 알고 싶으면

df.groupby(['gender', 'year'], as_index=False)]['name'].count()



6. Join

#Join을 할 때, 양쪽 key의 데이터 타입을 일치해야 이상한 결과가 나지 않음

#2개의 프레미을 동일 키로 Inner Join
pd.merge(df1, df2, on='key')

#2개의 프레임을 다른 키로 left Join
pd.merge(df1, indexed_df2, left_on='key', right_on='key2',  how='left')

7. Union

# 데이터프레임 목록을 Union: 중복은 제거되지 않음

pd.concat([df1, df2, df3])



8. 중복제거와 확인


#중복 데이터의 확인

df[df.duplicated()]


#몇번쨰 중복된 데이터인지 확인하기: cumcount가 0인 경우 중복되지 않음

df.groupby('이름', as_index=False).cumcount()


# 행별 중복 카운트 확인

df.groupby(df.columns.tolist()).size().reset_index().rename(columns={0:'중복수'})


# 첫번째 중복되는 행만 남기도 중복을 제거한 결과를 반영

df.drop_duplicates(keep='first', inplace=True)


#중복을 제거한 결과만 반환: df는 기존 중복을 유지

df.drop_duplicates(keep='last')



9. 컬럼명 변경하기


모든 컬럼명을 변경


df.columns=['년도','인원수2']


일부 컬럼명을 변경


df.rename(index=str, columns={"oldName1": "newName1", "oldName2": "newName2"})



9. index 초기화


#기존 인덱스를 새로운 컬럼으로 만들고, 인덱스를 초기화

df.reset_index(inplace=True)


#기존 인덱스를 없애고 인덱스를 초기화

df.reset_index(drop=True, inplace=True)


10. MultiIndex를 이용해서 다양한 조합생성


a = [1, 2, 3] 

b = ["a", "b", "c"] 

index = pd.MultiIndex.from_product([a, b], names = ["a", "b"]) 

pd.DataFrame(index = index).reset_index()


11. na값 처리


# na값이 있는 행제거: 모든 컬럼의 일부 또는 전부 옵션으로 how를 any 또는 all로 지정

# axis=0 row, axis=1 column

dfCNoWeb=dfCNoWeb.dropna(axis=0, how='all')


# na값을 다른 값(0)으로 변경

df.fillna(0)





반응형

관련글 더보기