[데이터 분석] Pandas의 기본 개념과 자주 쓰이는 API들

2025. 3. 4. 23:22·[데이터 분석]
728x90

판다스는 파이썬에서 데이터 처리를 위한 가장 인기있는 데이터 처리 라이브러리

대부분의 데이터 세트는 2차원

즉 행, 열로 구성되어 있다

판다스는 2차원 구조의 최적화 되어있다

정형 데이터와 궁합이 좋다

집계성, 시각화와의 연계, 빠른 성능

Numpy 기반

판다스의 주요 구성 요소

  • DataFrame - 컬럼과 로우로 구성된 2차원 데이터 셋 즉 shape(n,n)
  • Series - 1개의 컬럼 값으로만 구성된 1차원 데이터 셋 - 즉 shape (n,)
  • Index - 데이터프레임/시리즈의 고유한 Key값 객체

기본 API

  • read_csv() - csv 파일을 읽어서 데이터프레임으로 만들 수 있는 api
  • head() - 안에 들어가는 숫자 만큼의 상위 데이터를 보여줌
  • tail() - 안에 들어가는 숫자 만큼의 하위 데이터를 보여줌
  • shape - 넘파이의 shape과 똑같다 (행, 열)
  • info() - 데이터프레임 내 컬럼명, 데이터 타입, Null건수, 데이터 건수 정보를 제공한다
  • describe() - 각 데이터들의 평균, 표준 편차 등의 정보를 제공한다
  • value_counts() - 시리즈와 데이터프레임의 값의 개수를 많은 순으로 정렬하여 보여준다
  • sort_ values()

주피터 노트북의 경우 데이터프레임을 따로 어떻게 출력해라라고 명령하지 않고 판다스 객체만 입력해도 보기 좋게 표 형태로 출력해준다

이를 따로 명령하기 위해선 display()를 이용할 수 있다

pd.set_options()

판다스에 기본 display()는 모든 데이터를 보여주지 않는다

이를 위해서 pd.set_option()이라는 api가 있으며 이를 사용 시 데이터가 보이는 영역을 수정할 수 있다

데이터프레임 생성하기

파이썬 딕셔너리를 사용하여 만들기

딕셔너리의 키는 제목이 된다

Value엔 리스트로 요소들을 넣을 시 아래 데이터프레임처럼 적용이 된다

새로운 컬럼명 추가

데이터프레임에 컬럼명을 지정을 해줄 수 있다

제목을 지정하였지만 데이터가 없을 시 NaN이 뜬다

NaN - Not a Number

인덱스를 새로운 값으로 할당

인덱스는 유니크하기만 하면 된다.

숫자든 문자열이든 상관 없다

디폴트는 숫자값

데이터프레임의 컬럼명과 인덱스

보통 컬럼 이름은 유니크하기 때문에 인덱스 타입이라고 나온다

숫자로 0부터 데이터 수 만큼 인덱스가 메겨지는 걸 RangeIndex라고 한다

판다스의 배열을 넘파이로 바꾸고 싶다면 .values만 사용하면 된다

Info()

DataFrame내의 컬럼명, 데이터 타입, Null건수, 데이터 건수 정보를 제공한다

describe()

머신러닝을 만들 때 분포도에 영향을 많이 받는다

dataframe에 있는 컬럼들의 분포도, 평균, 표준 편차 등을 제공한다

숫자형 컬럼들에 대해서 해당 정보를 제공한다

value_counts()

동일한 개별 데이터 값이 몇건 있는지 정보를 제공한다

가장 많은 데이터 순으로 정렬이 된다

현재는 데이터 프레임에서도 호출이 가능하다

DataFrame에서도 value_counts()가 가능 → 리스트 형으로 여러 컬럼을 넣을 것

Dataframe과 리스트, 딕셔너리, 넘파이 ndarray 상호 변환

list to DataFrame (컬럼 명이 있냐 없냐가 가장 큰 차이) pd.DataFrame(list, columns=[’clo name1’, ;colname2’]
ndarray to Dataframe pd.DataFrame(array2, columns=[’clo name1’, ;colname2’]
dict to DataFrame pd.DataFrame(dict)
DataFrame to ndarray df.values(반드시 기억)
DataFrame to list df.values.tolist()
DataFrame to dict df.to_dict()

DataFrame에 새로운 컬럼 값을 넣기

대괄호 안에 [’컬럼명’] = 요소 를 사용하여 가능하다

이미 존재하던 컬럼명을 활용해 계산하여 새로운 컬럼도 창조 가능하다

DataFrame 요소 업데이트

원래 딕셔너리에 새로운 요소 대입시키던 것 처럼 df[’컬럼명’] = 새로운 값

DataFrame 데이터 삭제

  • drop() - 컬럼 및 로우 삭제 가능
  • axis: dataframe의 루오를 삭제할 땐 axis=0, 컬럼을 삭제할 땐 axis=1
  • 원본 DataFrame은 유지하고 드롭된 DataFrame을 새롭게 객체 변수로 받고 싶다면 inplace=False로 설정 (titanic_drop = titanic_df.drop(’Age_0”,axis=1,inplace=False) 메모리가 조금 더 쓰일 우려가 있다
  • 원본 데이터에 drop()한 결과를 적용할 경우엔 inplace=True로 적용한다 titanic_df.drop(’Age_0’,axis=1,inplace=True) inplace=True일 시 반환 값은 없음

인덱스 개요

  • DataFrame, Series의 레코드를 고유하게 식별하는 객체
  • 판다스 Index는 별도의 컬럼 값이 아니다
  • Index는 오직 식별용으로만 사용된다
  • Index 객체를 추출하려면 DataFrame.Index, Series.Index 속성으로 통해 가능하다
  • 반드시 숫자일 필요는 없으며 문자형,Datetime도 상관 없다

  • 인덱스는 바꿀 수 없다, 바꾸려고하면 오류가 발생한다
  • 인덱스를 바꾸고자 한다면 reset_index()를 사용해야한다

  • 인덱스는 뭘 하던 연산이 되지 않는다

  • reset_index()를 수행하면 새롭게 인덱스를 연속 숫자형으로 할당하며 기존 인덱스는 새로운 index 라는 컬럼으로 추가된다
  • drop 기본 매개변수를 True로 지정하면 기존 인덱스는 컬럼으로 추가되지 않고 제거된다

  • 매개변수에 따른 reset_index() API의 반환 결과를 볼 것

  • df.rename()의 인자로 columns를 dictioinary 형태로 받으면 ‘기존’:’신규’ 형태로 변환

DataFrame 인덱싱 및 필터링

  • [ ] - 컬럼 기반 필터링 또는 불린 인덱싱 필터링 제공
  • loc[ ], iloc[ ] - 명칭/위치 기반 인덱싱을 제공: 명칭 기반 인덱싱(Loc[명칭]) / 위치 기반 인덱싱(iloc[위치])
  • 불린 인덱싱(boolean Indexing) - 조건식에 따른 필터링을 제공
    titanic_boolean = titanic_df[titanic_df['Age']>60]
    ​

  • 하나의 컬럼명을 넣는데 리스트로 인자를 전달했다면 2차원, 즉, 데이터프레임으로 반환된다

불린 인덱싱

iloc인덱싱은 명칭을 참조하지 않는다. 위치 인덱스로만 작동하기에 정수가 들어가야한다

iloc은 불린 인덱싱을 지원하지 않는다

아래는 불린 인덱싱과 loc 인덱싱을 혼용하는 방법이다

아래는 불린 인덱싱의 조건을 여러개 적용한 모습이다

개별 조건들은 반드시 괄호로 감쌀 것

개별 조건들은 변수에 담아 실행도 가능하다

Dataframe의 정렬 - sort_values()

  • sort_values()의 인자로는 by 인자로 정렬하고자 하는 컬럼값을 입력 받아서 해당 컬럼 값으로 DataFrame을 정렬, 오름 차순 정렬이 기본이며 ascending=True로 설정됨. 내림차순 시 ascending=False로 설정
  • 여러개의 칼럼이 들어갈 땐 반드시 리스트로 감쌈
    titanic_sorted = titanic_df.sort_values(by=['Name'], ascending = True)
    ​

DataFrame의 집합 연산 수행 - Aggregation

  • sum(), max(), min(), count(), mean()은 DataFrame/Series에서 집합 연산 수행
  • DataFrame의 경우 DataFrame에서 바로 aggregation을 수행 시 모든 컬럼에 해당 aggregation을 적용

DataFrame Group By

  • groupby() 연산을 제공
  • by를 인자로 groupby하려는 컬럼명을 입력 받으면 DataFrameGroupBy 객체 반환
  • 반환된 dataframegroupby 객체에 aggregation 함수 수행

  • 하나의 키 값에 다른 값이 있을 땐 뒤에 값으로 연산해서 출력함

결손 데이터 처리하기

  • isna(): DataFrame의 값이 NaN이면 True 아니면 False
  • fillna(): Missing 데이터를 인자로 주어진 값으로 대체한다
  • null 값이 있을 때 어떤 데이터를 넣을지는 고민해야한다

nunique로 컬럼내 몇건의 고유 값이 있는지 파악

  • nunique - 고유한 값의 개수를 알려줌
  • value_counts()는 값을 많은 순으로 정렬하여 출력함

replace()

  • 컬럼의 바꿀 내용을 인자로 전달하면 값이 출력된다
  • inplace default가 false이기 때문에 값이 반환된다
  • fillna()를 안하고 replace(np.nan, )을 사용해도 된다

판다스 apply lambda

lambda x : x**2
#x는 입력 인자 x**2는 반환값
  • 판다스는 apply 함수에 lambda 식을 결합해 DataFrame이나 Series의 레코드 별로 데이터를 가공하는 기능을 제공한다. 간단한 함수식 정도는 훨씬 빠르므로 이용하도록 하자
  • 이름의 길이를 구하는 apply lambda

판다스 apply lambda

lambda x : x**2
#x는 입력 인자 x**2는 반환값
  • 판다스는 apply 함수에 lambda 식을 결합해 DataFrame이나 Series의 레코드 별로 데이터를 가공하는 기능을 제공한다. 간단한 함수식 정도는 훨씬 빠르므로 이용하도록 하자
  • 이름의 길이를 구하는 apply lambda

lambda 안에 여러 if는 다음과 같이 가능하다

반드시 리턴 값을 만들어야함

판다스 Summary

2차원 데이터 핸들링을 위해 판다스를 사용해야함

다양한 API를 찾아서 해결하자

화이팅하자 아자아자 화성대회 화이팅

728x90

'[데이터 분석]' 카테고리의 다른 글

[데이터 분석] Numpy의 ndarray 객체와 자주 사용하는 메서드  (0) 2025.02.28
[데이터 분석] 데이터 분석의 개념 및 pandas를 사용한 csv 파일 취급  (2) 2025.02.20
'[데이터 분석]' 카테고리의 다른 글
  • [데이터 분석] Numpy의 ndarray 객체와 자주 사용하는 메서드
  • [데이터 분석] 데이터 분석의 개념 및 pandas를 사용한 csv 파일 취급
뽕규의 스케치북
뽕규의 스케치북
공부 열심히 해볼게요
  • 뽕규의 스케치북
    뽕규의 스케치북
    뽕규의 스케치북
  • 전체
    오늘
    어제
  • 링크

    • 파이썬 공식 문서
    • GitHub
    • 분류 전체보기 (37)
      • [파이썬] (17)
      • [데이터 분석] (3)
      • [Git&GitHub] (5)
      • [자료구조 & 알고리즘] (3)
      • [안드로이드 앱] (0)
      • [네트워크] (0)
      • [머신러닝 & 딥러닝] (0)
      • [SQL] (1)
      • [컴퓨터 구조 & 운영체제] (0)
      • [개발자 수학] (0)
      • [노션] (6)
      • [기타] (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 공지사항

  • 인기 글

  • 태그

    소스트리
    *
    발전
    pull
    파이썬
    push
    python
    github
    TODO
    깃허브
    깃
    수식
    함수
    GIT
    기초
    DB
    개념
    공부
    sourcetree
    노션
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
뽕규의 스케치북
[데이터 분석] Pandas의 기본 개념과 자주 쓰이는 API들
상단으로

티스토리툴바