빅데이터 분석기사[python]/pandas와 기본 데이터 처리

[python 파이썬, pandas 판다스] 데이터 변환1 (데이터 복사, 행과 열의 이름 확인하기 및 변경하기)

sunning 2022. 5. 10. 20:34
728x90

판다스에서 데이터프레임 형태로 불러온 데이터는 복사도 가능하며 행 인덱스, 열이름을 확인하고 바꾸기도 가능하다. 이번엔 이러한 기능들에 대해 정리하고자 한다.

예시를 들기 위하여 kaggle의 예제 데이터를 사용하였다. 먼저 read_csv로 데이터를 불러온다.

 

import pandas as pd

DF = pd.read_csv('IRIS.csv', engine = 'python')
DF.head()

 

1) 데이터프레임 복사하기 : df명.copy()

데이터 사용 시 데이터 DF를 DF1으로 복사하고 싶은 경우가 있다. 이때 주의할 점은 단순하게 DF1 = DF로 설정하면 향후 DF가 변경되면 DF1도 함께 변경된다는 것이다.

예로 DF1 = DF로 설정한 후에 DF의 칼럼명이 species인 열의 값을 다 0으로 설정하고 DF1를 출력해보자. 그럼 아래와 같이 DF1의 species도 DF와 똑같이 모두 0으로 값이 변경된 것을 확인할 수 있다.

 

DF1 = DF ## DF1을 DF라고 설정한 경우
DF[['species']] = 0
DF1.head()

 

 

이러한 현상을 방지하고 DF를 바꾸더라도 DF1은 바뀌지 않게 하기 위해 사용하는 것이 데이터셋명.copy()이다. copy()를 사용하면 바로 위의 상황과 동일한 상황이더라도 DF1은 변경되지 않는다.

 

DF1 = DF.copy() ## DF1을 DF.copy()로 설정한 경우
DF[['species']] = 0
DF1.head()

 

 

2) 데이터프레임 칼럼명(열 이름) 확인하기 : df명.columns

데이터 프레임의 열(변수) 이름을 확인하려면 아래와 같이 .columns를 사용하여 확인할 수 있다.

 

DF1.columns
##OUTPUT
Index(['sepal_length', 'sepal_width', 'petal_length', 'petal_width',
       'species'],
      dtype='object')

 

3) 칼럼명(열 이름) 변경 : df명.rename(columns = {'기존 칼럼명':'변경할 칼럼명'})

그럼 DF1의 칼럼 'species'의 칼럼명을 '종'으로 바꿔보자. 이는 rename을 활용하여 가능하다.

이때 inplace = True 옵션은 'species'를 '종'으로 변경하고 덮어씌우겠다는 의미이다.

 

DF1 = DF1.rename(columns = {'species':'종'}, inplace=True)
DF1.head()

 

 

4) 데이터프레임 행 인덱스(행 이름(번호)) 확인하기 : df명.index

데이터 프레임의 행 이름 (번호)을 확인하려면 아래와 같이 .index를 사용하여 확인할 수 있다. 

 

print(DF1.index)
print(list(DF1.index))
## OUTPUT
RangeIndex(start=0, stop=150, step=1)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149]

 

5) 행 인덱스(행 이름(번호)) 변경 : df명.rename(index= {'기존 행 인덱스':'변경할 행 인덱스'})

DF1의 0번 행의 인덱스를 flower 0으로 바꾸어려면 칼럼명을 변경하듯이 똑같이 rename을 사용하면 된다.

 

DF1 = DF.rename(index = {0: 'flower0'})
DF1.head()

 

728x90