1. Pandas
데이터 처리를 위해 가장 인기 있는 라이브러리
대부분의 데이터 세트는 2차원 데이터 (행 X 열)
넘파이보다 훨씬 더 유연하게 핸들링 가능
판다스의 핵심 객체는 DataFrame( 여러 개의 행과 열로 이뤄진 2차원 데이터를 담는 데이터 구조체)
판다스는 DataFrame 으로 로딩할 수 있는 편리한 API를 제공한다.
* 타이타닉 탑승자 데이터 파일 받기
2. pandas 시작
- csv 파일 읽기
import pandas as pd
ti = pd.read_csv(r'C:\test.csv')
print(ti)
#결과
- Data Frame 크기 확인하기
print('DataFrame 크기:', ti.shape)
#결과
DataFrame 크기: (418, 11)
- info
print(ti.info())
- describe
print(ti.describe())
모든 Series 와 DataFrame은 인덱스를 반드시 가진다.
1) 데이터 자료형 변경
DataFrame 은 기본적으로 2차원 데이터이다.
오른쪽에 있는 자료들을 DataFrame 로 만다는 경우 pd.DataFrame를 이용한다.
pd.to_dict()
한번에 DataFrame 를 dict 로 pd.to_dict('list')라는 코드롤 pd.values.tolist()대신 사용할 수 있다.
2) 생성, 수정, 삭제
대괄호 내부에 기존에 존재하는 column 명이 들어가면 수정
대괄호 내부에 기존에 존재하지 않은 column 명이 들어가면 생성
#새로운 열을 생성하는 경우 상수 대입 가능
df['new_col']=0
#기존에 존재하는 열(Age)을 가공하는 방식으로 새로운 열을 생성
df['Age_by_10']=df['Age']*10
#기존에 존재하는 복수개의 열을 가공하는 방식으로 새로운 열 생성
df['A_B']=df['A']+df['B']+100
3) 데이터 삭제
drop() 메서드를 이용
- labels: 삭제하고자 하는 인덱스 column 명 입력
- axis: 삭제를 행 방향으로 할지 유무, 열 방향으로 할지 정해주는 파라미터
- inplace: 원본 데이터를 행을 삭제한 데이터로 업그레이드할지(T), 유지(F) 정하는 파라밑
4) 인덱스
- DataFrames, series를 고유하게 식별하게 만들어주는객체
- df.index/series.index : 인덱스 객체만 추출할 수 있다.
- reset_index(): 새롭게 인덱스를 연속 숫자형으로 할당한다.
5) 데이터 설렉션 및 필터링
DataFrame['컬럼명']
판다스 객체에서 대괄호 안에 column 명만 들어가는 것이 아니기 때문에 대괄호 안에 column 명만 넣어주는것이 혼동을 막는다.
불린 인덱싱은 가능하다.
titanic_df[titanic_df['Pclass']==3]
6) 데이터 추출
ix [] 연산자: 넘파이의 [] 역할과 동일
이를 대신할
.loc [ ] : 칼럼 명칭기반 인덱싱
.iloc[ ] : 칼럼 위치기반 인덱싱
df.loc[ ] : 행과 열 값으로 integer 또는 integer 형의 슬라이싱 팬시 리스트 값을 입력
df.iloc [ ] : 행 위치에는 DataFrame index 값을, 열 위치에는 column 명을 입력한다.
loc [ ] 에 슬라이싱 기호를 사용할 때는 (시작값)~(종료값)까지 표현된다.
7) 불린 인덱싱
iloc [ ] . loc [ ] 보다 불린 인덱싱으로 데이터 가져오는 경우가 많다.
# 두 코드의 동일한 기능을 가지고 있다.
titanic_df[titanic_df['Age']>60][['Name'],['Age']]
titanic_df.loc[titanic_df['Age'] > 60, ['Name'],['Age']]
titannic_df [(조건)&(조건)&(조건)]
cond1 = 조건1, cond2=조건2, cond3=조건3
8) 정렬, aggregation 함수, GroupBy함수
DataFrame /series 정렬을 위해 sort_values()함수를 사용한다.
sort_values()에서 주요 파라미터는 by / ascending / inplace 이다.
sort_values(by =[ ' 칼럼명' ]
9) Aggregation 함수
min(), max(), sum(),count() 등의 함수를 의미한다.
DataFrame.count() 같이 DataFrame.Aggregation함수를 사용하면, 각 column 에 대해서 해당 연산이 적용된다.
특정 column만 연산이 필요한 경우 [ ] (대괄호) 를 이용한다.
titanic_df [['Age','Fare']].mean()
10) Group By 함수
by 파라미터의 인자로 들어가는 column의 값들에 따라 분류한다.
Aggregation 함수와 같이 쓰인느 경우가 많다.
titanic_groupby = titanic_df.groupby('Pclass').count()
11) Null 데이터 처리
NaN 으로 표현을 하기도 한다.
- NaN 여부 확인: isna( )
모든 값을 True / False 로 알려준다.
.sum( ) 함수를 추가하면 column 마다 NaN 의 개수를 확인하는 것이 가능하다.
- NaN 값 대체: fillna( )
해당 column 의 NaN데이터를 채워넣는다.
titanic_df['Cabin'] = titanic_df['Cabin'].fillna(C000')
12) Apply / Lambda 함수
일반 함수를 쓰면 되지 왜 임시함수인 lambda함수를 만들어서 사용하는가?
- 함수를 만들어어야 하는데, 사용빈도나 비중이 작아 애매한 경우
연산이 복잡해서 함수를 써야하는데 반복문 함수 등이 마구 섞여 사용되지는 않아 일반함수를 만들어 사용하기에는 비효율적일때 lambda함수를 사용한다.
'Data > 머신러닝' 카테고리의 다른 글
[파이썬머신러닝완벽가이드]03.평가(2) (0) | 2023.05.13 |
---|---|
[파이썬머신러닝완벽가이드]03.평가(1) (0) | 2023.05.06 |
[파이썬머신러닝완벽가이드]02.사이킷런으로 시작하는 머신러닝(2) (0) | 2023.04.28 |
[파이썬머신러닝완벽가이드]02.사이킷런으로 시작하는 머신러닝(1) (0) | 2023.04.20 |
[파이썬머신러닝완벽가이드]01.파이썬 기반의 머신러닝과 생태계 이해: 넘파이 (0) | 2023.04.13 |