728x90
반응형
벼락치기 혹은 판다스 기본 함수들을 짚고 넘어갈 수 있도록 필수적인 함수들을 정리했습니다!
df는 DataFrame을 의미하며, 자세한 응용사항은 판다스 공식 홈페이지를 통해 파악해보면 좋을 것 같습니다
1. 수치연산, 조회, 처리 관련 함수
함수명 | 수행기능 | 예시 (Source: pandas.pydata) |
df.max, df.min | min, max 값 반환 (Series도 가능) | pd.Series([4, 2, 0, 8], name='legs').max |
df.idxmax, df.idxmin | 최대/최소 값의 레이블 반환 | >>> df.idxmax() consumption Wheat Products co2_emissions Beef dtype: object |
df.sum, df.cumsum | 합, 누적합 반환 (default로 NA 제외) | pd.Series([2, 5, -1, 0]).cummax() |
df.mean, df.median | 평균, 중앙값 반환 | |
df.var, df.std | 분산, 표준편차 반환 | >>> df.var() age 352.916667 height 0.056367 |
df.count() | 행의 개수 | >>> df.count() Person 5 Age 4 Single 5 dtype: int64 |
df.describe | 통합된 정보 (count, 사분위수, min/max 등) 반환 |
>>> s = pd.Series([1, 2, 3]) >>> s.describe() count 3.0 mean 2.0 std 1.0 min 1.0 25% 1.5 50% 2.0 75% 2.5 max 3.0 dtype: float64 |
df.replace | 값 변경 | df.replace([0, 1, 2, 3], 4) df.replace({0: 10, 1: 100}) df.replace({'A': 0, 'B': 5}, 100) |
df.rename | 컬럼명/인덱스명 변경 | df.rename(columns={"A": "a", "B": "c"}) df.rename(index={0: "x", 1: "y", 2: "z"}) df.rename(str.lower, axis='columns') |
df.all, df.any | 참/거짓 여부 반환 | >>> df.any() A True B True C False dtype: bool |
df.duplicated | 중복 여부 조회 | >>> df.duplicated() 0 False 1 True 2 False 3 False 4 False dtype: bool |
df.drop_duplicates | 중복된 행 제거 | df.drop_duplicates(subset=['brand']) df.drop_duplicates() |
df.apply(함수) | 함수 적용 | df.apply(np.sqrt) df.apply(np.sum, axis=0) |
df.eval | 문자열 형태의 연산 | df.eval('A + B') |
df.isin | 값의 존재여부 확인 | df.isin([0, 2]) df.isin({'num_wings': [0, 3]}) |
df.nunique | unique 값의 개수 반환 (series에도 적용가능) |
>>> df = pd.DataFrame({'A': [4, 5, 6], 'B': [4, 1, 1]}) >>> df.nunique() A 3 B 2 |
df.query | 조건식을 활용한 조회 | df = pd.DataFrame({'A': range(1, 6), 'B': range(10, 0, -2), 'C C': range(10, 5, -1)}) df.query('B == `C C`') df.query('A > B') |
df['column'].between(start,end) | start과 end값 사이의 범위 포함 여부 | s.between(1, 4) s.between('Anna', 'Daniel') |
df['column'].value_counts() | 각 값의 빈도수 반환(nan 제외) | >>> df.value_counts() num_legs num_wings 4 0 2 2 2 1 6 0 1 df.value_counts(normalize=True) df.value_counts(sort=False) |
df['column'].str.함수 | 문자열 함수 적용 | >>> s.str.replace("_", "") 0 AStrSeries dtype: object s.str.contains(pat = 'aa') s.str.contains(pat='[a-z]',regex=True) |
2. 날짜 관련 함수
pd.to_datetime('날짜',format=형식) | 문자열 형식의 날짜를 datetime type으로 정해진 형식으로 변환 | pd.to_datetime('2022/10/06',format='%Y년%m월%d일'_ |
pd.date_range('날짜','날짜',periods=n,freq='D') | 정해진 기간 내의 동일한 시간구간으로 나뉘어진 시간 datetimeindex 반환 | pd.date_range(start='1/1/2018', end='1/08/2018') DatetimeIndex(['2018-01-01', '2018-01-02', '2018-01-03', '2018-01-04', '2018-01-05', '2018-01-06', '2018-01-07', '2018-01-08'], dtype='datetime64[ns]', freq='D') |
3. 데이터프레임 병합
1) pd.merge
공통컬럼이 존재할 때 | pd.merge(df1,df2,how='inner/left/outer',on='column') |
공통컬럼 외의 컬럼을 기준으로 merge 할 때 | pd.merge(df1,df2,how='inner/left/outer',left_on="df1컬럼명",right_on = 'df2컬럼명') |
인덱스를 활용할 때 | pd.merge(df1,df2,left_on='index',right_on='index') |
왼/오 인덱스를 join key로 설정하고 싶을 때 | pd.merge(df1,df2, right_on='index',left_index = True) pd.merge(df1,df2, rleft_on='index',right_index = True) |
728x90
반응형
'Data Science > Pandas, Numpy' 카테고리의 다른 글
막대그래프에 레이블 달기 (plt.text) (0) | 2022.10.12 |
---|---|
DataFrame 열(Columns) 비교하기 (train,test 피처 차이 비교) (0) | 2022.10.12 |
[ Pandas ] DataFrame 컬럼 추가 / 삭제 방법 (1) | 2022.10.04 |
[ Pandas ] Filter 함수 적용하기 (0) | 2022.10.04 |
[ Pandas ] Pandas.cut, qcut 개념 및 차이 정리 (0) | 2022.10.02 |
댓글