Adventure Time - Finn 3
본문 바로가기
AI/파이썬

pandas - DataFrame

by hyun9_9 2026. 4. 10.

DataFrame

Series가 1차원이라면 DataFrame은 2차원으로 확대된 버전

Excel spreadsheet 라고 생각

2차원이기 때문에 인덱스가 row,column로 구성됨

row는 각 개별 데이터를, column은 객별 속성을 의미

Data Analysis, Machine Learning에서 data 변형을 위해 가장 많이 사용

 

read_csv()

filepath = os.path.join(base_path, 'titanic.csv')

# pd.read_csv() CSV 파일로부터 -> DataFrame 객체로 읽어오기
df = pd.read_csv(filepath)

# 함수로 만들어 놓기
df = None
def load_titanic():
  return pd.read_csv(filepath)

 

head(), tail()

상위 n개, 하위n개 행만 보기 (기본값 5)

 

shape, describe(), info()

shape 속성 ( row, colume) - (891,12)

describe 함수 - 숫자형 데이터의 통계치 계산 (descripitve statistics : 기술 통계랑)

info 함수 - 데이터 타입, 각 아이템의 개수등 출력

 

describe 

# 숫자형 데이터에 대해 기술통계량 정보
# count, mean, std : 개수, 평균, 표준편차
# max, min : 최대, 최소
# 25%, 50%, 75%  : 하위 4분위 하위 2분위...

df.describe()
"""

	PassengerId	Survived	Pclass		Age		SibSp		Parch		Fare
count	891.000000	891.000000	891.000000	714.000000	891.000000	891.000000	891.000000
mean	446.000000	0.383838	2.308642	29.699118	0.523008	0.381594	32.204208
std	257.353842	0.486592	0.836071	14.526497	1.102743	0.806057	49.693429
min	1.000000	0.000000	1.000000	0.420000	0.000000	0.000000	0.000000
25%	223.500000	0.000000	2.000000	20.125000	0.000000	0.000000	7.910400
50%	446.000000	0.000000	3.000000	28.000000	0.000000	0.000000	14.454200
75%	668.500000	1.000000	3.000000	38.000000	1.000000	0.000000	31.000000
max	891.000000	1.000000	3.000000	80.000000	8.000000	6.000000	512.329200
"""

 

info()

df.info()

# 각 컬럼별 타입, 비어있지 않은 값의 개수

"""
 #   Column       Non-Null Count  Dtype  
---  ------       --------------  -----  
 0   PassengerId  891 non-null    int64  
 1   Survived     891 non-null    int64  
 2   Pclass       891 non-null    int64  
 3   Name         891 non-null    object 
 4   Sex          891 non-null    object 
 5   Age          714 non-null    float64
 6   SibSp        891 non-null    int64  
 7   Parch        891 non-null    int64  
 8   Ticket       891 non-null    object 
 9   Fare         891 non-null    float64
 10  Cabin        204 non-null    object 
 11  Embarked     889 non-null    object 
dtypes: float64(2), int64(5), object(5)
"""

 

 

인덱스 (index)

각 아이템을 특정할ㅇ수 있는 고유의 값을 저장

복잡한 데이터의 경우, 멀티인덱스로 표현가능

df.index

# RangeIndex(start=0, stop=891, step=1)

 

컬럼 (column)

columns 속성

각각의 특성을 나타냄

복잡한 데이터의 경우, 멀티 컬럼으로 표현 가능

df.columns

"""
Index(['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp',
       'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked'],
      dtype='object')
      
"""

 

 

DataFrame 생성하기

df = pd.DataFrame([1,2,3])
"""
	0
0	1
1	2
2	3
"""

df = pd.DataFrame([

    [1, 2, 3], # 첫번째 행
    [4, 5, 6], # 두번째 행
])

"""
	0	1	2
0	1	2	3
1	4	5	6
"""

 

shape, ndim, size, len()

len(df)  # 행의 개수 axis-0 의 차원크기
# 2

df.shape
# (2, 3)

df.ndim
# 2

df.ndim
# 2

df.size
# 6

 

 

column, index 변경

df2 = pd.DataFrame([
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12],
], columns=['a', 'b', 'c', 'd'])
"""

	a	b	c	d
0	1	2	3	4
1	5	6	7	8
2	9	10	11	12

"""


df2.columns = ['국어', '영어', '수학', '과학']

"""
	국어	영어	수학	과학
0	1	2	3	4
1	5	6	7	8
2	9	10	11	12
"""

# index 변경
df2.index = ['고길동', '둘리', '마이콜']

"""
	국어	영어	수학	과학
고길동	1	2	3	4
둘리	5	6	7	8
마이콜	9	10	11	12
"""

 

dict 로 DataFrame 만들기

data = {'a': [100], 'b': [200], 'c': [300]}  # value 가 1차원 데이터
# index= 없어도 생성됨!  (기본 0-base index)
pd.DataFrame(data)

data = {'a': [100, 200, 300], 'b': ['cat', 'dog', 'bird'], 'c': [40, 50, 60]}
pd.DataFrame(data)

 

 

'특정 컬럼' 의 이름 변경 rename()

df2.rename(columns={'국어': 'kor', '과학': 'Sci'})
df2  # 원본 변경 없다!  inplace=

 

 

set_index(), reset_index()

df2.reset_index()

# 기존의 index 가 column 레벨로 올라오고
# 새로운 index 가 붙는다.

"""
	index	국어	영어	수학	과학
0	고길동	1	2	3	4
1	둘리	5	6	7	8
2	마이콜	9	10	11	12
"""
# drop=True. 기존의 index 는 사라진다.
df2.reset_index(drop=True)
"""

	국어	영어	수학	과학
0	1	2	3	4
1	5	6	7	8
2	9	10	11	12
"""

 

# set_index(컬럼). 컬럼을 index 로 내리고,  기존의 인덱스를 대체한다.
df2.set_index('국어')
"""
	영어	수학	과학
국어			
1	2	3	4
5	6	7	8
9	10	11	12
"""

 

Multi-level index, Multi-level column

pd.DataFrame({'k': [10]})
"""
	k
0	10
"""

pd.DataFrame({('k0', 'k1'): [10]})

"""
	k0
	k1
0	10

"""

pd.DataFrame({('k0', 'k1'): {'a': 10, 'b': 40}})
"""
	k0
	k1
a	10
b	40

"""
pd.DataFrame({('k0', 'k1'): {('a1', 'a2'): 10, ('b1', 'b2'): 40}})
"""
		k0
		k1
a1	a2	10
b1	b2	40

"""

df4 = pd.DataFrame(
   {
    ('k', 'k1') : [10, 20, 30, 31],
    ('k', 'k2') : [40, 50, 60, 61],
    ('j', 'j1') : [70, 80, 90, 91],
    ('j', 'j2') : [100, 110, 120, 121],
   },
   index = [['서울', '서울', '경기', '경기'], ['평일', '휴일', '평일', '휴일']]
)

"""

		k		j
		k1	k2	j1	j2
서울	평일	10	40	70	100
휴일	20	50	80	110
경기	평일	30	60	90	120
휴일	31	61	91	121

"""

'AI > 파이썬' 카테고리의 다른 글

pandas - DataFrame column 선택하기  (0) 2026.04.11
pandas - Series  (0) 2026.04.09
numpy - Boolean Indexing  (0) 2026.04.08
numpy - axis (차원축)  (0) 2026.04.07
numpy - shape (차원) 변경하기  (0) 2026.04.06