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 |