Pandas - 행과 열을 다루는 방법
Pandas 행과 열을 다루는 방법
행과 열을 설정하는 다양한 기능들에 대해 정리해보았다.
- 행(인덱스), 열 이름 설정 방법
- loc, iloc 사용하여 행 선택 방법
- 행과 열 선택 방법
- 범위 슬라이싱을 사용하여 행 선택 방법
- 행(인덱스), 열로 바꾸는 방법
- 행, 열의 위치 바꾸는 방법
- 행, 열 추가 방법
- 덧셈, 뺄셈, 곱셈, 나눗셈 연산 방법
행 인덱스, 열 이름 설정
dict_data = {'국어': [90, 95, 80, 85], '영어': [85, 90, 85, 90], '수학': [80, 85, 90, 95]}
df = pd.DataFrame(dict_data)
df.index = ['길동', '영희', '철수', '영수'] #행 인덱스 설정
df.columns = ['국어', '영어', '수학'] # 열 이름 설정
print(df)
출력 내용
국어 영어 수학
길동 90 85 80
영희 95 90 85
철수 80 85 90
영수 85 90 95
loc, iloc 사용하여 행 선택하기
인덱스 이름 : DataFrame 객체.loc[행 인덱스, 열 이름]
예 : df.loc[‘길동’, ‘국어’]
형식 :DataFrame객체.iloc[행 번호, 열 번호] 예 : df.iloc[0, 0]
행 인덱스를 사용하여 2개 이상의 행 선택
label2 = df.loc[['길동', '영희']]
position2 = df.iloc[[0, 1]]
print("label2 :: ", label2)
print('\n')
print(position2)
print('\n')
행 인덱스의 범위를 지정하여 행 선택
label3 = df.loc['길동':'영희']
position3 = df.iloc[0:1]
print("label3 :: ", label3)
print('\n')
print(position3)
2개 이상 원소 출력
label4 = df.loc['길동', ['국어', '영어']]
print("label4 :: ", label4)
출력
국어 90
영어 85
d = df.iloc[0, [0, 1]]
print("d :: ", d)
출력
국어 90
영어 85
math1 = df['수학']
print("수학 :: ", math1)
print(type(math1))
print('\n')
수학 ::
길동 80
영희 85
철수 90
영수 95
english = df['영어']
print("영어 :: ", english)
영어 ::
길동 85
영희 90
철수 85
영수 90
print(type(english))
print('\n')
music_gym = df[['국어', '영어']]
print(music_gym)
print(type(music_gym))
print('\n')
math2 = df[['수학']]
print(math2)
print(type(math2))
set_index는 행 인덱스를 열로 바꾼다.
exam_data = {'이름' : [ '서준', '우현', '인아'],
'수학' : [ 90, 80, 70],
'영어' : [ 98, 89, 95],
'음악' : [ 85, 95, 100],
'체육' : [ 100, 90, 90]}
df = pd.DataFrame(exam_data)
df.set_index('이름', inplace=True)
print(df)
print('\n')
g = df.loc[['서준', '우현'], ['음악', '체육']]
print(g)
h = df.iloc[[0, 1], [2, 3]]
print(h)
출력 내용
음악 체육
이름
서준 85 100
우현 95 90
행 추가하기
df['국어'] = 80 #모든 컬럼의 값을 80으로 변경
print(df)
#새로운 행 추가 - 같은 원소 값 입력
df.loc[3] = 0
print(df)
수학 영어 음악 체육 국어
이름
서준 90 98 85 100 80
우현 80 89 95 90 80
인아 70 95 100 90 80
3 0 0 0 0 0
새로운 행 추가 - 여러 개의 원소 값 입력
df.loc[4] = ['동규', 90, 80, 70, 60]
print(df)
수학 영어 음악 체육 국어
이름
서준 90 98 85 100 80
우현 80 89 95 90 80
인아 70 95 100 90 80
3 0 0 0 0 0
4 동규 90 80 70 60
새로운 행 추가 - 기존 행 복사
df.loc['행5'] = df.loc[3]
print(df)
수학 영어 음악 체육 국어
이름
서준 90 98 85 100 80
우현 80 89 95 90 80
인아 70 95 100 90 80
3 0 0 0 0 0
4 동규 90 80 70 60
행5 0 0 0 0 0
기존 행 수정하기(modify element)
exam_data = {'이름' : [ '서준', '우현', '인아'],
'수학' : [ 90, 80, 70],
'영어' : [ 98, 89, 95],
'음악' : [ 85, 95, 100],
'체육' : [ 100, 90, 90]}
df = pd.DataFrame(exam_data)
df.set_index('이름', inplace=True)
print("exam_data :: ", df)
print('=======================================')
print('\n')
수학 영어 음악 체육
이름
서준 90 98 85 100
우현 80 89 95 90
인아 70 95 100 90
df.iloc[0][3] = 33
print(df)
수학 영어 음악 체육
이름
서준 90 98 85 33
우현 80 89 95 90
인아 70 95 100 90
df.loc['서준']['체육'] = 99
print(df)
수학 영어 음악 체육
이름
서준 90 98 85 99
우현 80 89 95 90
인아 70 95 100 90
df.loc['서준', '체육'] = 90
print(df)
수학 영어 음악 체육
이름
서준 90 98 85 90
우현 80 89 95 90
인아 70 95 100 90
df.loc['서준', ['음악', '체육']] = 50
print(df)
수학 영어 음악 체육
이름
서준 90 98 50 50
우현 80 89 95 90
인아 70 95 100 90
df.loc['서준', ['음악', '체육']] = 100, 50
print(df)
수학 영어 음악 체육
이름
서준 90 98 100 50
우현 80 89 95 90
인아 70 95 100 90
행, 열 위치 바꾸기 (transpose())
형식 : DataFrame 객체.transpose() 또는 DataFrame 객체.T
원래 데이터
exam_data = {'이름' : [ '서준', '우현', '인아'],
'수학' : [ 90, 80, 70],
'영어' : [ 98, 89, 95],
'음악' : [ 85, 95, 100],
'체육' : [ 100, 90, 90]}
df = pd.DataFrame(exam_data)
df.set_index('이름', inplace=True)
print("exam_data :: ", df)
print('=======================================')
print('\n')
수학 영어 음악 체육
이름
서준 90 98 85 100
우현 80 89 95 90
인아 70 95 100 90
transpose() : 행과 열을 바꾼다.
df = df.transpose()
print(df)
이름 서준 우현 인아
수학 90 80 70
영어 98 89 95
음악 85 95 100
체육 100 90 90
덧셈, 뺄셈, 곱셈, 나눗셈 연산
exam_data = {'이름' : [ '서준', '우현', '인아'],
'수학' : [ 90, 80, 70],
'영어' : [ 98, 89, 95],
'음악' : [ 85, 95, 100],
'체육' : [ 100, 90, 90]}
df = pd.DataFrame(exam_data)
ndf = df.set_index('이름') # inplace가 false이면 원본은 그대로 두고 새로운 객체를 반환한다.
print(ndf)
## index 초기화
ndf2 = ndf.reset_index()
print(ndf2)
student1 = pd.Series({'국어':100, '영어':80, '수학':90})
student2 = pd.Series({'수학':80, '국어':90, '영어':80})
print(student1)
print('\n')
print(student2)
print('\n')
addition = student1 + student2 #덧셈
subtraction = student1 - student2 #뺄셈
multiplication = student1 * student2 #곱셈
division = student1 / student2 #나눗셈
print(type(division))
result = pd.DataFrame([addition, subtraction, multiplication, division],
index=['덧셈', '뺄셈', '곱셈', '나눗셈'])
print(result)
댓글남기기