24.01.22
판다스 (Pandas)
데이터 분석 및 조작을 위한 Python 라이브러리
행과 열로 이루어진 데이터 객체를 만들어 다룰 수 있음 (대용량의 데이터들을 처리하는데 매우 편리)
흔히 사용하는 Excel과 비슷
기본 구조
import numpy as np
import pandas as pd
1. Series : 1차원 배열 구조, 열(Column) 각 데이터 값에 고유한 인덱스를 부여
= pandas.Series(data, index, dtype, copy)
= 시리즈 = 값(value) + 인덱스(index)
ex)
obj = pd.Series([-5, 0, 10, 3])
obj
2. DataFrame : 여러 시리즈 객체들이 모인 2차원 배열 구조
행 (row) : 레코드(record), 관측값(observation)
열 (column) : 공통의 속성을 갖는 일련의 데이터, 속성, 범주, 변수(variable)로 활용
1. 하나의 열이 되는 데이터를 리스트나 일차원 배열을 준비
2. 각각의 열에 대한 이름(라벨)을 키로 가지는 딕셔너리를 생성
3. 이 데이터를 DataFrame 클래스 생성자에 넣음, 동시에 열 방향 인덱스는 columns 인수로 행방향 인덱스는 index 인수로 지정
데이터프레임 생성
= pandas.DataFrame(data, index, columns, dtype, copy)
ex)
data = {
"2015": [9904312, 3448737, 2890451, 2466052],
"2010": [9631482, 3393191, 2632035, 2431774],
"2005": [9762546, 3512547, 2517680, 2456016],
"2000": [9853972, 3655437, 2466338, 2473990],
"지역": ["수도권", "경상권", "수도권", "경상권"],
"2010-2015 증가율": [0.0283, 0.0163, 0.0982, 0.0141]
}
columns = ["지역", "2015", "2010", "2005", "2000", "2010-2015 증가율"]
index = ["서울", "부산", "인천", "대구"]
df = pd.DataFrame(data, index=index, columns=columns)
df
3. Panel : 3차원의 데이터 구조
= 데이터프레임 모음 (시리즈가 모여 데이터프레임이 되고, 데이터프레임이 모여 패널이 된 것)
DataFrame에 적용되는 함수들
1. head() : 상위 5개 데이터 출력 (0~4)
2. tail() : 하위 5개 데이터 출력
3. info() : 데이터프레임의 요약 정보 출력함 (자료형, null값 수, 메모리 사용량 등)
4. describe() : 열에 대한 통계 요약 출력 (평균, 표준편차, 최솟값, 최댓값 등)
(문자형 데이터는 count()를 사용)
1. pandas.read_excel('경로') : excel 파일을 읽어들여 데이터프레임으로 변환
2. pandas.read_csv('경로') : csv 파일을 읽어들여 데이터프레임으로 변환
+ inplace=True: 원본 데이터프레임을 직접 수정
(axis=0 : 열 방향, axis=1 : 행 방향)
count : 전체 성분의 (NaN이 아닌) 값의 개수를 계산
min, max : 전체 성분의 최솟, 최댓값을 계산
argmin, argmax : 전체 성분의 최솟값, 최댓값이 위치한 (정수)인덱스를 반환
idxmin, idxmax : 전체 인덱스 중 최솟값, 최댓값을 반환
quantile : 전체 성분의 특정 사분위수에 해당하는 값을 반환 (0~1 사이)
sum : 전체 성분의 합을 계산
mean : 전체 성분의 평균을 계산
median : 전체 성분의 중간값을 반환
mad : 전체 성분의 평균값으로부터의 절대 편차(absolute deviation)의 평균을 계산
std, var : 전체 성분의 표준편차, 분산을 계산
cumsum : 맨 첫 번째 성분부터 각 성분까지의 누적합을 계산 (0에서부터 계속 더해짐)
cumprod : 맨 첫 번째 성분부터 각 성분까지의 누적곱을 계산 (1에서부터 계속 곱해짐)
value_counts : 빈도 계산
nunique : 고윳값 계산, 중복되지 않은 값
+ 결측치
NaN은 Pandas에서의 null 값
numpy 라이브러리를 추가 사용함
df.loc[1, 'Age'] = np.nan
# [행, 열] 순서
= 'Age'의 1번째 인덱스값에 NaN을 추가
+ isnull() / notnull() : NaN값일 때 각각 True / False를 반환
열 (Columns)
단일 열 선택 : df['column_name'], 결과는 Series로 반환
다중 열 선택 : df[['col1', 'col2']], 결과는 DataFrame으로 반환
loc / iloc = 행과 열을 동시에 선택할 수 있음
loc : df.loc[:, 'Age'] 레이블 기반의 인덱싱으로 열 선택
iloc : df.iloc[:, 1] 정수 기반의 인덱싱으로 열 선택
열 생성
1. 데이터를 직접 넣음
2. 다른 데이터에서 가져와서 결합
df['Salary'] = [50000, 60000, 70000] # 첫 번째
df['Salary'] = 다른 데이터 자료 # 두 번째, 사용 시 concat / join 메서드 사용
열 삭제
drop() 메서드 사용
df = df.drop('Age', axis=1) # axis=1을 작성하지 않으면 행이 사라질 수 있음
+ NaN값만 제거해 주는 dropna메서드 (재할당이 어려울 경우 inplace=True 사용)
열 이름 변경
rename() 사용
df = df.rename(columns={'A': 'X', 'B': 'Y', 'C': 'Z'})
# columns({변경하기 전 : 변경한 후, 변경하기 전 : 변경한 후})
+ 모든 열 이름 변경 : columns = [값1, 값2, 값3, ...]
결합
열과 열을 결합
concat 함수는 각 시리즈가 동일한 행을 가지고 있을 때, 그렇지 않을 경우 join 사용
연산자
기본 연산자 : +, -, *, / 등
조건 연산자 : <, >, == 등 (boolean 시리즈 생성 가능, 해당 값만 가져올 수 있음)
논리 연산자 : & (AND), | (OR), ~ (NOT) 등
자세한 코드는 제 GitHub 들어가서 참고 부탁드립니다 :)
https://github.com/soohyun020812/ormcamp
GitHub - soohyun020812/ormcamp: 오름캠프 교육에서 활용한 실습 내용들 정리
오름캠프 교육에서 활용한 실습 내용들 정리. Contribute to soohyun020812/ormcamp development by creating an account on GitHub.
github.com