안녕하세요.
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으로 호출할 수 있습니다.
오늘은 여기까지 하도록 하겠습니다.
감사합니다.
'IT > Python' 카테고리의 다른 글
Pandas(판다스) - 파이썬을 활용한 데이터 분석 기초 #6 (0) | 2022.09.27 |
---|---|
Pandas(판다스) - 파이썬을 활용한 데이터 분석 기초 #4 (4) | 2022.09.25 |
Numpy(넘파이) - 파이썬을 활용한 데이터 분석 기초 #3 (2) | 2022.09.20 |