2024. 1. 6. 20:24ㆍPandas
오늘은 Python의 라이브러리 중에 하나인 Pandas에 대해서 리마인드 작성을 해볼까합니다. 교육 중에 작성한 전체적인 코드는 저의 github에서 확인할 수 있습니다.
https://github.com/ghkstod/TIL/blob/main/ipynb/24-01-04Pandas.ipynb
우선 Pandas 라이브러리는 프로젝트 할 때 데이터를 불러오고 전처리 할 때 많이 써봤고, 그만큼 많이 공부해 본 라이브러리이기 때문에 이번에도 중요한 부분 그리고 프로젝트 할 때 어떻게 썻지? 하고 구글링을 해봤던 것들을 위주로 리마인드 해보겠습니다.
1. 데이터 프레임의 정보 알아보기
Pandas 라이브러리에서는 데이터 프레임을 직접 만들 수 있고 그것이 가장 기본적이지만 직접 데이터 프레임을 만들어서 프로젝트를 하는 경우는 흔하지 않은 경우이기 때문에 리마인드에서는 건너뛰겠습니다. 그리고 가장 중요하다고 생각하는 부분은 데이터 프레임의 정보를 파악하는 것입니다. 어떤 컬럼이 있는지? 몇 개의 컬럼이 있는지? 결측치는 존재 하는지? 등등의 정보를 얻는 것이 이후 데이터를 가지고 분석, 모델링, 시각화 하는데에 도움이 됩니다. 타이타닉 데이터 셋으로 설명하겠습니다. 우선 데이터를 불러옵니다.
titanic=sns.load_dataset('titanic')
titanic
그리고 이 데이터프레임의 정보를 알기 위해서는 .info()를 입력하면 데이터의 간략한 정보가 나옵니다.
titanic.info()
결과를 보면 데이터는 15개의 컬럼 891개의 데이터가 있습니다. 또한 각 컬럼의 데이터 타입도 보이고, Non-Null Count도 보입니다. 이것은 결측치가 아닌 값들입니다. 그러니까 age컬럼의 경우 177개의 결측치가 존재한다는 것을 알 수 있습니다.
2. 조건을 통해서 행을 찾기 (loc)
데이터를 다루면 어떤 특정 행을 찾을 때가 많습니다. 그럴때 loc 매서드를 활용하여 특정 행을 찾을 수 있습니다.
예를 들어 특정 컬럼의 값이 동일한 것만 모아서 데이터 프레임을 새로 만들고 싶다거나 특정 값을 가지는 행들의 다른 컬럼의 값들을 비교하고 싶을 때 등등 사용 할 수 있습니다. 위에서 타이타닉 데이터를 이용했기 때문에 그대로 이용하겠습니다. 사용하는 방법은 조건을 통해서 추출하고자 할 때, df.loc[조건문,컬럼]의 형식을 띄우게 됩니다. 우선 19세 이상 어른들의 데이터만 보고 싶다라고 한다면 이렇게 쓸 수 있습니다.
titanic.loc[titanic['age']>19,:]
그러면 이런 결과가 나옵니다. 총 891개의 데이터가 있었는데 550개로 줄었습니다. 물론 age컬럼에는 결측치가 존재했기 때문에 '타이타닉에 탑승한 성인은 550명이다.' 라고 확정 지을 수는 없지만 결측치를 제외하고는 이런 결과가 나왔습니다. 그리고 이 결과를 앞서 이야기한 예시로 새로운 데이터 프레임으로 만들고자 한다면 이렇게 할 수 있습니다.
df=pd.DataFrame(titanic.loc[titanic['age']>19,:]).reset_index(drop=True)
df
뒤에 reset_index()는 꼭 해줘야 정상적인 데이터프레임을 만들 수 있습니다. 그렇지 않으면 연속되지 않은 인덱스들이 생기게 됩니다. 예를 들어서 reset_index를 쓰지않은 df1을 만들어 둘의 info()를 확인해보면
위의 사진이 reset_index()를 사용한 것이고 아래가 사용을 안한건데, 위는 0부터 549까지 550개의 항목, 행이 있다고 하는데, 아래는 0부터 890까지 550개의 항목이 있다고 합니다. 그러면 항목이 없는 부분은 비어있는 행이 됩니다. 그래서 데이터 상으로 9번째 항목이 비어있는 첫 행인데 각각 조회해보겠습니다.
reset_index()를 해준 df와 달리 df1은 KeyError가 발생한 모습입니다.
오늘은 Pandas 기초 부분에서 중요하다고 생각하는 부분을 리마인드 하는 시간을 가졌고 간단하게 loc를 사용했는데 다음에 loc vs iloc를 비교하는 시간을 가지고 외부파일을 불러오고 데이터를 처리하는 메서드를 더 가져와 보겠습니다.
'Pandas' 카테고리의 다른 글
[Pandas] DataFrame 병합,연결,결합 (1) | 2024.01.08 |
---|---|
[Pandas] 외부 파일 불러오고 내보내기 (1) | 2024.01.08 |
[Pandas] iloc vs loc의 차이 (1) | 2024.01.08 |