[부스트캠프 AI Tech 5기] Pandas

박상우·2023년 3월 9일
0

부스트캠프

목록 보기
5/53
post-thumbnail

Panel Data = Pandas

Pandas

  • numpy와 통합되어 스프레드 시트 처리 기능을 제공

  • 데이터 처리 및 통계 분석을 위해 사용

  • 타블로 형태의 데이터

  • 기초는 과감히 생략

  • 하나의 칼럼은 Series, 전체는 dataframe

Series

  • Column vector를 표현하는 object
  • indexing을 문자, 숫자로 할 수 있다는 것이 가장 큰 특징
  • ndarray의 subclass!
  • 인덱스에 할당과 slice 모두 가능

DataFrame

  • Series의 모음
  • 기본적으로 2차원이며 csv Excel로 호출하는 경우가 다수

Indexing

df.loc[]
df.iloc[]
  • loc은 index 이름, iloc는 index number

삭제

df.drop(column,axis=1)
del df['column']
  • del은 실제로 메모리에서 삭제
  • drop은 실제로 삭제되지는 않음

Selection

df['column']
df[['column1','column2']]
  • 리스트 꼴로 넣으면 dataframe 형태로 selecting

reset_index

df.reset_index(drop=True or False, Inplace = True or False) 

drop

df.drop(1) 
  • 1번 인덱스 삭제
  • Inplace = True를 설정해야 바뀜

Values

df.values
  • numpy로 추출할 수 있음

Operation

df.add(series,axis=0)
  • series, matrix로 사칙연산 실행 됨
  • 인덱스 값 끼리 연산 됨
  • 둘 중 하나라도 틀리면 Nan 인데, fill_value 로 채워줄 값을 설정할 수 있음
  • broadcasting 도 가능

replace

df.columnname.replace({'male':0,'female':1})
  • 실제 값에는 변화가 없을 것이니깐 따로 할당을 해주어야 함

Apply

  • Series 전체에 해당 함수를 적용

  • Series 데이터로 입력 받아 handling

  • applymap 은 모든 데이터에 다 적용

Pandas Built-in function

Describe

df.describe() 
  • 요약 정보

Unique

df.column.unique()
  • 유일한 value 추출
dict(enumerate(sorted(df['column'].unqiue())))
  • {0: 'aa',1 :'bb', 2:'cc'} 요런 식으로 결과가 나와 라벨 인코딩 하기 쉬움

isnull

df.isnull()
  • Null 값의 index 반환

추가적으로 sorting, corr, cov 등등 ..

외울 필요는 없고 필요할 때 마다 찾아보는 것을 추천

pd.options.display.max_rows = ??? 

다음 코드로 나오는 행 개수 설정할 수 있음

Groupby

  • SQL groupby 명령어와 같음
  • Split -> Apply -> combine 과정을 거쳐 연산
df.groupby(['기준칼럼1','기준칼럼2'])['적용칼럼'].sum()
  • 다만 이러면 multiindex 구조가 되니
h_index.unstack()
h_index.reset_index()

요렇게 matrix로 풀어줌

split

grouped = df.groupby("기준칼럼")
  • groupby 로 split 된 상태로만 추출 가능
grouped.get_group('그룹네임')
  • 특정 그룹 추출 가능

aggregation

groupeded.agg([np.sum,np.mean])
  • 그룹 별로 여러 함수 적용

Transformation

  • 개별 데이터에 지정
  • Element 마다 group된 행들에게 연산을 적용 시켜줌
score = lambda x: (x-x.mean()) / x.std()
grouped.transform(score)
  • 정규화를 적용 가능

filter

df.groupby('team').filter(lambda x: len(x)>=3)

Prefix

grouped.add_prefix('앞에 붙었으면 하는 글자')

Pivot Table

  • 엑셀에서 보는 그것
df.pivot_table(['값'], index=, columns= , aggfunc = 적용 함수 , fill_value = nan에 넣고 싶은 것 

Crosstab

  • pivot table 과 유사
pd.crosstab(index = 인덱스, columns = 칼럼, values=, aggfunc= 함수)

합치기

Merge

  • SQL에서 merge와 비슷
pd.merge(df_a,df_b, on='기준')
pd.merge(df_a,df_b, left_on='왼쪽 df 기준', right_on = '오른쪽 df 기준')
  • how='inner','right','left','outer'
  • 둘다 겹치게, 오른쪽만, 왼쪽만, 전체 다
  • default는 inner
pd.merge(df_a,df_b, right_index=True, left_index= True
  • 인덱스 기준 합치기
  • 겹치는 칼럼 있으면 이름이 바뀜으로 나중에 수정해야 함

Concat

pd.concat([df_a,df_b],axis=0 or 1)
  • 두 df 가 column 이 동일하다는 전제
profile
세상아 덤벼라

0개의 댓글