판다스의 이해
판다스 (Pandas)
판다스는파이썬에서 데이터 처리를 위해 존재하는 가장 인기 있는 라이브러리입니다.
일반적으로 대부분의 데이터 세트는 2 자원 데이터입니다.
즉, 행 (Row) X 열 (Column) 로 구성돼 있습니다(RDBMS의 TABLE 이나 엑셀의 시트를 떠올리면 됩니다).
행과 열의 2 자원 데이터가 인기 있는 이유는 바로 인간이 가장 이해하기 쉬운 데이터 구조이면서도
효과적으로 데이터를 담을수 있는 구조이기 때문입니다. 판다스는 이저럼 행과 열로 이뤄진
2차원 데이터를효율적으로 가공/ 처리 할수 있는 다양하고 훌륭한 기능을 제공합니다.
판다스의 주요 구성 요소 - DataFrame, Series, Index
기본 API
• read_csv( )
• head( )
• shape
• info()
• describe()
• Value_counts()
• Sort_values()
DataFrame과 리스트, 딕셔너리, 넘파이 ndarray 상호 변환
DataFrame 데이터 삭제
DataFrame 의 drop()
DataFrame.drop(labels=None, axis=O, index=None, columns=None, level=None, inplace=False, errors= 'raise')
• axis: DataFrame 의 로우를 삭제할 때는 axis=0, 컬럼을 삭제할 때는 ax i s=1 으로 설정.
• 원본 DataFrame은 유지하고 드롭된 DataFrame을 새롭게 객제 변수로 받고 싶다면
inplace = False로 설정 (디폴트 값이 False 임).
예 titanic_drop_df = titanic_df.drop('Age_0', axis=1, inplace=False )
• 원본 Data Frame 에 드롭된 결과등 적용할 경우에는 inplace=True 등 적용.
예 : titanic_df.drop('Age_0', axis= 1, inplace=True )
• 원본 DataFrame 에서 드롭된 DataFrame을 다시 원본 DataFrame 객채 변수로 할당하면
원본 DataFrame 에서 드롭된 결과를 적용할 경우와 같음
(단, 기존 원본 DataFrame 객제 변수는 메모리에서 추후 제거됨).
예: titanic_df = titanic_df.drop('Age_0', axis=1, Inplace=False )
Index
• 판다스의 Index 객체는 RDBMS의 PK(Primary Key) 와 유사하게 DataFrame, Series의 레코드를 고유하게 식별하는
객체입니다.
• DataFrame, Series 에서 Index 객체만 추출하려면 DataFrame.index 또는 Series.index 속성을 통해 가능합니다
• Series 객체는 Index 객체를 포함하지만 Series 객체에 연산 함수를 적용할 때 Index는 연산에서 제외됩니다.
Index는 오직 식별용으로만 사용됩니다.
• DataFrame 및 Series 에 reset_index( ) 메서드를 수행하면 새롭게 인덱스를 연속 숫자형으로 할당하며 기존 인덱스는 'index' 라는 새로운 컬럼명으로 추가합니다
데이터 셀렉션 및 필터
데이터 셀렉션 및 필터링 - ix, loc, iloc
• 명징 (Label) 기반 인덱싱은 컬럼의 명징을 기반으로 위지를 지정하는 방식입니다. '컬럼 명 ' 같이
명칭으로 열 위지를 지정하는 방식입니다
• 위지 (Position) 기반 인덱싱은 0을 출발점으로 하는 가로죽, 세로죽 좌표 기반의 행과 열 위지를 기반으로
데이터를 지정합니다. 따라서 행, 열 위지값으로 정수가 입력됩니다
하지만 ix는 현재 사용하지 않고 있으므로 배우지 않는다!
명징 기반과 위 기반 인덱싱 구분
불린 인덱싱 (Boolean indexing)
위지기반 명칭기반 인덱싱 모두 사용할 필요없이 조건식을 [ ] 안에 기입하여 간편하게 필터링을 수행.
titanic_boolean = titanic_df[titanic_df['Age'] > 6이
Aggregation 함수
• sum(), max(), min(), count() 등의 함수는 DataFrame/Series 에서 집합 (Aggregation) 연산을 수행.
• DataFrame의 경우 DataFrame에서 바로 aggregation 을 호출할 경우 모든 컬럼에 해당 aggregation 을 적용
axis에 따른 Aggregation 함수 결과
DataFrame Group By
• DataFrame은 Group by 연산을 위해 groupby( )메소드를 제공.
• groupby( ) 메소드는 by 인자로 group by 하려는 컬럼명을 입력 받으면 DataFrameGroupBy 객체를 반환
• 이렇게 반환된 DataFrameGroupBy 객제에 aggregation 함수를 수행.
결손 데이터 (Missing Data) 처리하기
• isna( ) : DataFrame 의 isna( ) 메소드는 주어진 컬럼값들이 NaN 인지 True/False 값을 반환합니다[NaN 이면 True]
• fillna(): Missing 데이터를 인자로 주어진 값으로 대제합니다.
파다스 apply lambda - 파이썬 lambda 식 이해
apply lambda식 으로 데이터 가공
• 판다스는 apply 함수에 Lambda식을 결합해 DataFrame 이나 Series의 레코드별로 데이터를 가공하는 기능을 제공합니다. 판다스의 경우 컬럽에 일괄적으로 데이터 가공을 하는 것이 속도 면에서 더 빠르나 복잡한 데이터 가공이 필요할 경우 어쩔 수 없이 apply lambda를 이용합니다.
판다스 Summary
• 2차원 데이터 핸들링을 위해서는 판다스를 사용하십시요.
• 판다스는 매우 편리하고 다양한 데이터 처리 API 를 제공하지만(조인, 피벗/언피벗, SQL like API 등),이를 다 알기에는 많은 시간과 노력이 필요합니다.
• 지금까지 언급된 핵심 사항에 집중하고, 데이터 저리를 직접 수행해 보면서 문제에 부딛 질 때마다 판다스의 다양한 API 를 찾아서 해결해 가면 판다스에 대한실력을 더욱 향상 시킬 수 있을 것입니다.
'Machine Learning > 머신러닝 완벽가이드 for Python' 카테고리의 다른 글
ch.1.5 정리 (0) | 2022.10.05 |
---|---|
ch 1.4 판다스(실습) (0) | 2022.10.04 |
ch1.3 넘파이(실습) (0) | 2022.10.04 |
ch.1.3 넘파이(이론) (0) | 2022.10.04 |
인공지능/머신러닝/딥러닝 개괄(9/28) (0) | 2022.09.28 |