320x100
import pandas as pd
summer = pd.read_csv('summer.csv', index_col='Athlete')
summer
# 점 표기법
summer.Medal
# 대괄호 표기법
# 띄어쓰기등이 추가로 가능하다는 점이 있다.
summer['Medal']
# 모든 행 값에 대하여, Year, Medal 정보를 출력해라.
summer.loc[:,['Year', 'Medal']]
# 추후 멀티행, 멀티컬럼등을 조작할때 문제가 발생 가능하니 loc 사용을 권장한다고 한다;
# 사용법은 알았고, iloc과 loc의 쓰임새등을 더 알아보자.
# 보니깐 iloc은 숫자만 사용 가능하고, loc은 문자만 사용가능한것같다.
# 물론 loc의 행이나, 열의 값이 0,1,2,3 이런식으로 되어있는 경우는 숫자이용도 가능한것같다.
# loc의 경우, 행은 전체, 컬럼은 일부를 가져올 경우 오히려 더 편의성이 있을것같다.
# Year, Event, Medal 열에대한 전체 행값을 가져와라
summer[['Year', 'Event', 'Medal']]
# Year, Event, Medal 컬럼에 대한 열의 값을 가져오는데,
# 열의 값은 LEWIS, Carl 이라는 사람의 정보로 한정한다.
# 흥미롭다. 첫번째 나오는것이 기본적으론 행값으로 작용되는데, 이런 직접설정의 방법으로 하면 열값으로도 먼저 나오고, 순서가 바뀔수 있다는 점이
# 이것을 chained indexing 이라고 한다
# 솔직히 안쓰는게 나을것같다.
summer[['Year', 'Event', 'Medal']].loc['LEWIS, Carl']
# 데이터 프레임의 행 인덱스 값을 출력한다.
summer.index
# 새로 summer 호출
import pandas as pd
summer = pd.read_csv('summer.csv')
summer
# question
# Getting the first 5 rows and 354 and 765
# measure 1
summer.iloc[[0,1,2,3,4, 5, 354, 765]]
# measure 2
rows = list(range(5)) + [354,765]
summer.iloc[rows]
# question
# Getting the first treee columns and the columns 'Gender' and 'Event'
# measure1
summer.iloc[:2,[0,-3,-2]]
# measure 2
summer.columns[:3].to_list()
# ['Year', 'City', 'Sport']
col = summer.columns[:3].to_list() + ['Gender', 'Event']
col
# ['Year', 'City', 'Sport', 'Gender', 'Event']
# 마찬가지로 열값이 먼저 와야하기 때문에 이렇게 : (전체)로 처리해줬다.
summer.loc[:,col]
# question
# Combining Position - and label-based Indexing: Rows at Positions 200 and 300 and columns
# 'Athlete' and 'Medal'
summer.loc[[200,300], ['Athlete', 'Medal']]
# question
# Combining Position - and label-based Indexing: Rows "PHELPS Michael" and positional columns 4 and 6
# 실패버전.
# 왜냐하면 이거는 index_col를 재설정 해줘야하는 문제였다.
summer.columns[[4,6]]
# Index(['Athlete', 'Gender'], dtype='object')
summer.loc['PHELPS, Michael', col]
# KeyError: 'PHELPS, Michael'
summer.ix['PHELPS, Michael', [4,6]]
# AttributeError: 'DataFrame' object has no attribute 'ix'
# 바로위의 문제 성공 버전
# 재설정
summer = pd.read_csv('summer.csv', index_col='Athlete')
summer
summer.columns[[4,6]]
# Index(['Country', 'Event'], dtype='object')
col = summer.columns[[4,6]]
summer.loc['PHELPS, Michael', col]
전체적으로 이전에는 간단하다고 할 수 있겠지만
iloc, loc의 차이점은 몰랐다. 구글링해봐도 뭔소린지 본인들도 이해가 된건가 싶은 학술적 표현만 잔뜩 즐비해 있으니깐;
다시 정리해보자면
iloc과 loc에 대하여 공통점은
행값, 열값 (row_values, column_values)가 온다는 것이고
차이점은
iloc은 integer로 즉 숫자로 모든 표현이 되어야한다는 것이고
loc은 string 즉, 모든 표현이 문자로 되어야 한다는 점이다.
그외에도 다중 인덱스 (multiple index) 에 대해서 아주 핵심을 짚어 알게되었다.
숫자와 문자 (integer and string)를 각각 표현해주는 것과, 섞어서 쓰는 방법 등에 대해서 배웠다.
300x250
'개발일지 > Pandas' 카테고리의 다른 글
pandas 판다스 기초 4 (0) | 2022.07.15 |
---|---|
pandas (판다스) 기초3 (0) | 2022.07.15 |
pandas 기초1 (0) | 2022.07.14 |
pymssql 설치에러 해결! (0) | 2022.07.08 |
pandas excel 가져오기 루틴 (0) | 2022.07.08 |