abengers 과제

정지호·2022년 8월 18일
0

개인 실습 진행

목록 보기
20/41

- 프로그래머스 과제

실습파일을 깃허브에 올려두었다.
https://github.com/CNU-Jiho-Jeong/jjh98.git


  • Pandas 데이터 정렬하기

1. sort_index()
: 인덱스를 기준으로 데이터를 정렬함.
: 기본 정렬 방식은 오름차순
: ascending=False를 인자로 넣어주면 내림차순 정렬도 가능함
-> 데이터프레임이름.sort_index(ascending=False)

2. sort_values()
: 열(column)의 값을 기준으로 데이터를 정렬
: 기본 정렬 방식은 오름차순
: 데이터프레임이름.sort_values(by="정렬 기준이 되는 열 이름", ascending=False)
(기본 정렬 방식은 오름차순이지만, ascending=False를 통해 내림차순도 가능)
: 과제에서 쓰인 sort_values()

stats[["Name", "Total"]].sort_values(by = "Total", ascending = False) 

  • 결측치가 있는 데이터 제거하기

1. dropna()

  • 1개라도 NaN 값이 있는 행은 제거 가능(기본 옵션. 열을 제거할 경우 인자로 axis=1 넣어주어야 함)
  • 기본 옵션 값은 how=any로 설정되어 있음
  • 데이터프레임이름.dropna()
  • 데이터프레임이름.dropna(how="all") 로 한 두개뿐만이 아닌 모두 NaN 값 존재할 때 제거해 줄 수 있음

  • 데이터프레임 합치기

1. pd.merge()

  • 두 데이터프레임을 합쳐준다.

  • 기준열 이름이 같을 때
    : pd.merge(왼쪽 데이터프레임, 오른쪽 데이터프레임, on = "기준열", how = "조인방식")

  • 기준열 이름이 다를 때
    : pd.merge(왼쪽 데이터프레임, 오른쪽 데이터프레임, left_on = "왼쪽 데이터프레임 기준열", right_on = "오른쪽 데이터프레임 기준열", how = "조인방식")

  • how = Join 방식

    1. Left Join ("left") : 왼쪽 데이터프레임을 기준으로 조인한다. 오른쪽 데이터프레임에 없는 값은 NaN으로 나타난다. pd.merge(left, right, on = 'col', how = 'left')

    2. Right Join("right"): 오른쪽 데이터프레임을 기준으로 조인한다. 왼쪽 데이터프레임에 없는 값은 NaN으로 나타난다. pd.merge(left, right, on = 'col', how = 'right')

    3. Inner Join("inner"): 교집합을 의미한다. 양쪽에 공통으로 있는 값만 나타난다. pd.merge(left, right, on = 'col', how = 'inner')

    4. Outer Join("outer"): 모든 값이 나타나도록 한다. 왼쪽 데이터프레임과 오른쪽 데이터프레임에 없는 값들은 NaN으로 나타난다. pd.merge(left, right, on = 'col', how = 'outer')

  • abengers 문제에서 쓰인 예시
    : avengers = pd.merge(stats,info,on = "Name", how = 'outer')


  • 데이터 프레임 인덱스 변경하기

1. set_index()

  • set_index(keys=[k1,k2,....], inplace=True/False, drop=True/False)

  • keys=[k1,k2,....] : 인덱스로 설정할 list 형태의 데이터. 인덱스는 보통 1줄이지만 2줄 3줄 또는 그 이상이 될 수도 있음(다중 index가 가능). k1을 인덱스 한 줄이라고 보면 됨.

  • inplace=True/False :
    True --> set_index가 적용된 DataFrame 자체를 변경
    False --> set_index가 적용된 DataFrame은 원본 그대로 두고 다른 변수에 set_index가 적용된 DataFrame을 할당 (False가 default 값.)

  • drop=True/False :
    True --> set_index의 key에 사용된 column을 index로 옮기고 column에서 삭제
    False --> set_index의 key에 사용된 column을 index로 옮기고 column에서도 유지
    (True가 default 값.)

  • abengers 문제에서 쓰인 예시
    : list1 = list1.set_index(list1[0],drop=True) -> 0번째 열을 인덱스로 옮기고 열에서 삭제

  • df.set_index("열 이름") : 특정 열 1개를 인덱스로 지정
    df.set_index(["열 이름 1", "열 이름 2"]) : 열 두 개 이상 멀티 인덱스 지정. 원하는 열들을 리스트 내에 순서대로 넣어야 함.


  • 유일한 값 찾기

1. unique()

  • 데이터에 고유값들이 어떠한 종류들이 있는지 알고 싶을 때 사용.
  • 데이터프레임이름["열이름"].unique()
  • abengers 문제에서 쓰인 예시
    : companies = info["Publisher"].unique() -> 코믹스 회사 종류를 중복없이 알 수 있음.

2. nunique()

  • 데이터에 고유값들의 수를 출력해주는 함수
  • 데이터의 고유값의 총 개수를 알고 싶을 때 유용
  • 데이터프레임이름["열이름"].nunique()

3. value_counts()

  • 데이터의 고유값별로 데이터가 몇 개씩 들어있는지 알고 싶을 때 유용
  • 데이터프레임이름["열이름"].value_counts()
  • 결과 예시
  • 기본적으로 내림차순 정렬이나, 인자로 ascending=True 를 넣어주면 오름차순 정렬을 할 수 있다.

참고 사이트들
https://hogni.tistory.com/6
https://jaaamj.tistory.com/112
https://mizykk.tistory.com/82
https://wikidocs.net/136562
https://jimmy-ai.tistory.com/155
https://cosmosproject.tistory.com/337
https://velog.io/@changhtun1/%EA%B8%B0%EC%B4%88%EB%B6%80%ED%84%B0-%EC%8C%93%EC%95%84%EA%B0%80%EB%8A%94-%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-2 (판다스 라이브러리 참고하기 좋은 벨로그 사이트)

profile
정지호

0개의 댓글