IT/Python

Pandas(판다스) - 파이썬을 활용한 데이터 분석 기초 #5

디지털 은행원 이야기 2022. 9. 26. 21:43
반응형

판다스

안녕하세요.

Pandas 세번째 글 작성해보도록 하겠습니다.

 

이번에는 Pandas에서 Indexing과 Slicing에 관해 알아보도록 하겠습니다.

Series 데이터와 DataFrame에 있는 값을 찾고 변경할 필요가 있을때 유용하게 활용할 수 있을 것 같은데요.

먼저, loc 을 설명드리겠습니다.

loc은 명시적인 인덱스를 참조하는 인덱싱/슬라이싱으로 loc의 파라미터로 들어간 데이터를 참조해 정보를 가져옵니다.

#	  		 Data	        population      gdp per capita
#	  china		 1409250000	141500		9959.363958
#	  japan		 516700000	12718		40627.457147
#	  korea		 169320000	5180		32687.258687
#	  usa		 2041280000	32676		62470.314604

country.loc['china']

#	gdp            1409250000
#	population     141500
#	gdp per capita 9959.363958
#	Name: china, dtype: float64

country.loc['japan':'korea', :'population']

#		gdp	population
#	japan 516700000 12718
#	korea 169430000	5180

 

 

위의 예제를 보시면 loc['china']를 통해 china 행의 데이터를 모두 호출한것을 볼 수 있습니다.

또한, loc['japan':'korea', :'population']을 통해 japan 부터 korea 행의 데이터를 열기준으로 population 까지 호출해 보았습니다.

다음으로 loc과 비슷한 역할을 하는 iloc에 관해 알아보겠습니다.

#	  		 Data	        population      gdp per capita
#	  china		 1409250000	141500		9959.363958
#	  japan		 516700000	12718		40627.457147
#	  korea		 169320000	5180		32687.258687
#	  usa		 2041280000	32676		62470.314604

country.iloc[0]

#	gdp            1409250000
#	population     141500
#	gdp per capita 9959.363958
#	Name: china, dtype: float64

country.iloc[1:3, :2]

#		gdp	population
#	japan 516700000 12718
#	korea 169430000	5180

 

iloc는 파이썬 스타일 정수 인덱스를 활용해 인덱싱과 슬라이싱을 할 수 있습니다.

위의 예제에 나와있는것처럼 loc을 iloc으로 변경하고 china, japan, korea, population에 있는 각각의 파라미터를

위치에 맞는 Index 값으로 변경하여 호출하면 loc을 사용할때와 동일한 데이터가 출력되는것을 볼 수 있습니다.

그래도 iloc보다는 loc이 명시적으로 파라미터가 나와있고 하니 조금 더 활용도가 높지 않을까 개인적으로 생각해봅니다.

 

다음으로는 DataFrame에 새로운 데이터를 추가하거나 수정하는 예제입니다.

데이터를 추가/수정하는 방법에는 리스트로 추가하는 방법과 딕셔너리로 추가하는 방법이 있습니다.

dataframe = pd.DataFrame(columns=['이름', '나이', '주소'])
dataframe.loc[0] = ['임원균', '26', '서울']
dataframe.loc[1] = {'이름':'철수', '나이':'25', '주소':'인천'}
#	    이름  나이  주소
#	0  임원균  26  서울
#	1   철수  25  인천

dataframe.loc[1, '이름'] = '영희'
#	    이름  나이  주소
#	0  임원균  26  서울
#	1   영희  25  인천

 

이미 작성된 DataFrame에 데이터를 추가/수정할수도 있지만 새로운 컬럼을 추가할수도 있습니다.

dataframe['전화번호'] = np.nan
#	    이름  나이  주소  전화번호
#	0  임원균  26  서울   NaN
#	1   철수  25  인천   NaN

dataframe.loc[0, '전화번호'] = '01012341234'
#	    이름  나이  주소  전화번호
#	0  임원균  26  서울   01012341234
#	1   철수  25  인천   NaN

len(dataframe)
# 2

dataframe["이름"]
# Series 형태의 데이터 호출
# 0  임원균
# 1  영희
# Name: 이름, dtype: object

dataframe[["이름", "나이", "주소"]]
# Dataframe 형태의 데이터 호출
#	    이름  나이  주소
#	0  임원균  26  서울
#	1   철수  25  인천

 

np.nan에서 nan은 'Not a Number'를 뜻하는 것으로 비어있는 데이터를 뜻합니다.

loc을 통해 전화번호 데이터를 추가해보았습니다. 그리고 컬럼을 선택해서도 출력할 수 있습니다.

컬럼 이름이 하나만 있다면 Series, 리스트로 들어가 있다면 DataFrame으로 호출할 수 있습니다.

 

오늘은 여기까지 하도록 하겠습니다.

감사합니다.

반응형