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
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
특정 열(컬럼) 가져오기
## 데이터프레임 특정 칼럼 가져오기
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