[의료 인공지능 데이터 분석 기본과정] 2.Pandas

금나현·2022년 7월 28일
1
import pandas as pd
import numpy as np

data = pd.Series([1,2,3,4], index=['a','b','c','d'])
data

#딕셔너리로 만들 수 있다.
population_dict = {
    'korea':5180,
    'japan':12718,
    'china':141500,
    'usa':32676
}
population = pd.Series(population_dict)
population

population.values

DataFrame

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

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

country

딕셔너리로 변환 가능

country.index

country.columns

country['gdp']

type(country['gdp'])

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

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

gdp_per_capita

country

저장과 불러오기

country.to_csv("./파일명.csv")
country.to_excel("파일명.xlsx")


country = pd.read_csv("경로")
country = pd.read_excel("경로")

Indexing/Slicing

loc : 명시적인 인덱스를 참조하는 인덱싱/슬라이싱

country.loc['china']

country.loc['korea':'japan',:"population"]

iloc : 파이썬 스타일 정수 인덱스 인덱싱/슬라이싱

country.iloc[0]

country.iloc[1:3, :2]

DataFrame 새 데이터 추가/수정

dataframe = pd.DataFrame(columns=['이름','나이','주소']) 
dataframe.loc[0] = ['임원균', '26', '서울']
dataframe.loc[1] = {'이름':'철수', '나이':'25', '주소':'인천'}
dataframe.loc[1, '이름'] = '영희'

dataframe

새로운 칼럼 추가

dataframe['전화번호'] = np.nan
dataframe

dataframe.loc[0, '전화번호'] = '01012341234'
dataframe

컬럼이름이 하나만 있다면 series, 리스트로 들어가있다면 DataFrame

dataframe['이름']

dataframe[['이름','주소','나이']]

누락된 데이터 체크

dataframe.isnull()

dataframe.notnull()

dataframe.dropna()

dataframe['전화번호'] = dataframe['전화번호'].fillna('전화번호없음')

series 연산

numpy array에서 사용했던 연산자들을 활용할 수 있다.

A = pd.Series([2, 4, 6], index=[0, 1, 2]) 
B = pd.Series([1, 3, 5], index=[1, 2, 3]) 
A+ B

A.add(B, fill_value=0) #결측치 한번에 정리하고 싶을 때

DataFrame 연산

add(+), sub(-), mul(*), div(/)


A = pd.DataFrame(np.random.randint(0, 10, (2, 2)), columns=list("AB")) 
B = pd.DataFrame(np.random.randint(0, 10, (3, 3)), columns=list("BAC")) 
A

B

A+ B

집계 함수

numpy array에서 사용했던 sum, mean등의 집계함수를 동일하게 사용할 수 있음

data = {
    'A': [ i+5 for i in range(3) ],
    'B': [ i**2 for i in range(3) ]
}

df = pd.DataFrame(data)

df['A'].sum()

df.sum()

df.mean()

값으로 정렬하기

sort_values()

df = pd.DataFrame({
    'col1' : [2, 1, 9, 8, 7, 4],
    'col2' : ['A', 'A', 'B', np.nan, 'D', 'C'],
    'col3': [0, 1, 9, 4, 2, 3],
})

df

df.sort_values('col1')

df.sort_values('col1', ascending=False)

df.sort_values(['col2', 'col1'])

profile
AI researcher를 꿈꾸는 간호사입니다 :)

0개의 댓글