본문 바로가기
DATA/Pandas

Pandas - csv, DataFrame 구조, 열 생성과 삭제

by jun.s.gi 2022. 11. 27.
728x90
1. CSV?

comma separated variables 쉼표로 구분한 변수의 약자이다.

쉼표가 아니더라도 콜론, 세미콜론, 탭 등의 구분자도 사용할 수 있다.

 

판다스는 이러한 csv파일을 read_csv() 함수를 이용하면 데이터프레임으로 바꾸는 작업을 간단히 할 수 있다.

path = 'https://github.com/dongupak/DataML/raw/main/csv/'
file = path + 'vehicle_prod.csv'
df2 = pd.read_csv(file)

만약 사이트의 저장소가 아닌 컴퓨터에 있는 csv파일 읽어 오기 위해선 csv파일의 디렉토리 주소를 입력하면 된다.

 

 

2. DataFrame 구조

데이터 프레임은 인덱스와 컬럼스 객체를 정의하여 사용한다. 인덱스는 행들의 레비블이고, 컬럼스는 열들의 레이블이 저장된 객체이다.

 

 

특정 열을 인덱스로 사용하기 위해 read_csv() 함수에 index_col 키워드 매개변수에 열의 인덱스를 넘겨주면 해당 열이 인덱스로 사용된다. 위 데이터프레임에서는 국가 이름을 인덱스로 사용하여 파일을 읽어오려면 다음과 같이 실행하면 된다.

 

columns, index 속성과 tolist() 메소드

columns, index 속성을 통해 데이터프레임의 컬럼값과 인덱스값을 확인할 수 있다.

컬럼값과 인덱스값을 리스트로 사용하기 위해선 뒤에 tolist()메소드를 사용하면 리스트 자료형으로 사용할 수 있다.

 

 

df3[칼럼]

데이터프레임 객체의 대괄호 안에 특정 칼럼을 입력하면 위와 같이 해당 칼럼이 출력된다.

자세한 내용은 인덱싱과 슬라이싱에서 다룰 예정

 

 

3. 열 추가 방법

2007년도부터 2011년까지 국가별 총 자동차 생산 대수와 평균을 한눈에 알아보도록 'total'열과 'mean'열을 생성해보자.

먼저 total열을 생성하기 위해 df3['total'] = df3['2007] + .... + df3['2011']같은 방법을 사용해도 되지만

df3['total'] = df3.sum(axis = 1)처럼 sum() 메소드를 사용하면 간단하게 처리할 수 있다.

추가할 때는 axis = 0은 열, axis = 1은 행을 가리킨다.

원래 axis = 0은 행을 가리키고, axis = 1은 열을 가리킨다.

 

mean열을 생성하기위해 mean()메소드를 하면 2007 ~ 2011년까지 생산 평균을 구할 수 있지만, 앞에 만들어놓은 total열에  때문에 제대로된 값이 나오지 않는다.

제대로된 값이 나오긴 위해선 일일이 전부 입력해주어야 한다.

df3['total'] = df3.sum(axis = 1)
df3['mean'] = df3[['2007',"2008","2009","2010","2011"]].mean(axis = 1)

주의할 점은 일일이 입력할 때 이중 대괄호로 해주어야한다.

 

3-1 열 삭제 drop( column, inplace = True or False, axis = n )
df3.drop('2007', inplace = True, axis = 1)

해당 코드를 실행시키면 데이터프레임의 2007열이 삭제된다.

하지만 주의해야할 점은 2007 컬럼이 삭제되면서 total값과 mean값이 2007을 제외한 값으로 되야하므로 total, mean컬럼의 값을 따로 수정해줘야 한다.

df3.drop('2007', inplace = True, axis = 1) # -> mean, total값이 틀림

df3['total'] = df3[["2008","2009","2010","2011"]].sum(axis = 1)
df3['mean'] = df3[["2008","2009","2010","2011"]].mean(axis = 1)

 

inplace 키워드

inplaceTrue면, 실제로 df3 데이터프레임의 칼럼을 삭제하고,

False면 기존 데이터프레임은 그대로 두고 갱신된 데이터 반환합니다. 즉, 변수가 삭제된 데이터를 가리키게 해주고 원본은 그대로 유지합니다.

# inplace = False 사용 예
test = df3.drop('2007', inplace = False, axis = 1)

# df3 데이터프레임은 그대로 유지하고 test변수는 2007 column이 삭제된 데이터프레임을 가짐

 

3-2 행을 삭제해보자

행을 삭제하기 위해선 다음과 같이 작성해주면 된다.

Dataframe(object).drop('index', axis = 0, inplace = True or False)

test2 = df3.drop('Mexico', axis = 0, inplace = False)

test2 변수는 df3 데이터프레임의 멕시코 행이 사라진 데이터프레임을 가진다.

728x90