본문 바로가기

Python/Pandas

[Python]Pandas Dataframe 란? + 기본 사용법

Concept

  • pands 라이브러리의 테이블형 데이터를 다루는 함수
  • 데이터 분석/머신 러닝에서 데이터 처리를 위해 주로 사용
  • 2차원이기 때문에 엑셀과 같이 각 데이터가 row, column으로 구성되며, 인덱스도 row, column 각각 존재한다.
    • 행의 레이블 → 인덱스
    • 열의 레이블 → 칼럼

사용 방법

Dataframe - Create

## create df
df = pd.DataFrame({
    "bench": [175, 185, 195],
    "squat": [325, 335, 355],
    "dead": [345, 355, 365]
})
print(df)

## create df with index
df = pd.DataFrame({
    "bench": [175, 185, 195],
    "squat": [325, 335, 355],
    "dead": [345, 355, 365]},
    index=['1차','2차','3차']
)
>>>
bench  squat  dead
0    175    325   345
1    185    335   355
2    195    355   365
    bench  squat  dead
1차    175    325   345
2차    185    335   355
3차    195    355   365

Dataframe - Read and Update

  • 2 차원이기 때문에 행,열 방향에 각각 index가 존재한다.
## create df with index
df = pd.DataFrame({
    "bench": [175, 185, 195],
    "squat": [325, 335, 355],
    "dead": [345, 355, 365]},
    index=['1차','2차','3차']
)

## read and update df
print(df.index)

# 행 방향 index 변경
df.index=['4차','5차','6차']
print(df)

# 열 방향 index 변경
print(df.columns)
df.columns=["clean","snatch","shoulder press"]
print(df)

# read value
print(df.values)

>>>
Index(['1차', '2차', '3차'], dtype='object')

    bench  squat  dead
4차    175    325   345
5차    185    335   355
6차    195    355   365

Index(['bench', 'squat', 'dead'], dtype='object')

    clean  snatch  shoulder press
4차    175     325             345
5차    185     335             355
6차    195     355             365

[[175 325 345]
 [185 335 355]
 [195 355 365]]

Dataframe - 인덱스로 특정 컬럼 선택하기

## index로 특정 컬럼 선택하기
df = pd.DataFrame({
    "이름": ["A","B","C"],
    "bench": [175, 185, 195],
    "squat": [325, 335, 355],
    "dead": [345, 355, 365]},
)
print(df)

df = df.set_index("이름")
print(df)

>>>
이름  bench  squat  dead
0  A    175    325   345
1  B    185    335   355
2  C    195    355   365

    bench  squat  dead
이름                    
A     175    325   345
B     185    335   355
C     195    355   365
  • 위 예제에서 만든 df 아래에서 계속 사용

Dataframe - 인덱스 확인, 인덱스 변경

print(df.index.name)

df.index.name = 'athlete'
print(df)

>>>
이름

         bench  squat  dead
athlete                    
A          175    325   345
B          185    335   355
C          195    355   365
  • 인덱스명이 이름에서 athlete으로 변경됐다.

Dataframe - 인덱스 reset

## index로 특정 컬럼 선택하기
df = df.set_index("이름")
print(df)

df = df.reset_index("이름")
print(df)

>>>
bench  squat  dead
이름                    
A     175    325   345
B     185    335   355
C     195    355   365
  이름  bench  squat  dead
0  A    175    325   345
1  B    185    335   355
2  C    195    355   365

Dataframe으로 데이터 가져오기

특정 행 가져오기

  • dt.loc → index 를 통해서 값을 찾음
  • dt.iloc → index 번호를 통해서 값을 찾음 (0부터 시작)
df = pd.DataFrame({
    "이름": ["A","B","C"],
    "bench": [175, 185, 195],
    "squat": [325, 335, 355],
    "dead": [345, 355, 365]},
)
## 데이터프레임 특정 행 가져오기
df = df.set_index("이름")
print(df.loc["A"])

df = df.reset_index("이름")
print(df.iloc[0])

>>
bench    175
squat    325
dead     345
Name: A, dtype: int64
이름         A
bench    175
squat    325
dead     345
Name: 0, dtype: object

특정 열(컬럼) 가져오기

  • 특정 열은 Series이다.
## 데이터프레임 특정 칼럼 가져오기
print(df)
print(type(df['bench']))
print(df['bench'])
print(df['bench'][0])
print(df.loc[0]['bench'])

>>>
이름  bench  squat  dead
0  A    175    325   345
1  B    185    335   355
2  C    195    355   365

<class 'pandas.core.series.Series'>

0    175
1    185
2    195
Name: bench, dtype: int64

175

175

Dataframe 컬럼 추가, 삭제 - Update, Delete

## Dataframe 컬럼 추가 - Update
print(df)
df['shoulder'] = [135,145,155]
print(df)

## Dataframe 컬럼 삭제 - Delete
del df['bench']
print(df)

>>>
이름  bench  squat  dead
0  A    175    325   345
1  B    185    335   355
2  C    195    355   365
  이름  bench  squat  dead  shoulder
0  A    175    325   345       135
1  B    185    335   355       145
2  C    195    355   365       155
  이름  squat  dead  shoulder
0  A    325   345       135
1  B    335   355       145
2  C    355   365       155

Dataframe 행 추가, 삭제 - Update, Delete

## Dataframe 행 추가 - Update
df = df.set_index("이름")
df.loc["A"] = [135, 235, 300]
print(df)

## Dataframe 행 삭제 - Delete
df = df.drop(["C"])
print(df)

>>>
bench  squat  dead
이름                    
A     135    235   300
B     185    335   355
C     195    355   365

    bench  squat  dead
이름                    
A     135    235   300
B     185    335   355

Dataframe 특정 컬럼 복사(선택) - copy()

  • 원본 데이터는 두고 필요한 데이터만 가져와서 사용
  • 필요한 데이터 분석시마다 필요한 칼럼만 가져와 사용
## Dataframe 특정 컬럼 복사(선택) - copy()
print(df)
df = df.set_index("이름")

df2 = df[['squat','dead']].copy()
print(df2)

>>>
이름  bench  squat  dead
0  A    175    325   345
1  B    185    335   355
2  C    195    355   365
    squat  dead
이름             
A     325   345
B     335   355
C     355   365

https://class101.net/products/5f47290f4fb5ee00159293c3