Pandas
Series와 DataFrame
pd.Series([1,2,3,4])
a = [1,2,3,4]
pd.Series(a)
product1 = [['삼성',900000, '갤럭시22'], ['애플',1400000,'아이폰14'], ['엘지',1500000,'엘지그램']]
product2 = {'회사명':['삼성','애플','엘지'], '가격':[900000,14000000,1500000], '상품명':['갤럭시22','아이폰14','엘지그램']}
pd.DataFrame(product1) # 둘 다 동일하게 나옴
df2['상품명']
데이터 기본 정보 알아보기
1. column(열)
df1.columns = ['회사명','가격','상품명']
row(행)
df.index
# RangeIndex(start=0, stop=15, step=1)
df.info()
통계정보 알아보기
df.describe()
df.describe(include=object)
df.describe(include='all')
형태(shape) 알아보기
df.shape
# (15, 8)
원하는 개수의 데이터 보기
정렬하기
df.sort_index() # 오름차순 정렬
df.sort_index(ascending=False) # 내림차순 정렬
내림차순 정렬
# 키 순으로 내림차순 정렬 후 브랜드로 오름차순 정렬
df.sort_values(by=['height','brand'], ascending=[False,True])
원하는 컬럼값으로 정렬
df.sort_values(by='name') # 이름순으로 오름차순 정렬
df.sort_values(by='name',ascending=False) # 이름순으로 오름차순 정렬
by=['height','brand'] # 키 순으로 오름차순 정렬 후 브랜드로 오름차순 정렬
NaN 값을 맨 위로 올리고 싶을 경우
df.sort_values(by='height',ascending=False, na_position='first')
컬럼으로 데이터 다루기
컬럼으로 행 범위 선택하기
df[:3] # df.head(3)
df.loc[:, 'name']
df.loc[:3, 'name'] # index 3을 포함
df.loc[3:8, 'name':'height']
df.iloc[:, [0,2]]
df.iloc[:, 0:2] # 0.2 -> index 2를 포함하지 않음
데이터의 연산자
df['height'] >= 180
df[df['height'] >= 180][['name','gender','height']]
df.loc[df['height'] >= 180, ['name','gender','height']] # 동일함
isin 활용하기
company = ['플레디스','SM']
df['company'].isin(company)
df[df['company'].isin(company)]
df.loc[df['company'].isin(company),:] # 동일함
df.loc[df['company'].isin(company),['name','company']]
결측값(NaN)
결츨값인지 아닌지 여부 판단
df.isna()
df.isnull()
df['group'].isnull()
데이터 복사하기
row, column 추가 및 삭제하기
row 추가하기
df.append({'이름':'김사과'},ignore_index=True)
column 추가하기
# 국적 열을 추가해서 대한민국이라는 값 입력
df['국적'] = '대한민국'
# 이름이 김사과인 행의 국적컬럼값을 미국으로 변경
df.loc[df['이름'] =='김사과','국적'] ='미국'
통계함수 다루기
number값인 컬럼들만 모아서 통계
그룹으로 묶기
# 혈액형 별로 그룹을 맺고, 키의 평균값을 확인
df.groupby('혈액형')['키'].mean()
# 혈액형 별로 그룹을 맺고 또 성별로 그룹을 나눈 후 키의 평균값을 확인
df.groupby(['혈액형','성별'])['키'].mean()
결측값 채우기
중복값 제거하기
row, column 제거하기
데이터프레임 병합하기
특정 고유한 키(unique id)값을 기준으로 병합
병합의 기준: left, right, inner(교집합), outer(전체)
merge(데이터프레임1, 데이터프레임2, on='unique id', how='병합의 기준')
Series의 타입
날짜 변환하기
apply
map
# 성별 컬럼값을 하나하나 체크하여 남자일 경우 1, 여자일 경우 0 반환
map_gender = {'남자':1,'여자':0}
df['성별'].map(map_gender)
데이터프레임의 산술 연산
# 행들의 각 컬럼값들을 전부 합친값
df['파이썬'] + df['자료구조'] + df['데이터분석']
selete_dtypes
ex) selete_dtypes(include='object’)
원 핫 인코딩(One-Hot-Encoding)
더미변수
원 핫 인코딩은 한 개의 요소는 True, 나머지 요소는 False로 만들어 카테고리형으로 표현하는 기술
df['혈액형_code']를 머신러닝 알고리즘에 넣어 데이터를 예측하려고 지시를 하면 컴퓨터는 값들 간의 관계를 형성하게 됨
만약 B형은 1, AB형은 2라는 값을 가지고 있을 때, 컴퓨터는 'B형 + AB형 = O형' 라고 이상한 관계를 맺을 수 있게 됨
별도의 column을 형성해주고 1개의 column에는 True, 나머지는 False 라고 넣어줌으로 'A, B, AB, O형의 관계는 독립적이다' 라는 카테고리로 표현해주는 방식 -> 원 핫 인코딩
blood_map = {'A': 0, 'B':1, 'AB':2, 'O':3}
df['혈액형_code'] = df['혈액형'].map(blood_map)