Data Frame
-
sereis가 2차원으로 확대된 것이 DataFrame이라고 볼 수 있다.
-
때문에 인덱스가 row와 column 2가지로 구성되어 있다.
-
row는 개별 데이터
-
column은 개별 속성
기본 함수
-
head()
-
tail()
-
shape
- row, column 개수 확인
-
describe()
- 숫자형 데이터의 통계치 계산
-
info()
- 각 컬럼별 데이터 타입, 각 아이템의 개수 등 출력
- 보통 null값 여부, 빈 값 여부를 확인
-
index
- 인덱스 범위를 나타냄
- 인덱스를 지정해줄수도 있다. 이때 ndarray, list 모두 사용 가능
- dataFrame.index = ndarray 객체 or list 객체
-
colums
- 컬럼 명을 명시
생성
dict 생성
dict의 경우 key값이 컬럼명이 된다.
data = {'a' : [1, 2, 3], 'b' : [4, 5, 6], 'c' : [10, 11, 12]}
pd.dataFrame(data, index=[0, 1, 2])
a b c
0 1 4 10
1 2 5 11
2 3 6 12
Series 생성
series의 경우 인덱스가 컬러명이 된다.
a = pd.Series([100, 200, 300], ['a', 'b', 'd'])
b = pd.Series([101, 201, 301], ['a', 'b', 'k'])
c = pd.Series([110, 210, 310], ['a', 'b', 'c'])
pd.dataFrame([a, b, c], index=[100, 101, 102])
a b d k c
100 100.0 200.0 300.0 NaN NaN
101 101.0 201.0 NaN 301.0 NaN
102 110.0 210.0 NaN NaN 310.0
csv파일 생성
csv파일을 읽어오면 Dataframe으로 생성된다.
dataFrame = pd.read_csv('./train.csv')
read_csv
- sep - 각 데이터 값을 구별하기 위한 구분자(separator) 설정
- header - header를 무시할 경우, None 설정
- index_col - index로 사용할 column 설정
- usecols - 실제로 dataframe에 로딩할 columns만 설정
조회
dataFrame['컬럼명']
원하는 컬럼명만 선택할 수 있다.
dataFrame['Survived']
#리턴 타입 Series
dataFrame[['Survived', 'Name', 'Age', 'Embarked']]
#리턴 타입 DataFrame
dataFrame['슬라이싱']
기본적으로 컬럼 선택이나, 슬라이싱의 경우 row 선택이 가능하다.
dataFrame[7:10]
dataFrame.loc[인덱스] , dataFrame.iloc[zero인덱스]
- 슬라이싱 외에 row 선택은 loc와 iloc를 사용한다.
- loc
- 인덱스로 조회
- 컬럼명 사용가능
- iloc
- zoro 인덱스로 조회
- 컬럼명이 아닌 컬럼 순서 인덱스로 조회
dataFrame.loc[986]
dataFrame.loc[[986, 100, 110, 990]]
dataFrame.iloc[[0, 100, 200, 2]]
dataFrame.loc[[986, 100, 110], ['Name', 'Sex', 'Age']]
dataFrame.iloc[[101, 100, 200, 102], [1, 4, 5]]
dataFrame[불리언 시리즈]
class_ = dataFrame['Pclass'] == 1
age_ = (dataFrame['Age'] >= 30) & (dataFrame['Age'] < 40)
# 컬럼명을 하나만 쓰면 Series 타입으로 리턴이 되고 조건이 입력되었기에 불리언 시리즈로 리턴이 된다.
dataFrame[class_ & age_]
# 불리언 시리즈가 입력되면 True인 row만 반환한다.
추가
dataFrame['추가 컬럼명']
dataFrame['Age_double'] = dataFrame['Age'] * 2
dataFrame['Age_tripple'] = dataFrame['Age_double'] + dataFrame['Age']
dataFrame.insert( 인덱스 위치, 추가 컬럼명, 컬럼 )
dataFrame.insert(3, 'Fare10', dataFrame['Fare'] / 10)
# 4번째 위치에 'Fare10'이란 이름의 컬럼이 'Fare'/10의 컬럼 데이터로 들어감
삭제
dataFrame.drop('컬럼명')
dataFrame.drop('Age_tripple', axis=1)
# axis = 1 은 컬럼 기준
train_data.drop(['Age_double', 'Age_tripple'], axis=1)
# 여러 컬럼 선택 가능
train_data.drop(['Age_double', 'Age_tripple'], axis=1, inplace=True)
# inplace=True 는 원본 데이터 변경
'데이터 분석' 카테고리의 다른 글
Pandas DataFrame - 데이터전처리 (0) | 2020.03.01 |
---|---|
Pandas Series (0) | 2020.03.01 |
Numpy Broadcasting (0) | 2020.02.29 |
Numpy 기본 함수 (0) | 2020.02.29 |
Numpy ndarray shape 변경 (0) | 2020.02.29 |
댓글