***< 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