Milky's note

[K-Digital] 자주쓰이는 pandas 정리 본문

Python/요약 정리

[K-Digital] 자주쓰이는 pandas 정리

밀뿌 2022. 5. 24. 18:01

판다스 요약 정리

1. 결측값

 
# 라이브러리를 불러오기
import pandas as pd
import numpy as np
 
# 결측값 확인
df.isnull()
 
# 컬럼별로 결측값 갯수 확인
df.isnull().sum()

# null값이 하나라도 있으면 출력
df[df.isnull().any(axis=1)]
 
# 결측값 삭제 (행)
df.dropna()

# 결측값 삭제 (열)
df.dropna(axis=1)
# 결측값 채우기(값)
df.fillna('값')

# 결측값 채우기(뒤의 값)
df.fillna(method='bfill')

# 결측값 채우기(앞의 값)
df.fillna(method='ffill')

# 결측값 채우기(평균) -> 숫자형 타입 컬럼만 가능
df.fillna(df.mean())

 

2. 데이터 타입 변경

 
# 데이터 컬럼 타입 변경
df['컬럼'].astype(int)
 
# 데이터 타입 변경(dic 형태)
df.astype({'컬럼' : 'datatype'})
 
# datetime 데이터 타입 변경
df['컬럼'] = pd.to_datetime(df['컬럼'], format="%y-%m-%d")

 

3. 데이터 프레임 컬럼 추가, 삭제

 

# 컬럼의 추가는 df에 컬럼 이름을 만들어준 뒤 넣고 싶은 값들을 대입
df['컬럼'] = 추가할 컬럼 리스트 혹은 연산
 
# 컬럼(시리즈)들의 연산이 가능
df['f'] = df['a'] + df['b']
 
# 컬럼 삭제
df.drop(['컬럼'], axis=1)

# index를 통한 컬럼 삭제
df.drop(df.index[:4])

 

4. 함수 생성(apply, map)

 
# 함수 생성 후 적용(apply)
def function(param):
  ..
  ..
  return result

df['컬럼'].apply(function)
 
# map 적용(apply 보단 쉽게, 람다함수도 가능)
map = {'a': 'b'}

df['컬럼'].map(map)

# 람다함수 적용
df['컬럼'].map(lambda x : x+1)

 

5. 데이터 프레임 간의 결합

 

# concate
pd.concat([df1,df2]) # 행 기준 결합
pd.concat([df1,df2], axis=1) # 열 기준 결합
 
# merge
# sql문의 join처럼 사용이 가능, how의 옵션은 left, right, outer, inner 등이 있음
# on은 기준이 되는 컬럼

pd.merge(df1, df2, how='left', on='컬럼')

# 다음과 같이도 사용 가능
pd.merge(df1, df2, left_on='컬럼', right_index=True)

 

6. group by

 

# group by는 연산 함수 없이는 사용하는 의미가 없음
# 컬럼1= group by로 정렬할 컬럼
# 컬럼2= 연산을 할 컬럼

df.groupby(by=['컬럼1'])['컬럼2'].sum()

# by는 생략이 가능
df.groupby('컬럼1')['컬럼2'].sum()
 
# 여러가지 연산도 한 번에 가능

df.groupby('컬럼1')['컬럼2'].agg([sum,len])

 

7. pivot table

 
pd.pivot_table(df, value='컬럼', index=['컬럼'], columns='컬럼')

# 파라미터들은 생략하고 순서에 맞게 컬럼을 써주어도 가능
 
# 데이터프레임 기준으로 pivot table도 생성 가능

df.pivot(index=['컬럼'], columns='컬럼')

 

8. index 재설정

 

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

# 인덱스를 새롭게 설정해줌
 
# 위 방식을 사용하면 기존의 index가 새로운 컬럼으로 생성이 됨
# 단순한 숫자 index를 설정하려면 아래의 방식이 깔끔하게 설정됨

df.index=range(0, len(df))
 
# 문자형 컬럼을 index로 설정

df.set_index('컬럼')

 

9. 데이터 값이 있는 지 확인

 
# 데이터 프레임이나 컬럼에 해당 값이 있는 지 확인 (완전 일치)

df.isin(['값', '값', '깂'])
df['컬럼'].isin(['값', '값', '깂'])
 
# 찾으려는 값이 완전 일치하지 않아도 sql문의 like처럼 찾을 수 있음

df['컬럼'].str.contains("문자열")
 
# query 함수 : 조건에 맞는 데이터를 보려고 할 때 사용
# df[df["컬럼"] == '값']  과 같은 형태로 사용할 때보다 타이핑 수도 적고, 속도도 더 빠름

df.query("컬럼 == '값'")

 

기타

 
# 데이터 프레임으로 데이터 불러올 때 숫자컬럼 천단위 컴마 제거

df = pd.read_csv('파일', thousands=',')
 
# 데이터 프레임으로 데이터 불러올 때 맨 위 행 제거

df = pd.read_csv('파일', skiprows=[0])
 
# 95 백분위수 구하기
# quantile(0,95)를 가지는 수

# 기본 = 2사분위수 = median()
df['컬럼'].quantitle()

# quantitle(0) = 최소 = min()
df['컬럼'].quantitle(0)

# quantitle(1) = 최대 = max()
df['컬럼'].quantitle(1)
Comments