데이터 분석을 위한 라이브러리.2

Pandas

파이썬의 라이브러리 중 하나
구조화된 데이터를 효과적으로 처리하고 저장
Array 계산에 특화된 NumPy를 기반으로 설계

Series데이터

Numpy의 array가 보강된 형태
data와 index를 가지고 있음

dtype 인자로 데이터 타입을 지정할 수 있음

data = pd.Series([1,2,3,4], dtype = "float")
print (data.dtype)   #-> float64

인덱스를 지정할 수 있고 인덱스로 접근 가능

Dictionary를 활용하여 Series생성 가능

population_dict = {
	'china':141500,
    'japan':12718,
    'korea':5180,
    'usa':32676
}

population = pd.Series(population_dict)

DataFrame

여러개의 Series가 모여서 행과 열을 이룬 데이터

Dictionary를 활용하여 DataFrame 생성 가능

data ={
	'country': ['china','japan','korea','usa'],
    'gdp': [1409250000, 516700000, 169320000, 2041280000],
    'population':[141500, 12718, 5180, 32676]
}
country = pd.DataFrame(data)
country = country,set_index('country')

1.Dictionary( data={key:value} -> 2.sireis (series([1.2.3.4]) -> 3.dataFrame (1 -> 3 번으로가능)

DataFrame속성 확인방법

print(country.shape) # -> (4,2)
print(country.size) # -> 8
print(country.ndim) # -> 2
print(country.values) # [[1409250000     141500]
                         [ 516700000      12718]
                         [ 169320000       5180]
                         [2041280000      32676]]

index 와 column에 이름 지정

country.index.name = "Country" # 인덱스에 이름 지정
country.columns.name = "Info"  # 컬럼에 이름 지정

데이터 프레임 저장 및 불러오기 가능

#저장
country.to_csv("./country.csv") # csv (comma separated values)
country.to_excel("country.xlsx")
#불러오기
country = pd.read_csv("./country.csv") # comma separated values)
country = pd.read_excel("country.xlsx")

데이터 선택 및 변경하기

데이터 선택 - Indexing/slicing

.loc : 명시적인 인덱스를 참조하는 indexing/slicing
.iloc : 파이썬 스타일의 정수 인덱스 indexing/slicing

.loc

.iloc

컬럼명을 알고 있다면 활용하여 DataFrame에서 데이터 선택 가능

Masking 연산이나 query 함수를 활용하여 조건에 맞는 DataFrame행 추출 가능

country[country['population'] < 10000] # masking 연산 활용
country.query("population > 100000")   # query 함수 활용

결과값

Series도 numpy array처럼 연산자 활용 가능

gdp_per_capita = country['gdp'] / country['population']
country['gdp per capita'] = gdp_per_capita

결과값

데이터 추가/수정 -> list or Dictionary

df = pd.DataFrame(columns = ['이름','나이','주소']) #DataFrame 생성

df.loc[0] = ['길동','26','seoul'] # list로 데이터 추가
df.loc[1] = {'이름':'철수','나이':'25','주소':'인천'} # Dictionary로 데이터 추가
df.loc[1,'이름'] = '영희' #명시적 인덱스 활용하여 데이터 수정

결과값

데이터 변경 -> NaN 컬럼 추가 (NaN = Not a Number)
NaN값으로 초기화 한 새로운 컬럼 추가

df['전화번호'] = np.nan              # 새로운 컬럼 추가 후 초기화
df.loc[0,'전화번호'] = '01012341234' # 명시적 인덱스 활용하여 데이터 수정

결과값

데이터 변경 -> 컬럼 삭제
dataFrame에서 컬럼 삭제 후 원본 변경

df.drop('전화번호',axis = 1, inplace = True) # 컬럼삭제
# axis = 1 -> 열방향 / axis = 0 :행 방향
# inplace = True : 원본 변경 / inplace = False : 원본 변경 x

결과값

Masking 연산의 중첩은 & query활용의 중첩은 and!

좋은 웹페이지 즐겨찾기