[AI 온라인 교육] 데이터 조작 및 분석을 위한 pandas 기본

Yerin·2021년 9월 28일
0

AI

목록 보기
3/5
post-thumbnail

Pandas :

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

Series : NumPy와 array가 보강된 형태

  • Data와 Index를 가짐
  • 값(values)을 ndarray 형태를 가짐
  • 인덱스를 지정하고 인덱스로 접근 가능
  • Dictionary를 활용하여 Series 생성 가능
  • numpy array처럼 연산자 활용 가능
import pandas as pd
population_dic ={
    'china': 141500,
    'japan': 12718,
    'korea': 5180,
    'usa': 32676
}
population = pd.Series(population_dict)

나라 이름 -> 인덱스, 인구수 -> 데이터 형식이 됨

DataFrame : 여러 개의 Series가 모여서 행과 열을 이룬 데이터, Dictionary를 활용하여 생성 가능

딕셔너리 -> (시리즈) -> 데이터 프레임

DataFrame의 속성 확인
dataframe명.shape : 데이터의 모양
dataframe명.size : 데이터의 개수
dataframe명.ndim : dataframe의 차원
dataframe명.values : 데이터


여러 개의 시리즈로 데이터 프레임 만들기

import pandas as pd

population_dict = {
    'korea': 5180,
    'japan': 12718,
    'china': 141500,
    'usa': 32676
}
population = pd.Series(population_dict)

gdp_dict = {
    'korea': 169320000,
    'japan': 516700000,
    'china': 1409250000,
    'usa': 2041280000,
}
gdp = pd.Series(gdp_dict)

country = pd.DataFrame({
    'population': population,
    'gdp' : gdp
})
country.index.name = "Country" # 인덱스에 이름 지정
country.columns.name = "Country" # 컬럼에 이름 지정

# 데이터 프레임 저장 및 불러오기
country.to_csv("./country.csv")
country.to_excel("country.xlsx")

country = pd.read_csv("./country.csv")
country = pd.read_excel("country.xlsx")

데이터 선택

  • .loc: 명시적인 인덱스를 참조하는 인덱싱/슬라이싱
  • .iloc: 암묵적인 인덱스(정수 인덱스)를 참조
...
country.loc['china'] # 인덱싱
country.loc['japan':'korea',:'population'] # 슬라이싱

country.iloc[0] # 인덱싱
country.iloc[1:3, :2] # 슬라이싱

# 컬럼명을 이용한 DataFrame 데이터 선택
county['gdp'] # 시리즈 
county[['gdp']] # 데이터 프레임

# 조건에 맞는 DataFrame 행 추출
country[country['population'] < 10000] # masking 연산 활용
country.query("population > 100000") # query 함수 활용

데이터 변경 - 데이터 추가/수정/삭제

  • 리스트로 추가
  • 딕셔너리로 추가
import pandas as pd
df = pd.DataFrame(columns = ['이름','나이','주소']) # 데이터 프레임 생성
df.loc[0] = ['길동', '26', '서울'] # 리스트로 데이터 추가
df.loc[1] = {'이름':'철수', '나이': '25', '주소':'인천'} # 딕셔너리로 데이터 추가

# 명시적 인덱스를 활용하여 데이터 수정
df.loc[1, '이름'] = '영희'

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

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

두가지 조건을 충족하는 데이터 추출 실습

import numpy as np
import pandas as pd

print("Masking & query")
df = pd.DataFrame(np.random.rand(5, 2), columns=["A", "B"])
print(df, "\n")

# 데이터 프레임에서 A컬럼값이 0.5보다 작고 B컬럼 값이 0.3보다 큰값들을 구하기.
# 마스킹 연산을 활용
print(df[(df['A']<0.5 )& (df['B'] >0.3)])

# query 함수를 활용
print(df.query("A < 0.5 and B>0.3"))
profile
재밌는 코딩 공부

0개의 댓글