Coding/TIL & 배운것들

Pandas 라이브러리

코딩짜는 머글 2024. 10. 9. 21:51

pandas 

기본구조

 
 import pandas as pd
 

 

시리즈(Series)  

1차원 데이터를 다룰 수 있는 기본적인 자료구조. 인덱스(Index)를 통해 원하는 인덱스를 직접 지정할 수 있다. 인덱스를 지정하지 않으면 자동으로 0부터 시작하는 정수형 인덱스를 할당한다. 인덱스와 데이터 값(Value)이 쌍으로 구성된다.

 

기본 인덱스 예시↓

 
 import pandas as pd

 # 예시: 시리즈 생성
 s = pd.Series([10, 20, 30, 40], index=['a', 'b', 'c', 'd'])
 print(s)

 

출력↓

 
 a      10
 b      20
 c      30
 d      40
 dtype: int64

 

#리스트처럼 인덱스를 사용해 데이터를 접근할 수 있다.

#배열처럼 index 범위를 지정해 특정 구간의 데이터를 가져올 수 있다.

#numpy 처럼 수학 연산을 쉽게 할 수 있다. 각 요소에 대해 연산이 적용됨.

#누락된 데이터를 처리하는 데 강력함. 결측값은 기본적으로 NaN(Not A Number)으로 처리됨           

 

일반적으로 시리즈는 내부적으로 모든 값들은 같은 데이터타입을 공유. 하나하나의 데이터 타입을 모두 맞춘다는 게 아니라 시리즈가 데이터 타입을 모두 수용할 수 있는 형태로 바꿔주는 것.

 

딕셔너리 형태로 전달할 때는 각각의 리스트의 길이가 같아야 한다

 

데이터 프레임(DataFrame)

 

판다스에서 사용되는 가장 중요한 데이터 구조 중 하나이다. 우리가 공부할 때 노트에 정보를 정리하고, 각 정보를 표의 칸에 적어놓는 것처럼 데이터프레임은 컴퓨터로 정보를 정리하고 저장하는 도구이다. 데이터프레임은 행(가로줄)과 열(세로줄)로 이루어져 있어서, 이것을 사용하면 정보를 쉽게 정리하고 찾을 수 있다. 2차원의 표 형테 데이터 구조이다. 인덱스와 컬럼명을 사용해 특정 데이터에 접근할 수 있다. 

 

기본적으로 pandas는 데이터 프레임을 생성할 때는 자동으로 정수형 index를 할당한다.

하지만 특정 열을 index로 설정하거나 기존의 index를 변경할 수도 있다. index는 데이터의 접근을 편리하게 만들어준다.

 

 

딕셔너리를 사용한 DataFrame 생성 예시↓

 
 import pandas as pd

 data = {
         'Name': ['Alice', 'Bob', 'Charlie'],
         'Age': [25, 30, 35],
         'City': ['New York', 'Los Angeles', 'Chicago']
 }

 df = pd.DataFrame(data)
 print(df)
 



 

시리즈와 데이터 프레임의 차이점 및 공통점

 

차이점

  • 시리즈는 1차원, 데이터 프레임은 2차원이다.
  • 시리즈는 하나의 데이터 타입, 데이터 프레임은 다양한 데이터 타입을 허용한다.( 시리즈 자체의 데이터 타입을 말하는 것이다. 시리즈 내부에 속한 데이터는 타입이 각각 다르다.)

공통점

  • 둘 다 인덱스를 가지고 있어 데이터에 쉽게 접근 가능하다.
  • 판다스에서 가장 기본적인 데이터 구조이다.

index : 시리즈나 데이터 프레임에 각 값을 고유하게 숙별해주는 레이블. 사용자가 지정 가능.

 

☆데이터 프레임의 각 열은 시리즈이다.

☆데이터 프레임의 열을 선택할 때 문자열을 사용하면 시리즈가 반환된다.(단일 열을 선택할때는 시리즈가 나온다. 하지만 여러개의 열을 선택할때는 일반적으로 데이터프레임이 반환된다. 괄호 안에 뭘 지정한다고 항상 시리즈가 나오는 건 아니다.)

☆중복된 인덱스가 있을 때는 시리즈가 복잡해질 수 있으니, 유일한 인덱스를 사용하는 것이 좋다.

 

inplace : 현재 접근하고 있는 데이터 프레임 객체 값을 직접 바뀌게 해줌. inplace를 사용하지 않으면 값을 다시 저장해 줘야함.

inplace = False (저장 안 함)

inplace = True (저장함)

(구글링을 해봤더니 사용하지 말라는 글이 간간히 보였다. 아무래도 이 함수에 오점이 있는것 같다. 더 나은 개발자를 목표로 하려면 쓰지 않는게 나은 선택같기도 하다.)