728x90

넘파이 개요

- 파이썬 선형대수 library

- 루프 없이 빠르게 선형대수 처리 가능

- C++에서 Eigen, Armadillo 같은 lib

- 저수준 언어 기반 호환 API 제공. -> 성능에서 중요한 부분은 C/C++로 작성. 넘파이에서 호출가능

넘파이 배열

- 생성 : arrange, zeros, eyes

- 재배치 : reshape

- 인덱싱 처리 등 내용은 생략

Pandas

  • 금융 분석가 웨스 매키니가 만든 데이터 핸들링 라이브러리
  • DBMS, Excel의 테이블과 유사한 데이터들을 다룸
  • 대표적인 자료구조로 Series와 DataFrame
  • Series : 칼람이 하나인 데이터 구조
  • DataFrame ; 칼럼이 여러개인 데이터 구조

www.kaggle.com/c/titanic/data

titanic data 보기

 

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()

300x250

+ Recent posts