본문 바로가기
수업정리/파이썬프로그래밍 및 실습

판다스 week10

by 스카이버드 2023. 12. 17.

목차

1. 판다스 개념

2. 데이터 추출

3. 그룹별 집계

4. 데이터 변환

 

 

1. 판다스 개념

 넘파이배열 처리를 위한 것이라면 판다스데이터 프레임을 처리하기 위한것.

데이터 프레임은 배열의 모임이라고 볼 수있기에 판다스는 넘파이를 효율적으로 처리하기위 한 다양한 함수를 제공한다고 볼 수 있음.

데이터프레임 : 데이터 전체
시리즈객체 : 데이터, 인덱스, 데이터타입으로 구성됨. 데이터 프레임의 하나의 열이라고 생각해도 좋음
따라서 데이터 프레임은 시리즈 객체의 모음

그림. 시리즈와 데이터프레임

1.1 시리즈 객체 특징

  • 넘파이배열의 하위 클래스
  • 넘파이가 지원하는 어떠한 데이터 타입도 지원
  • 인덱스와 반드시 정렬되어 있을 필요는 없음
  • 인덱스 값은 중복을 허용

 1.2 판다스 메소드

  1.2.1 데이터 프레임 생성(pd.DataFrame(df_data))

  1.2.2 데이터 프레임 직접 생성 >> 튜플 형식으로 만듬 

df = pd.DataFame({'A' : f2} ) >> 튜플 형식을 통해 열이름이 ‘A’이고 그내용이 f2인 제이터프레임생성

df = pd.DataFame(data, columns = ['열이름1' , '열이름2', '열이름3', '열이름4']

 

 1.3 데이터 로딩

  df.head(3).T >> T때문에 기준이 행이 아니라 열로바뀜

  • 일반적인 호출법 : df["열이름"]
  • 행(인덱스) 번호로 호출 : df[1:3]
  • 행과 열을 모두 사용한 추출 : df[["열이름"]][1:3]\
  • 인덴스 이름과 열이름으로 데이터 추출 : df.loc[[행이름(값),행이름2],["열이름","열이름2"]]
  • 인덱스 번호로만 데이터 호출 : df.iloc[1:3, :3]
  • 특정 열이나 행을 학제한 객체를 반환 : df_new.drop(1) >> 1행을 제거한 df을 반환
    ※반환만 하고 값이 저장되는게 아니기 때문에 재설정을 해주던가 inplace =True를 해주어야함

 3. 그룹별 집계

  3.1 그룹화 

그룹화 : 데이터로부터 동일한 객체(특징,조건)를 가진 데이터만 따로 뽑아 추출

그룹화 예시

그림. 그룹화 명령어 예시

3.1.1 그룹화 과정

groupby 명령어시 다음과 같은 과정을 거침

그림. 그룹화 과정

3.2 멀티 인덱스 그룹화

두개 이상의 열을 기준으로 그룹화를 하는데 앞에 있는 열이 상위분류
레벨이 낮을 수록 상위 분류임. level은 0부터 시작

그림. 'Team'이 상위 분류일때
그림. 'Year'이 상위 분류일 때

그룹화 한 후 레벨별로 합치기도 가능

그림. 레벨 별 sum함수 적용

3.3 집계(agg, aggregation 함수) 

요약된 통계 정보를 추출, agg안에는 람다함수 등으로 더 복잡한 연산도 넣을 수 있음

3.4 변환 

그룹화 후 각 개별 데이터 값을 변경가능

그림. 각 팀의 rank, Year, points 값을 최대값으로 변경
그림. 정규값으로 대체

각 팀에 대해 rank,yewr, point의 평균,표준편차를 각각 구해, 정규화 값으로 변환

 

3.5 필터

df. groupby('Team').filter(lambda x: 조건)

그림. 행이 3개 이상인 팀 추출
그림. 포인트 800이상 팀 추출

4. 병합과 연결

4.1 병합 

두개의 데이터를 특정한 기준을 가지고 하나로 통합하는 작업

  종류 :내부조인(inner join),완전조인(full join), 왼쪽조인(left join),오른쪽조인(right join)

  형태 : pd.merge(left =df_left, right=df_rigt, how="병합종류", on = '기준 열이름')

그림. 예시

통합시 기준df에 없는 열의 데이터는 삭제, 기준 df에는 있찌만 기준아닌 df에는 있는 열은 데이터가 NaN으로 표시

 

4.2 연결

두 테이블을 그대로 붙임

 조건 : 데이터의 스키마(행열,규모)가 같아야함

 종류 : concat함수(두개의 서로 다른 테이블을 하나로 합침), append 함수 (기존 테이블 하나에 다른 테이블을 붙임)

 형태 : df = pd.concat(df_list, axis=0), 여기서 df_list는 여러개의 데이터 테이블로 이루어짐

           df = df_1.append(df_2), df = df.append(df_3)

'수업정리 > 파이썬프로그래밍 및 실습' 카테고리의 다른 글

시본과 플롯리 시각화 week12_2  (0) 2023.12.17
matplotlib 시각화 week12  (1) 2023.12.17
Numpy  (0) 2023.12.16
람다 함수, 리스트 축약 week9.2  (0) 2023.12.16
함수 week4  (0) 2023.12.15