넘파이 개요
- 파이썬 선형대수 library
- 루프 없이 빠르게 선형대수 처리 가능
- C++에서 Eigen, Armadillo 같은 lib
- 저수준 언어 기반 호환 API 제공. -> 성능에서 중요한 부분은 C/C++로 작성. 넘파이에서 호출가능
넘파이 배열
- 생성 : arrange, zeros, eyes
- 재배치 : reshape
- 인덱싱 처리 등 내용은 생략
Pandas
- 금융 분석가 웨스 매키니가 만든 데이터 핸들링 라이브러리
- DBMS, Excel의 테이블과 유사한 데이터들을 다룸
- 대표적인 자료구조로 Series와 DataFrame
- Series : 칼람이 하나인 데이터 구조
- DataFrame ; 칼럼이 여러개인 데이터 구조
titanic data 보기
- https://www.kaggle.com/c/titanic/data 에서 다운
- 위치는 현재 작업 경로의 res/에 배치
DataFrame.head()
- 해당 DataFrame의 앞 5개 데이터 확인
DataFrame.info()
- 해당 데이터프레임의 컬럼의 데이터 갯수와 데이터 타입조회
DataFrame.describe()
- 해당 데이터프레임의 기초통계량 조회
Series.value_counts()
- 해당 컬럼의 그룹별 갯수를 카운트
- 다음 경우 3등석이 491, 2등석이 184, 1등석이 216개임을 확인
print(type(df["Pclass"]))
df["Pclass"].value_counts()
데이터 프레임 컬럼 추가
- 다음의 경우 age_0이라는 컬럼이 추가.
- 값은 0으로 지정
df["age_0"] = 0
df.head()
데이터 프레임 컬럼 값 변경
df["age_0"] = df["age_0"] + 20
df.head()
데이터 프레임 열 삭제
- DataFrame.drop(labels=None, axis=0, index=None, columns=None, inplace=False)
- labels : 삭제 컬럼명 지정
- axis : 0인경우 행, 1인경우 열 지정
- inplace : 해당 DataFrame에 적용 여부.
- 나머지는 doc 참조
- 아래의 경우 age_0 열이 삭제된것을 확인
df.drop(labels="age_0", axis=1, inplace=True)
df.head()
데이터프레임 인덱싱 - 1. loc (명칭 기반인덱싱)
- DataFrame.loc[키값, 열이름]
df.loc[3, "Name"]
데이터프레임 인덱싱 - 2. iloc (숫자 기반인덱싱)
- DataFrame.iloc[키, 열]
데이터 프레임 인덱싱 조합
- Pclass >=2 인 경우. 4번째까지 출력
df[df["Pclass"] >= 2][:4]
- Pclass >=2 이고, Survived=1인 경우, 4개 출력
df[(df["Pclass"] >= 2) & (df["Survived"] == 1)][:4]
집계함수 aggregation
- min(), max(), sum(), count()등
print(df.mean())
print(df.count())
print(df["Age"].count())
print(df[["Age","Fare"]].count())
그룹함수 groupby
- DataFrame.groupby(그룹할컬럼명)
-> DataFrameGroupBy 객체 반환
group = df.groupby("Sex")
print(type(group))
- 해당 객체는 집계함수 사용 가능
print(group.count())
group.describe()
- 여러 컬럼으로 그룹핑 가능
group = df.groupby(["Pclass", "Sex"])
group.describe()
결측치 확인 - DataFrame.isnull().sum()
- DataFrame.isnull() 은 모든 행열에서 결측치 여부에 따라 true, false를 반환
- + sum()으로 각열에 대한 결측치들을 합하여 갯수를 알려줌
df.isnull().sum()
결측치 제거 - DataFrame.dropna(axis=None, how=None)
- Axis : axis = 0인 경우 행, axis = 1인경우 열, axis=None이면 행렬 다 적용
- how : how = "any" 결측치가 하나라도 존재하면 제거, how = " all" 전체가 결측치인경우제거
df = df.dropna(axis=0)
df.isnull().sum()
람다식 적용하기
- DataFrame.apply(람다식) 으로 데이터프레임에 함수 적용 가능
df["NameLen"] = df["Name"].apply(lambda x : len(x))
df[["Name","NameLen"]].head()
'인공지능' 카테고리의 다른 글
파이썬머신러닝 - 3. 교차 검증/하이퍼 파라미터탐색 (0) | 2020.11.23 |
---|---|
파이썬머신러닝 - 2. 붓꽃 문제 다루기 (0) | 2020.11.23 |
패턴인식이론 - 1. 간단 (0) | 2020.11.18 |
인공지능 - 7. 게임 트리 (0) | 2020.11.11 |
인공지능 - 6. 탐색 과정 (0) | 2020.11.11 |