Python Pandas

현준·2024년 6월 27일

사관학교

목록 보기
12/23

Pyandas

panel data - 격자무늬로 데이터가 들어가 있는 모습

##주요특성
-인덱싱을 활용하여 데이터 조작이 가능한 DataFrame 객체가 존재
-데이터 컬럼의 추가 삭제 수정
-데이터 간의 분할 병합
-다수의 Series가 모여 DataFrame을 이룹니다

  • import pandas as pd
    import numpy as np

Series

-index value 구성
-DataFrame을 구성하는 하위 요소
    
# 시리즈 생성
# pd.Series(배열/ 리스트)
series1 = pd.Series([10,20,30])
series1
#인덱스 미 지정시 0~ 숫자 생성


#인덱스 지정하여 시리즈 생성
series2 = pd.Series([10,20,30] , index = ['a','b','c'] )
series2

# k : v -> 딕셔너리
# 인덱스 지정하여 시리즈 생성 2
series3 = pd.Series({'a' : 10, 'b' : 20, 'c' : 30})
series3

* 시리즈 인덱싱
* 시리즈 인덱스 값이 정해져 있는 경우는 숫자가 아닌 인덱스 값으로 

접근
#시리즈 값 추가
series3['d'] = 100
series

#시리즈 값 삭제
# .drop()
series3 = series3.drop('a')

Dataframe

# pd.DataFrame(배열/리스트)

df1 = pd.DataFrame([1,2,3])

//
	0
0	1
1	2
2	3


df2 = pd.DataFrame([[1,2,3],[10,20,30]])

//
	0	1	2
0	1	2	3
1	10	20	30


df3 = pd.DataFrame([['a',10],['b',20],['3',30]], columns = ['hello','world'])
//
	hello	world
0	a	10
1	b	20
2	3	30

# 인덱스 명 지정 (, index = []) 
df3 = pd.DataFrame([['a',10],['b',20],['3',30]], columns = ['hello','world'], index=['kim', 'lee', 'park'])



# 컬럼을 바로 지정하는 방법 - 딕셔너리 구조
df4 = pd.DataFrame({'hello' : [1,2,3,4,5] , 'world' : [10,20,30,40,50]})

//

	hello	world
0	1	10
1	2	20
2	3	30
3	4	40
4	5	50


df5 = pd.DataFrame({'키':[175.3,180.2,178.6],'몸무게':[66.2,78.9,55.1],'나이':[27.0,49.0,35.0], '이름' : ['son','kim','park']})
df5

//
		키	몸무게	나이	이름
0	175.3	66.2	27.0	son
1	180.2	78.9	49.0	kim
2	178.6	55.1	35.0	park


# 인덱싱
# 1. 컬럼명 작성
# 2. 해당 컬럼만 시리즈 형식으로 가지고 옴
df5['키']

데이터 탐색을 편하게 해주는 기능

  • 컬럼 -> 인덱스
  • .set_index(컬럼명)

인덱서 -loc/iloc

1. loc : 실제로 보이는 인덱스/컬렴 명을 통해 데이터 접근

df5.loc[:]
//
	키	몸무게	나이
이름			
son	175.3	66.2	27.0
kim	180.2	78.9	49.0
park	178.6	55.1	35.0

2. iloc : 인덱스 번호로 접근

df5.iloc[:]


# 슬라이싱 행, 열 구분

print(df5.loc["son":"kim"])

* loc 데이터 슬라이싱 >> 이름으로 접근 시 마지막 데이터는 포함
display(df5.loc[:,:])
//
	키	몸무게	나이
이름			
son	175.3	66.2	27.0
kim	180.2	78.9	49.0
park	178.6	55.1	35.0


display(df5.loc['son':'kim','키':'몸무게'])
	키	몸무게
이름		
son	175.3	66.2
kim	180.2	78.9


* iloc 데이터 슬라이싱 >> 번호로 접근 시 마지막 번호는 포함 X

display(df5.iloc[:,:])
//
		키	몸무게	나이
이름			
son	175.3	66.2	27.0
kim	180.2	78.9	49.0
park	178.6	55.1	35.0


display(df5.iloc[:2,:])
//
		키	몸무게	나이
이름			
son	175.3	66.2	27.0
kim	180.2	78.9	49.0


display(df5.iloc[:2,1:])
//
		몸무게	나이
이름		
son	66.2	27.0
kim	78.9	49.0

# 불리언 인덱싱
df5['키'] > 180
//
이름
son     False
kim      True
park    False
Name:, dtype: bool

df5[df5['키'] > 180]    == df5.query('키>180')
//
키	몸무게	나이
이름			
kim	180.2	78.9	49.0

CSV 불러오기

  • .read.csv()
mpg = pd.read_csv('data/mpg.csv')

데이터 정보 확인 함수

  1. 상단 데이터 확인
.head(개수)
  • 기본값 = 5
  1. 하단 데이터 확인
.tail()
  1. 테이블 데이터 타입 확인
.info()
  1. 숫자 데이터에 대한 요약 통계
.describe()

엑셀 함수

  1. 카피본 만들기
.copy()
  1. 컬럼명 바꿔주는 함수
.rename()

0개의 댓글