본문 바로가기
프로그래머스/데이터분석 데브코스

프로그래머스 데이터분석 데브코스 7-2

by 포잉띠 2024. 3. 26.

pandas 2일차, Series에 대해 배웠다.

 

pandas 하면 Dataframe을 주로 접했기에 Series를 접할일이 크게 없었다.

numpy array나 Series로 반환되는게 있을때면 to_list 사용한 후 list로 작업하거나 다시 DataFrame으로 만들어서 작업했었다.

그래서인지 오늘 강의 내용에서 신선한 충격을 준 것들이 몇가지 있었다.

오늘 내가 새롭게 배운것들을 가볍게 정리해 보겠다.

 

강의 중 실습하는 과정이 있었는데 그중에서 막혔던, 새로운 방법들이 있었던것을 간추렸다.

 

df = pd.read_csv("TopRichestInWorld.csv", usecols=["Age"]).squeeze()
df.index = pd.read_csv("TopRichestInWorld.csv", usecols=["Name"]).squeeze()

 

처음 위의 문제를 풀기 위해 아래와 같은 방법으로 따로 추출해서 index 지정을 아주 번거롭게 해주었다.

df = pd.read_csv("TopRichestInWorld.csv", usecols=["Age", "Name"], index_col='Name').squeeze()

 

index_col 부분 인자를 usecols에서 사용된 것들중에서만 사용할 수 있다는것을 너무나도 늦게 알았다.

그리고 DataFrame을 Series로 반환해주는 squeeze() 메소드도 오늘 처음 역할을 알았다.

 

 

df.index[df.min()], df.min()
df.min().index()
df.index(df.min())

이런식으로 뭐 말도안되는 방법까지 시도해 봤다.

min()으로 values의 최소값을 찾는건 성공했지만 그 값으로 index를 찾는 방법이 떠오르지 않았다.

df.idxmin()

답은 idxmin()이라는 메소드를 사용하는 것이었다...

절대 잊어버리지 못할 것 같다.

엄~청나게 돌아가다가 메소드 하나로 되는걸 보고 큰 충격을 받았다.

 

 

df.value_counts(bins = 5, normalize=True,ascending=False )

 

 

value_counts와 bins를 사용하면 구간을 나누어 계산해준다. 퍼센테이지가 아닌 정수로 보려면 Nomalize=False를 주면 된다.

유용한 기능이라고 생각된다. describe로 표준편차, 평균, 최소 최대, 백분위 구간을 확인해볼수도 있지만 전체적인 분포를 확인해보고 싶을 때 사용하면 진짜 좋은 기능같다.