본문 바로가기
데이터 분석

Pandas DataFrame - CRUD

by ma_ro 2020. 3. 1.

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

댓글