https://2021nipa.elice.io/explore
1강 파이썬의 여러 가지 모듈과 패키지
1. 모듈
: 특정 목적을 가진 함수, 자료의 모임
1) 모듈을 사용하는 이유?
- 코드의 길이가 길어지는 상황에서 모든 함수, 변수를 구현하는 것을 불가능
- 누군가 만들어 놓은 함수, 변수 등을 활용하면 빠르고 효율적으로 사용할 수 있음
2. 모듈 사용하기
1) import(불러오기) 키워드를 이용해서 모듈 사용
ex) import random
2) 모듈 속 사용하려는 함수/변수의 사용법 확인
ex) random.randrange(start,stop) : range(start, stop) 중의 한 원소를 가지고 옴
ex)
import random
print(random.randrange(0,2))
3) 우리가 원하는 내용이 담긴 모듈 제작 가능 (.py로 만들 수 있음)
① py파일을 생성 후, 함수와 변수를 만든다.
#cal.py
def plus(a, b) :
c = a+b
return c
② 다른 파일에서 만들어 둔 py 파일을 불러온다.
: main.py에서 import cal을 통해 모듈 호출
③ 불러온 모듈 속 함수, 변수를 활용한다.
3. 패키지
: 모듈을 폴더(directory)로 구분하여 관리하는 것
- 왜? : 모듈을 편리하게 관리하기 위해서
< user 폴더 –> cal 모듈 –> plus 함수 이용 >
Ex1)
import user.cal
print(cal.plus(3, 4))
*main과 cal에 모두 plus 함수가 있다면 오류 발생 가능*
Ex2) from-import 사용
from user.cal imort plus
print(plus(3, 4))
2강 데이터 핸들링을 위한 라이브러리 Numpy
1. Numpy
: Numerical python : 파이썬에서 대규모 다차원 배열을 다룰 수 있게 도와주는 라이브러리
- 라이브러리 종류 : pandas, numpy, metplotlib
1) numpy를 사용하는 이유
: 데이터의 대부분을 숫자 배열로 볼 수 있음
: 반복문 없이 배열 처리 가능 (파이썬 리스트에 비해 빠른 연산을 지원하고 메모리를 효율적으로 사용)
import numpy as np : numpy 모듈을 불러와서 np 별칭 부여
2) 배열 생성하기
: numpy 배열 생성 및 출력 형태 확인
: ndarray : n차원의 배열
np_arr = np.array(range(5))
print(np_arr) / [0 1 2 3 4] (공백으로 구분) / 리스트(1차원)는 콤마로 구분
print(type(np_arr)) / <class ‘numpy.ndarray’>
2. 배열의 기초
1) 배열의 데이터 타입 dtype
: 파이썬 리스트와 달리 같은 데이터 타입만 저장 가능
arr = np.array([0, 1, 2, 3, 4], dtype=float)
print(arr) / [0, 1, 2, 3, 4, ]
print(arr.dtype) / ‘float64’
print(arr.astype(int)) / [0 1 2 3 4]
2) ndarray의 차원 관련 속성 : ndim(n차원) & shape
3) ndarray의 크기 속성과 shape 조절
Ex1)
arr = np.array([0, 1, 2, 3, 4, 5])
print(“arr.shape : {}” .format(arr.shape)) / arr.shape : (6, )
print(“배열 요소의 수 : {}” .format(arr.size)) / 배열 요소의 수 : 6
print(“배열의 길이 : {}” .format(len(arr))) / 배열의 길이 : 6
Ex2)
# arr.shape = 3, 2
print(“arr.shape : {}” .format(arr.shape)) / arr.shape : (3, 2)
print(“배열 요소의 수 : {}” .format(arr.size)) / 배열 요소의 수 : 6
print(“배열의 길이 : {}” .format(len(arr))) / 배열의 길이
3. Indexing & Slicing
1) Indexing
: 인덱스로 값을 찾아냄
Ex1)
x = np.arange(7)
print(x[3])
x[0] = 10 / x의 0번째 인덱스를 10으로 변경
Ex2)
x = np.arange(1, 13, 1) / 1부터 13까지, 간격은 1로 설정 / [[1 2 3 4]
[5 6 7 8]
[9 10 11 12]]
x.shape = 3,4
print(x[2, 3]) / 세로로 2번째, 가로로 3번째 인덱스
2) Slicing
: 인덱스의 값으로 배열의 일부분을 가져옴
Ex1)
print(x) / [0 1 2 3 4 5 6]
print(x[1:4]) / 1부터 3까지 출력 ( 배열의 시작은 0)
print(x[::2]) / 처음부터 끝까지 2의 간격을 두고 가져와라
Ex2)
print(x) / [[1 2 3 4]
[5 6 7 8]
[9 10 11 12]]
print(x[1:2, :2:3]) / [[5]]
3) Boolena Indexing
: 배열의 각 요소의 선택 여부를 Boolean Mask(불리언 마스크)를 이용하여 지정하는 방식
: Boolean Mask
: True, False로 구성된 Mask array
4) Fancy indexing
: 배열의 각 요소 선택을 index 배열을 전달하여 지정하는 방식
Ex1)
x = np.arnage(7)
print(x[[1, 3, 5]]) / [1 3 5]
Ex2)
x = np.arange(1, 13, 1).reshape(3,4)
print(x) / [[1 2 3 4]
[5 6 7 8]
[9 10 11 12]]
print(x[[0, 2]]) / [[1 2 3 4]
[9 10 11 12]
3강 데이터 조작 및 분석을 위한 pandas 기본
1. Pandas
: 파이썬 라이브러리
: 구조화된 데이터를 효과적으로 처리하고 저장
: array 계산에 특화된 Numpy를 기반으로 설계
1) Series
- Numpy의 array가 보강된 형태로 Data와 Index를 가지고 있음
- 값(values)을 ndarray 형태로 가지고 있음
- 인덱스를 지정할 수 있고 인덱스로 접근 가능
- Dictionary를 활용하여 series 생성 가능
2. DataFrame (데이터 프레임)
: 여러 개의 series가 모여서 행과 열을 이루는 데이터
- Index, Columns 이름 지정
country.index.name = “country”
country.columns.name = “info”
- 저장(Save) & 로드(Load)
< 저장 >
country.to_csv(“ ”)
country.to_excel(“ ”)
< 로드 >
country = pd.read_csv(“ ”)
country = pd.read_excel(“ ”)
3. 데이터 선택 및 변경하기
1) loc : 명시적인 인덱스를 참조하는 인덱싱/슬라이싱
ex) country.loc[‘china’]
2) iloc : 파이썬 스타일의 정수 인덱스 인덱싱/슬라이싱 (암묵적)
ex) country.iloc[0]
ex) country.iloc[1:3, :2]
3) masking 연산이나 query 함수를 활용하여 조건에 맞는 dataframe 행 추출 가능
ex) country[country[‘population’] < 10000] / masking 연산 활용
ex) country.query(“population > 10000”) / query 함수 활용
4) series도 numpy array처럼 연산자 활용 가능
ex) gdp_per_capita = country[‘gdp’] / country[‘population’]
ex) country[‘gdp per capita’] = gdp_per_capita
5) 데이터를 리스트로 추가 or 딕셔너리로 추가
ex) df = pd.DataFrame(columns =[‘이름’, ‘나이’,‘주소’])
ex) df.loc[0]=[‘길동’,‘26’, ‘서울’] / 리스트로 데이터 추가
ex) df.loc[1] = {‘이름’:‘철수’,‘나이’:‘25’, ‘주소’:‘인천’} / 딕셔너리로 데이터 추가
ex) df.loc[1, ‘이름’] = ‘영희’ / 데이터 수정
- NaN 컬럼 추가(not a number)
ex) df[‘전화번호’] = np.nan
ex)df.loc[0,‘전화번호’] = ‘01012341234’
6) dataframe에서 컬럼 삭제 후 원본 변경
ex) df.drop(‘전화번호’, axis = 1, inplace = True) / axis = 1: 열 방향 , =0 : 행 방향
/ inplace = true : 원본 변경 / false:원본 변경 x
4강 데이터 조작 및 분석을 위한 pandas 심화
1. 데이터 프레임 정렬하기
1) index 값 기준으로 정렬하기
: axis = 0 : 행 인덱스 기준 정력(default 오름차순)
ex) df = df.sort_index(axis = 0)
: 고려 사항 : 방향 , 오름차순/내림차순
- axis = 1 : 열 인덱스 기준
- 오름차순 : ascending = true / 내림차순 : ascending = false
ex) df.sort_index(axis = 1, ascending = False)
2) column 값 기준으로 정렬하기
: col1 컬럼 기준 정렬(default 오름차순)
ex) df.sort_values(‘col1’, ascending = True)
: col2 컬럼 기준 오름차순 정렬 후 col1 컬럼 기준 내림차순
ex) df.sort_calues([‘col2’, ‘col1’], ascending = [True, False]]
- col2의 기준을 방해하지 않는 선에서 col1 정렬 (중복에서 변경과 같은 부분)
2. 데이터 프레임 분석용 함수
1) 집계 함수 – count
: count, max, min, sum 등
: count 메서드를 활용하여 데이터 개수 확인 가능(default : NaN 값 제외)
ex) df.count(axis = 0) : 열 기준으로 카운트 / (세로줄)
df.count(axis = 1) : 행 기준 카운트 / ( 가로 줄 )
2) 집계 함수 – max, min
: max, min 메서드를 활용하여 최대, 최솟값 확인 가능(default : 열기 준, NaN 값 제외)
ex) df.max() / df.min() / 결과 데이터 값은 float 형식으로 나옴
3) 집계 함수 – sum, mean
: sum, mean 메서드를 활용하여 합계 및 평균 계산(default :열 기준, NaN 값 제외)
ex) df.sum() / df.mean()
: axis, skipna 인자 활용하여 합계 및 평균 계산 (행 기준, NaN 값 포함 시)
ex) df.sum(axis = 1) /행 기준 합계
ex) df.meann(axis = 1, skipna = False) / NaN값 포함 시 평균을 NaN로 표기
: skipna = true : nan를 무시
: fillna : nan 값이 존재하는 컬럼의 평균 구하여 NaN값 대체
ex) df[‘math’] = df[‘math’].fillna(B_avg) / math 컬럼에서 NaN 부분을 d_avg로 채워라
df.mean(axis = 1, skipna = False)
3. 그룹으로 묶기
1) group by
: 간단한 집계를 넘어서서 조건부로 집계하고 싶은 경우
ex) df.groupby(‘key’).sum() / key 컬럼을 기준으로 집계
df.groupby([‘key’,‘data1’]).sum()
2) aggregate
: groupby를 통해서 집계를 한 번에 계산하는 방법
ex) df.groupby(‘key’).agregate([‘min_집계함수’, np.median_numpy, max])
df.groupby(‘key’).aggregate({‘data1’: ‘min’, ‘data2’ : np.sum})
3) filter
: groupby를 통해서 그룹 속성을 기준으로 데이터 필터링
ex) df.groupby(‘key’).mean()
df.groupby(‘key’).filter(filter_by_mean)
/ 여기서 filter_by_mean은 평균이 3보다 크면 true라고 나오는 함수로 정의함
4) apply, lambda
: groupby를 통해서 묶은 데이터에 함수 적용
ex) df.groupby(‘key’).apply(lambda x: x.max() - x.min())
5) get_group
: groupby로 묶인 데이터에서 key값으로 데이터를 가져올 수 있다.
ex) df = pd.read_csv(“~”)
df.head()
df.groupbt(“시도”).get_group(“충남”)
len(df.groupby(“시도”).get_group(“충남”) / 개수
끝!
기본과정은 끝났다!
사실 좀 전에 끝내고 프로젝트랑 마무리지어서 응용 강의를 듣고 있는데
양이 많아서 이제야 정리했다.
응용과정도 파이팅,,~~
'교육' 카테고리의 다른 글
[2021 NIPA AI 온라인 교육][기본교육과정] 핵심 파이썬 기초 프로그래밍 (0) | 2021.11.15 |
---|---|
2021 NIPA AI 온라인 교육 (0) | 2021.11.15 |