2. Pandas 자료구조_DataFrame

따또·2021년 7월 11일
0

Pandas DA

목록 보기
2/31
post-thumbnail

데이터프레임은 2차원 배열
즉, 행과 열이 존재!
행 인덱스 & 열 이름 이용!

1) Dictionary -> DataFrame

import pandas as pd

dict_data = {'c0' : [1,2,3], 'c1' : [4,5,6], 'c2' : [7,8,9], 'c3' = [10,11,12], 'c4' : [13,14,15]}

df = pd.DataFrame(dict_data)
// dictionary를 DataFrame으로 전환

2) 행 인덱스 / 열 이름 지정

import pandas as pd

df = pd.DataFrame([[15, '남', '덕영중'], [17, '여', '수리중']], 
index = ['준서', '예은'],
columns = ['나이', '성별', '학교'])
// pd.DataFrame 내 index와 columns을 활용하여 행 인덱스와 열 이름 지정

df.index = ['학생1', '학생2']
// 행 인덱스 변경
df.columns = ['연령', '남녀', '소속']
// 열 이름 변경

df.rename(columns = { '연령' : '나이', '남녀' : '성별', '소속' : '학교'} , inplace = True)
// 열 이름 변경 (연령 -> 나이, 남녀 -> 성별, 소속 -> 학교)

3) 행/열 삭제

import pandas as pd

exam_data = {'수학' : [90, 80, 70], '영어' : [98, 89, 95]}
df = pd.DataFrame(exam_data, index = ['서준', '우현', '민아'])

df2 = df[:]
// df2는 df를 복제한 것
df2.drop('우현', inplace = True)
// '우현' 행 삭제

df3 = df[:]
//df3은 df를 복제한 것
df3.drop(['우현', '민아'], axis = 0, inplace = True)
// '우현', '민아' 행 삭제
// 행 삭제는 axis = 0

df4 = df[:]
df4.drop('수학', axis = 1, inplace = True)
// '수학' 열 삭제
// 열 삭제는 axis = 1

4) 행 선택

label = df.loc['서준']
//인덱스 값을 직접 입력해서 선택하는 방법
position1 = df.iloc[0]
// 정수형 위치를 입력해서 선택하는 방법

label2 = df.loc[['서준', '우현']]
position2 = df.iloc[[0,1]]

label3 = df.loc['서준' : '우현']
// 서준, 우현 모두 포함
position3 = df.iloc[0:1]
// 서준만 포함

5) 열 선택

math = df['수학']
// 데이터 값만 포함
math = df[['수학']]
// 컬럼명 함께 출력 가능
math_eng = df[['수학', '영어']]

6) 원소 선택

import pandas as pd

exam_data = {'이름' : ['서준', '우현'],
'수학' : [90, 80],
'영어' : [89, 83]}

df = pd.DataFrame(exam_data)

df.set_index('이름', inplace = True)
// '이름' 열을 새로운 인덱스로 지정

a = df.loc['서준', '수학']
// 서준이의 수학 점수 (90)
b = df.iloc[0, 1]
// 서준이의 영어 점수 (89)
c = df.loc['서준', ['수학', '영어']]
// 서준이의 수학, 영어 점수
d = df.iloc[0, [0,1]]
// 서준이의 수학, 영어 점수
e = df.loc['서준', '수학':'영어']
// 서준이의 수학, 영어 점수
f = df.loc[['서준', '우현'], ['수학', '영어']]
// 서준이와 우현이의 수학, 영어 점수

7) 열 추가

df['국어'] = 80
// 국어 열 추가, 데이터 값은 80

8) 행 추가

import pandas as pd

exam_data = {'이름' : ['서준', '우현'],
'수학' : [90, 80],
'영어' : [89, 83]}

df = pd.DataFrame(exam_data)

df.loc[2] = 0
// 모든 값에 0 추가
df.loc[3] = ['동규', 83, 28]
// 차례로 이름 열, 수학 열, 영어 열에 데이터 값 입력
df.loc[4] = df.loc[2]
// 기존 행 복사하여 추가

9) 원소 값 변경

import pandas as pd

exam_data = {'이름' : ['서준', '우현'],
'수학' : [90, 80],
'영어' : [89, 83]}

df = pd.DataFrame(exam_data)

df.set_index('이름', inplace = True)
// '이름' 열을 새로운 인덱스로 지정

df.iloc[0][1] = 80
// 서준이의 영어 점수 변경 (89 -> 80)
df.loc['우현']['수학'] = 99
// 우현이의 수학 점수 변경
df.loc['우현', ['수학', '영어']] = 100, 50
// 우현이의 수학, 영어 점수 변경

10) 행, 열 위치 바꾸기

import pandas as pd

exam_data = {'이름' : ['서준', '우현'],
'수학' : [90, 80],
'영어' : [89, 83]}

df = pd.DataFrame(exam_data)
df = df.transpose()
// 행과 열 위치 바꾸기
df = df.T()
// 행과 열 위치 바꾸기
profile
따또의 DA 벨로그

0개의 댓글