Pandas-1

Junyong-Ahn·2024년 3월 7일

Python+시각화

목록 보기
2/9
import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.rand(3,4)*10, columns = list("ABCD"), index = list("abc"))
print(df)
# loc 활용 : 특정 요소만 선택 [[행], [열]]
print(df.loc[['a','b'],['B','D']])  #a,b 행의 B,D 열
print(df.loc[:,'B':'D']) # label : B~D열의 모든 행
print(df.loc['b',], type(df.loc['b',]))      # label : b행의 모든열 ->series로 출력
print(df.loc[['b']], type(df.loc[['b']]))    # label : b행의 모든열 ->DataFrame으로 출력
print(df.loc['a','C'])    # a행의 C열 -> Scalar 반환
print(df.loc['a':'b','A':'C']) # a~b 행의 A~C열
print(df.loc[df['C']>7,['A','B']])  # C 열의 값이 7보다 큰 행의 A,B 열

모두 같은 출력(series 형식)

dt = pd.DataFrame(np.arange(12).reshape(4,3), columns=list("ABC"), index=list('abcd'))

# 2번째 행('c'행) 의 모든 열을 Series 형식(List, 배열)으로 표현
print(dt.iloc[2])
print(dt.iloc[2,])
print(dt.iloc[2,:])
print(dt.loc['c'])
print(dt.loc['c',])
print(dt.loc['c',:])

Boolean Indexing

# loc 에서의 boolean indexing
print(dt.loc[dt['A']%6==0,['A','C']])
# iloc 에서의 boolean indexing
print(dt.iloc[(dt['A']%6==0).to_list(),[0,2]])

데이터 조회 및 정렬

### 데이터 조회 및 정렬 ###
test.tail(3)
test.head(3)
test.sort_index(axis=1, ascending=False)
test.sort_values('C')  # C 열의 값 기준으로 졍렬
test.T   # 전치 -> 행/열 바꿈

### 데이터 수정, 삭제 ###
np.random.seed(1000)  # seed() 함수를 사용하면, 프로그램을 다시 실행해도 동일한 난수를 생성함. 
dt1 = pd.DataFrame(np.random.random((10,4)), columns = list('ABCD'))
dt1.where(dt1<0.5,0)

### 데이터 인덱싱, 선택, 필터링 ###
dt2 = pd.DataFrame({'name':['kim','lee','park','ahn'], 'age':[24,27,34,19]})
dt2['name'].isin(['kim','ahn'])   # name 열에 kim, ahn 가지고 있는지 -> Series 형태 Boolean
dt2.isin(['kim','ahn'])           # kim, ahn 을 포함하는지

0개의 댓글