240726 파이썬반
1. 데이터 사이언스 기초
1) 데이터 사이언스란 무엇일까
다양한 데이터로부터 새로운 지식과 정보를 추출하기 위해 과학적 방법론, 프로세스, 알고리즘, 시스템을 동원하는 융합 분야
2) 데이터 수집
- 웹 스크래핑 : 웹 페이지에서 데이터를 추출하는 기술
- 웹 크롤링 : 웹 페이지에서 자동으로 탐색하고 데이터를 수집하는 기술
- API : 공개된 API 통해 데이터 수집
3) csv 파일
- 몇가지 필드를 쉼표(,)로 구분한 텍스트 데이터 및 텍스트 파일
- 저장, 전송 및 처리 속도가 빠름
4)데이터 처리 및 데이터 분석
- numpy : 수학 계산용 패키지. pandas와 matplotlib 사용 위한 패키지
-- 다차원 배열(행렬), numpy 행렬 연산은 데이터가 많을수록 파이썬 반복문에 비해 훨씬 빠름, 다차원 행렬 자료 구조 제공(개발시 편함)
- pandas : 원하는 데이터만 추출, 데이터 분석에 활용 패키지
-matplotlib : 그래프 그려주는 패키지
2. numpy
#np.array() # 기존 배열을 numpy array로 변형
arr = [1, 2, 3, 4, 5]
np_arr = np.array(arr)
print(np_arr)
#타입확인 <class 'numpy.ndarray'>
print(type(np_arr)) # 파이썬에서 쓰는 리스트보다 효율적인 넘파이 배열
# 기본 배열생성
np.arange() #함수사용
arr = np.arange(15)
print(arr)
#[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]
*numpy 특징 :
# Numpy 2차원 배열 생성
- `np.arange()` 함수로 배열 생성 후! `reshape()` 를 통해 2차원 배열로 변형함
- reshape 의 x, y 축 곱이 배열의 개수와 맞지 않으면 에러가 발생함
# reshape(x축 개수, y축 개수)
arr = np.arange(15).reshape(3, 5)
print(arr)
#[[ 0 1 2 3 4]
# [ 5 6 7 8 9]
# [10 11 12 13 14]]
arr = np.arange(20).reshape(3, 5)
print(arr)
# ValueError: cannot reshape array of size 20 into shape (3,5)
#Indexing & Slicing
- 파이썬 기본 slice 와 비슷하지만, 다차원 배열에서의 사용이 조금 더 편리함
# 기본 indexing과 동일하나, ndarrary에서 차이점은 [행,축]으로 접근 가능하다
arr = np.arange(25).reshape(5, 5)
print(arr)
#[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]
[20 21 22 23 24]]
print(arr[1][2]) # 7
print(arr[1, 2]) # 7
*numpy 한계 :
- 유연성(데이터에 레이블을 붙이거나, 누락된 데이터로 작업)이 부족함
- 그룹화 등 구조화가 부족함
= > Pandas : 고성능 데이터 구조 만들 수 있음
=> numpy 기반으로 만들어진 패키지로 시리즈(1차원 배열)과 데이터프레임(2차원 배열)이라는 효율적인 자료구조 제공
3. pandas
1) csv 파일 읽는법
csv 파일을 읽는 방법 2가지 존재
1. Python 기본 file open 함수 사용 -> numpy 로 변형
2. numpy 의 file read 함수 사용
#특정 데이터 조회
- `iloc()` 함수 사용
- `row 번호` 로 조회 가능
- `loc()` 함수 사용
- `index명` 으로 조회 가능
#주의
#현재는 `index명`이 `Default(row 번호)`로 설정되어 있으므로 두 함수가 동일한 방식으로 사용된다.
1.결측치 제거
#결측치 : 무한값(`np.inf`) 나 띄워쓰기`' '`의 경우 결측값으로 판단하지 않는다.
isna & notna #na : not a number #__isnull() vs isna()__ 동일한 함수 # DB 에 저장된 결측치는 `null` 이라고 표시되는데, 이에 익숙한 사람들을 위해 `isna()` 의 별칭으로 `isnull()` 을 만듦
#결측지 처리 방법 두가지
dropna (버리기)
fillna (채우기)
2. 그룹화하기
groupby
#예제
df.groupby('직업').mean(numeric_only=True) #직업별 나이 평균
df.groupby(['직업', '성별']).mean(numeric_only=True).reset_index()
#`직업 별 평균 나이` 에서 `성별을 추가적으로 구분하여 출력` 하는 예시 코드
3. 고유값 개수 확인하기
unique & nunique
#unique : 고유값 종류 모두 출력
#df['직업'].unique() #array(['교수', '군인', nan, '리포터', '모델',...]
#nunique : 고유값 개수 반환 #df['직업'].nunique() #24
4. 정렬
sort_values() #함수
# 기본 오름차순
#예제
#직업별 오름차순, 나이별 내림차순
df.sort_values(by=['직업', '나이'], ascending=[True, False])
#모든 컬럼을 보기 위해서는 `by` 옵션을 활용한다.
'SSAFY' 카테고리의 다른 글
[수업기록] 알고리즘 : list(배열, 정렬, 순열-조합, 완전탐색, 그리디, 행렬) (0) | 2024.07.31 |
---|---|
[일기] 파이썬 수업이 끝이 났다 야호! (0) | 2024.07.26 |
[수업기록] OOP : 객제지향프로그램(2), 에러와 예외 (2) | 2024.07.25 |
[수업기록] OOP : 객체지향프로그램(1) (0) | 2024.07.24 |
[수업기록] 데이터 구조(2) (3) | 2024.07.23 |