Pandas :
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")
데이터 선택
...
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"))