Processor

【Pandas】 DataFrame 만들기와 속성

작성자 임베디드코리아 작성일26-04-16 00:14 조회79회 댓글0건
***< DataFrame 만들기 >***************************************************
◆ 판다스의 기본 데이터 객체에는 시리즈 series와 데이터프레임 DataFrame 가 있다. 
◆ Pandas에서 DataFrame을 생성하는 방법은 여러 가지가 있다.

[ 1 ]  딕셔너리로 DataFrame 만들기
      가장 일반적인 방법은 딕셔너리(dict)를 이용해 데이터를 만드는 방법이다.
_____________________________________________________________________
import pandas as pd
# 딕셔너리로 DataFrame 생성
data = {
    '이름': ['홍길동', '이몽룡', '성춘향'],
    '나이': [25, 30, 22],
    '직업': ['학생', '선생님', '배우']
}
df = pd.DataFrame(data)
# DataFrame 출력
print(df)
----------------------------------------------------------------------

[ 2 ]  리스트로 DataFrame 만들기
      리스트의 리스트를 사용해서 DataFrame을 만들 수도 있습니다. 이때 열 이름을 따로 지정해 줘야 한다.
_____________________________________________________________________
# 리스트로 DataFrame 생성
data = [
    ['홍길동', 25, '학생'],
    ['이몽룡', 30, '선생님'],
    ['성춘향', 22, '배우']
]
# 열 이름 지정
df = pd.DataFrame(data, columns=['이름', '나이', '직업'])
# DataFrame 출력
print(df)
-----------------------------------------------------------------------

[ 3 ]  리스트와 딕셔너리를 함께 사용해 DataFrame 만들기
      리스트 안에 딕셔너리를 넣어서 만들 수도 있다.
_____________________________________________________________________
# 리스트와 딕셔너리로 DataFrame 생성
data = [
    {'이름': '홍길동', '나이': 25, '직업': '학생'},
    {'이름': '이몽룡', '나이': 30, '직업': '선생님'},
    {'이름': '성춘향', '나이': 22, '직업': '배우'}
]
df = pd.DataFrame(data)
# DataFrame 출력
print(df)
-----------------------------------------------------------------------

[ 4 ]  Numpy 배열로 DataFrame 만들기
      NumPy 배열을 DataFrame으로 변환하는 방법도 있다.
_____________________________________________________________________
import numpy as np
# Numpy 배열로 DataFrame 생성
data = np.array([
    ['홍길동', 25, '학생'],
    ['이몽룡', 30, '선생님'],
    ['성춘향', 22, '배우']
])
df = pd.DataFrame(data, columns=['이름', '나이', '직업'])
# DataFrame 출력
print(df)
----------------------------------------------------------------------


***< DataFrame의 속성 리스트 >*****************************************************
◆ Pandas의 DataFrame에서 '메소드(함수)'가 아닌 데이터의 상태를 보여주는
    '속성(Attributes)'만 따로 골라내는 것은 매우 유용하다.
◆ 속성은 메소드와 달리 괄호 ()를 붙이지 않고 호출하며,
    데이터의 모양, 타입, 인덱스 정보 등을 담고 있다.

[ 1 ] DataFrame 속성 추출 프로그램
      Pandas 공식 문서의 기준에 따라, 호출 가능한(callable) 메소드를 제외하고
      순수하게 데이터프레임의 상태를 나타내는 속성들만 필터링하는 코드이다.
___________________________________________________________________________________________
import pandas as pd

# 샘플 데이터프레임 생성
df = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})

# 1. dir(df)로 전체 목록을 가져옵니다.
# 2. 내부 속성(_)은 제외합니다.
# 3. getattr()을 사용해 해당 속성이 '호출 가능(callable)'한지 체크하여 메소드를 제외합니다.
attributes = [
    attr for attr in dir(df)
    if not attr.startswith('_') and not callable(getattr(df, attr))
]

print(f"Pandas DataFrame의 주요 속성 개수: {len(attributes)}개")
print("-" * 50)

# 결과 출력 (보기 좋게 5개씩 출력)
for i in range(0, len(attributes), 5):
    print(", ".join(attributes[i:i+5]))
---------------------------------------------------------------------------------------------------------
Pandas DataFrame의 주요 속성 개수: 17개
--------------------------------------------------
A, B, T, at, attrs
axes, columns, dtypes, empty, flags
iat, index, ndim, shape, size
style, values

[ 2 ] 핵심 속성 레이아웃 이해
      DataFrame의 속성을 이해하려면 데이터프레임이 어떤 물리적 구조로 이루어져 있는지 아는 것이 중요하다.

[ 3 ] 주요 속성 요약

속성명        설명                                                          예시 출력
---------------------------------------------------------------------------------------------------------------------
shape        데이터프레임의 행과 열 크기를 튜플로 반환            (100, 5)
columns      열(Column) 이름을 담고 있는 인덱스 객체 반환      Index(['A', 'B'], dtype='object')
index          행(Row) 인덱스 정보를 반환                              RangeIndex(start=0, stop=100, step=1)
dtypes        각 열의 데이터 타입(int, float, object 등) 확인        A: int64, B: float64
values        데이터를 Numpy 배열(array) 형태로 반환              [[1, 3], [2, 4]]
T              행과 열을 바꾼 전치 데이터프레임(Transpose)        (행과 열이 뒤바뀐 형태)
empty        데이터프레임이 비어 있는지 여부 확인                  True 또는 False
size          전체 요소의 개수 (행 수 X 열 수)                              500
------------------------------------------------------------------------------------------------------------------------

***< DataFrame 속성 살펴보기 >**************************************************

(1) shape
    데이터프레임의 행(row)과 열(column)의 수를 반환한다.
__________________________________________________________________________
import pandas as pd

data = {'이름': ['홍길동', '김철수', '이영희', '박영수'],
        '나이': [25, 30, 35, 40],
        '직업': ['학생', '개발자', '디자이너', '기획자']}

df = pd.DataFrame(data)

print("데이터프레임의 shape:", df.shape)
----------------------------------------------------------------------------
출력:
데이터프레임의 shape: (4, 3)

(2) index
    데이터프레임의 행 인덱스를 반환한다.
_______________________________________________________________________
print("데이터프레임의 인덱스:", df.index)
-----------------------------------------------------------------------
출력:
데이터프레임의 인덱스: RangeIndex(start=0, stop=4, step=1)


(3) columns
    데이터프레임의 열 이름들을 반환한다.
_______________________________________________________________________
print("데이터프레임의 열:", df.columns)
-----------------------------------------------------------------------
출력:
데이터프레임의 열: Index(['이름', '나이', '직업'], dtype='object')

(4)  dtypes
    각 열의 데이터 타입을 반환한다.
_______________________________________________________________________
print("데이터 타입:\n", df.dtypes)
-----------------------------------------------------------------------
출력:
데이터 타입:
이름    object
나이    int64
직업    object
dtype: object

(5) values
    데이터프레임의 모든 값을 배열(numpy array)로 반환한다.
_______________________________________________________________________
print("데이터프레임의 값:\n", df.values)
-----------------------------------------------------------------------
출력:
 데이터프레임의 값:
 [['홍길동' 25 '학생']
 ['김철수' 30 '개발자']
 ['이영희' 35 '디자이너']
 ['박영수' 40 '기획자']]

(6) T (Transpose)
    데이터프레임의 행과 열을 전치(transpose)한다.
_______________________________________________________________________
print("전치된 데이터프레임:\n", df.T)
-----------------------------------------------------------------------
출력:
전치된 데이터프레임:
            0      1            2          3
이름    홍길동  김철수    이영희    박영수
나이      25      30          35        40
직업    학생  개발자    디자이너  기획자

(7) size
  데이터프레임 내에 있는 전체 원소의 수를 반환한다.
_______________________________________________________________________
print("데이터프레임의 크기:", df.size)
-----------------------------------------------------------------------
출력:
데이터프레임의 크기: 12


(8) ndim
    데이터프레임의 차원 수를 반환합니다. 일반적으로 DataFrame은 2차원, Series는 1차원 이다.
_______________________________________________________________________
print("데이터프레임의 차원:", df.ndim)
-----------------------------------------------------------------------
출력:
  데이터프레임의 차원: 2

(9) empty
    데이터프레임이 비어있는지 여부를 반환한다.
_______________________________________________________________________
print("데이터프레임이 비어 있는가?:", df.empty)
-----------------------------------------------------------------------
출력:
  데이터프레임이 비어 있는가?: False

(10) memory_usage()
    각 열의 메모리 사용량을 반환한다.
_______________________________________________________________________
print("메모리 사용량:\n", df.memory_usage())
-----------------------------------------------------------------------
출력:
  메모리 사용량:
  Index    128
  이름      32
  나이      32
  직업      32
  dtype: int64