Pandas(데이터 처리 라이브러리)
- 파이썬에서 사용하는 데이터 분석 라이브러리
- 행과 열로 이루어진 2차원 데이터를 효율적으로 가공할 수 있는 다양한 기능 제공
케글, 타이타닉 데이터, pandas 형식 및 파일 불러오기
pandas(데이터 처리 라이브러리)
- 파이썬에서 사용하는 데이터 분석 라이브러리
- 행과 열로 이루어진 2차원 데이터를 효율적으로 가공할 수 있는 다양한 기능 제공
kaggle, titanic 데이터 설명
- Kaggle(캐글)은 데이터 분석 경진 대회를 주최하는 플랫폼
- 경진대회는 회사의 과제, 연구, 주요 서비스를 위해 분석이 필요한 데이터를 제공해서 주최
- 실제 기업 데이터를 다룰 수 있음
- 대기업 경력직을 채용할 때 면접 문제로 사용됨
- Titanic 데이터는 Kaggle(캐글)의 대표적인 데이터 분석 입문용 데이터 셋
pandas 데이터 형식
- pandas는 시리즈(Series)와 데이터프레임(DataFrame)이라는 구조화된 데이터 형식을 제공
시리즈(Series)
- 시리즈는 데이터가 순차적으로 나열된 1차원 배열의 형태
- index와 value가 일대일 대응 관계
딕셔너리 -> 시리즈
dict_data = {'a':1, 'b':2, 'c':3}
series_data = pd.Series(dict_data)
print(type(series_data))
print(series_data)
리스트 -> 시리즈
list_data = ['2020-10-11', 3.14, 'ABC', 100, True]
series_data = pd.Series(list_data)
print(type(series_data))
print(series_data)
데이터프레임(DataFrame)
- 데이터프레임은 행과 열로 만들어지는 2차원 배열의 형태
- 데이터프레임의 열은 각각의 시리즈 객체
dict_data = {'c0':[1,2,3], 'c1':[4,5,6], 'c2':[7,8,9], 'c3':[10,11,12], 'c4':[13,14,15]}
df = pd.DataFrame(dict_data)
print(type(df))
print(df)
pandas 파일 불러오기
- pandas는 다양한 형태의 외부 파일을 읽어와서 데이터프레임으로 변환하는 함수를 제공
from google.colab import drive
titanic = pd.read_csv('/content/titanic.csv')
pandas 데이터 내용 확인
- .columns : 컬럼명 확인
- .head() : 데이터의 상단 5개 행 출력
- .tail() : 데이터의 하단 5개 행 출력
- 괄호 () 안에 숫자를 넣으면 그 숫자만큼 행을 출력
- .shape : (행, 열) 크기 확인
- .info() : 데이터에 대한 전반적인 정보 제공
- 행과 열의 크기
- 컬럼명
- 컬럼별 결측치
- 컬럼별 데이터 타입
- .type() : 데이터 타입 확인
columns
print(titanic.columns)
head
titanic.head()
tail
titanic.tail()
shape
titanic.shape
info
titanic.info()
type
type(titanic)
pandas 특정 열 선택
- 열 1개 선택 = 시리즈(Series) 객체 반환
- 데이터프레임의 열 데이터를 1개만 선택할 때는 2가지 방ㅅ이
- 대괄호([]) 안에 열 이름을 따옴펴 ("")와 함께 입력
- 도트(.) 다음에 열 이름을 입력
- 열 n개 선택 = 데이터프레임(DataFrame) 객체 반환
- 데이터프레임의 열 데이터를 n개 선택할 때는 1가지 방식
- 2중 대괄호([[]]) 안에 열 이름을 따옴표 ("")와 함께 입력
- 만약 열 1개를 데이터프레임 객체로 추출하려면 2중 대괄호 사용
대괄호([])
names = titanic["Name"]
names.head()
도트(.)
names = titanic.Name
names.head()
2중 대괄호([[]])
passenger = titanic[['Sex', 'Age']]
passenger.head()
pandas 데이터 필터링
- 불리언(Boolean) 인덱싱
- .isin()
- 각각의 요소가 데이터프레임 또는 시리즈에 존재하는지 파악하여 True/False 값 반환
- 불리언 인덱싱 + .isin()
- .isna()
- 결측 값은 True 반환, 그 외에는 False 반환
- .notna()
- 결측 값은 False 반환, 그 외에는 True 반환
print(passenger["Age"] > 35)
불리언(Boolean) 인덱싱
above35 = passenger[passenger["Age"] > 35]
above35.head()
isin
titanic['Pclass'].isin([1])
class1 = titanic[titanic['Pclass'].isin([1])]
class1.head()
age2040 = passenger[passenger["Age"].isin(np.arange(20,41))]
age2040.head
isna
passenger["Age"].isna()[0:7]
ages = passenger[passenger["Age"].isna()]
ages.head(2)
결측치 제거, 데이터 통계, 행과 열 추가 및 삭제, 열 이름 수정
pandas 결측치 제거
- .dropna(axis==0) == .dropna()
- .dropna(axis==1)
titanic.head(3)
dropna
titanic.dropna(axis=0).head(3)
titanic.dropna(axis=1).head(3)
pandas 이름과 인덱스로 특정 행과 열 선택
loc
name35 = titanic.loc[titanic["Age"] > 35, ['Name', 'Age']]
name35.head()
iloc
name35.iloc[[1,2,3], 0] = 'No name'
name35.head()
pandas 데이터 통계
- .mean() : 평균값
- .median() : 중앙값
- .describe() : 다양한 통계량 요약
- mean, std, min, 25%, 50%, 75%, max
- .agg() : 여러 개의 열에 다양한 함수를 적용
- 모든 열에 여러 함수를 매핑 : group객체.agg([함수1, 함수2, 함수3, ...])
- 각 열마다 다른 함수를 매핑 : group객체.agg({'열1':함수1, '열2':함수2, ...})
- .groupby() : 그룹별 집계
- .value_counts() : 값의 개수
mean
print(titanic['Age'].mean())
print(titanic["Age"].median())
describe
print(titanic[["Age", "Fare"]].describe())
agg
print(titanic.agg({"Age" : ["min", "max", "median", "std"],
"Fare" : ["min", "max", "mean", "median"]}))
groupby
titanic.groupby(["Sex", 'Pclass'])[["Age", "Fare"]].mean()
survive = titanic.groupby("Sex")['Survived'].mean()
(survive * 100).head()
value_counts
titanic["Pclass"].value_counts()
pandas 행과 열 추가와 삭제
- 행 추가
- DataFrame.loc['새로운 행 이름'] = 데이터 값
- 열 추가
- DataFrame 객체['츠가하려는 열 이름'] = 데이터 값
- 행 삭제
- DataFrame.drop(index,axis=0)
- 열 삭제
- DataFrame.drop(변수명, axis = 1)
행 추가
newRow = titanic.iloc[0,:]
titanic.loc[891] = newRow
titanic
열 추가
titanic['3Pclass'] = titanic["Pclass"] * 3
행 삭제
titanic = titanic.drop(np.arange(880,890), axis = 0)
열 삭제
titanic = titanic.drop('3Pclass', axis = 1)