-
[python] [pandas] index 활용하기Data miner/Development log 2020. 10. 15. 16:42728x90
- Dataframe의 index는 데이터의 로우와 칼럼에 대한 이름 등을 저장하는 객체이다.
보통 특별히 index값을 정하지 않으면, 0부터의 순차적인 정수값을 가진다. 정수값뿐만이 아니라, 문자열의 값도 가질 수 있다.
dataframe.index # Index([0,1,2, ... , '날짜', '2020-10-15')
- Index 가장 일반적인 index 객체, 파이썬의 numpy 배열 형식
- MultiIndex 단일 축에 여러 단계의 색인을 표현하는 계층적 색인 객체. 튜플의 배열과 유사
- DatetimeIndex 나노초 타임스태프를 저장
- PeriodIndex 기간 데이터에 대한 Index
- 한번 설정한 색인은 변경할 수 없다.
dataframe.index[0] = 'new index value' #TypeError가 발생!
- 색인 기능으로 특정 로우(행)들을 index로 슬라이싱해서 지울 수 있다. dataframe의 drop함수를 사용하며, 인자로 삭제할 행의 index를 정보를 넣어주면 된다. 아래 코드의 예시는 정수로 인덱싱된 dataframe의 136번 부터 이후의 index값을 지워준다는 코드다.
dataframe.drop(dataframe.index[136:])
- dataframe의 특정 행의 컬럼값들을 보고자 할 때, 특정 행의 위치를 안다면 dataframe.iloc[i]를 사용하며,
특정 행의 색인 값을 알고 있다면 dataframe.loc['색인값']을 사용한다. 다만, dataframe.iloc[i]을 사용할 때, 첫번째 행의 위치는 0이기 때문에 5번째 행의 정보가 궁금하다면 5-1=4로 검색해야 한다. dataframe.iloc['n번째 행'-1]
mydict = [{'a': 1, 'b': 2, 'c': 3, 'd': 4}, {'a': 100, 'b': 200, 'c': 300, 'd': 400}, {'a': 1000, 'b': 2000, 'c': 3000, 'd': 4000 }] df = pd.DataFrame(mydict) print(df) a b c d 0 1 2 3 4 1 100 200 300 400 2 1000 2000 3000 4000 df.iloc[0] #첫번째 행의 값을 보고자 할 때 a 1 b 2 c 3 d 4 df.iloc[[,]] #복수의 행의 값을 보고자 할 때는 리스트 형태로 값을 iloc안에 넣어준다.
- 이미 존재하는 dataframe에 새로운 행을 추가하고자 할 때, 아래의 코드를 사용한다. ignore_index는 이전 dataframe의 index와 상관없이 0,1,2,... 로 정수형태로 인덱싱된다. ignore_index=False로 사용하고자 할 때에는 Series의 자료형 형태로 값을 넣어줘야 하며, 해당 Series는 이름을 가지고 있어야 한다.
#append하고자 하는 dataframe의 index를 유지하지 않을 경우 new_row = {'a':500, 'c':400} #<- 새롭게 추가할 행에 값을 지정해서 넣고자 할 때, dic형태로 '특정 컬럼' : '값'의 형태로 넣는다. df = df.append(new_row, ignore_index=True) #append하고자 하는 dataframe의 index를 유지하고자 할 경우 new_row = {'a':500, 'c':400} new_row = pd.Series(new_row, name='something name') df = df.append(new_row, ignore_index=False)
- 재색인 할 수 있다.
df = df.reindex([새로운 index순서를 포함한 리스트를 넣는다]) #만약, 재색인할 때, 기존의 dataframe에 존재하지 않은 색인일 경우 디폴트값은 NaN으로 저장되나 #특정값으로 지정할 수도 있다. #아래의 코드는 0으로 채우겠다는 것 df = df.reindex([새로운 index순서를 포함한 리스트를 넣는다], fill_value=0)
'Data miner > Development log' 카테고리의 다른 글
Data Augmentation (0) 2021.01.07 [python] [pandas] encoding='cp949'로 저장하는데 에러 발생 문제 (0) 2020.10.15 [python] [pandas] column의 원소가 np.array로 구성되어 있을 때, list로 변경하기 (0) 2020.09.07 [python] [pandas] 컬럼의 값들을 조건에 따라 다른 값으로 변경하기 (1) 2020.09.04 [Google colab] 개인이 생성한 모듈을 colab에서 import해서 사용하고자 하는 경우 / (+ 데이터 업로드 하기) (0) 2020.07.31