-
[python] 파이썬을 이용한 빅데이터 실습1 - SeriesLanguages/python 2021. 9. 12. 20:50반응형
jupyter notebook 사용하여 실습
https://www.anaconda.com/products/individual
Anaconda | Individual Edition
Anaconda's open-source Individual Edition is the easiest way to perform Python/R data science and machine learning on a single machine.
www.anaconda.com
에서 다운로드 가능하다
빅데이터 관련 기술
데이터 소스 - 수집 -저장 - 처리 - 분석 - 표현
사용하는 언어는 python
1991년 귀도 반 로썸이 발표한 인터프리티 언어
비단뱀이라는 뜻
파이썬(python) 특징
간결하고 가독성이 높은 문법
인터프리티언어이다
소스코드 -> 인터프리티 -> cpu/메모리
순차적으로 실행하고, 바로 결과 확인 가능하다
실행을 누른 후 번역을 하고 실행을 하기 때문에
컴파일 언어보다 실행 속도가 느리다
파이썬 사용의 장점
데이터 분석 및 인공지능의 다양한 기능을 제공
-> 데이터 분석 및 인공지능의 다양한 기능을 제공
결과를 표현할 때 웹 프레임워크 지원
-> 웹과 연동이 쉬워 확장성이 좋다
pandas를 활용하여 실습
쥬피터 노트북은 파이썬을 외부로 받아들여야만 사용가능
01. import 구문 사용하기
들여쓰기가 잘못되었을 때 발생하는 에러
python사용 시 공백이나 들여쓰기를 명확하게 지켜주어야 한다
1차원 데이터의 이해
스칼라(scalar)와 백터
스칼라 : 하나의 값
벡터 : 여러 개의 값으로 이루어진 집합
벡터 = 배열(Array) = 1차원데이터
python의 1차원 데이터 타입
리스트(List)
[3,5,1,2,10]
튜플(Tuple)
('빅','데','이','터')
리스트는 한 번 생성하고 나서 항목을 수정,삽입,삭제할 수 있지만,
튜플은 한 번 생성하면 값을 변경할 수 없다(중요)
사전(dict)
{'강의명': '빅데이터', '정원': 30, '가격': 100, '위치': '서울'}
강의명 정원 가격 위치 -> 키(key)
빅데이터 30 100 서울 -> 값(Value)
pandas의 데이터 타입
Series
인덱스(index)와 값(value)으로 구성
인덱스(index)
숫자 인덱 : 0부터 시작하여 자동부여 - 리스트와 비슷한 형태
문제 인덱스(= 인덱스 라벨) : 인덱스에 이름(의미)을 부여 - 사전 타입과 비슷한 형태
데이터
모든 데이터 타입 가능(정수, 실수, 문자열, 리스트, 튜플, ...)
import 하기
data = [3,5,1,2] data [3, 5, 1, 2] import pandas pandas.Series([3,5,1,2]) 0 3 1 5 2 1 3 2 dtype: int64
별칭을 사용해서 import 하기
'as' 라고 하는 키워드를 쓰고 뒤에 사용하기 편한 별칭을 줌
보통 줄임말을 사용함
import pandas as pd pd.Series([3,5,1,2]) 0 3 1 5 2 1 3 2 dtype: int64
series
생성
1차원 데이터를 저장하는 파이썬의 데이터타입인 리스트, 튜플, 사전 타입 들을 이용해서
Series 객체를 생성해 보고, Series 객체의 특징들을 살펴보도록 함
sample = Seires([85, 90, 75, 55, 45, 90, 85, 90, 100], index = ['a','b','c','d','e','f','g','h','i','j'])
속성[attribute]
Series가 가지고 있는 객체, 속성(특징) 혹은 간단한 기능을 제공
1) index - Seires의 인덱스 (혹은 인덱스 라벨)
in : sample.index
index = (['a','b','c','d','e','f','g','h','i','j'] ,dtype='object')
2) values - Series의 데이터
sample.values
array([85, 90, 75, 55, 45, 90, 85, 90, 100], dtype=int64)
3) size - Seires의 크기(데이터 길이)
sample.size
10
4) dtype - Series의 데이터의 데이터 타입
dtype('int64')
문자열일 경우 object
Series의 함수
함수(method)
속성보다 다양한 기능을 제공
함수 호출 시 전달되는 자료들을 인자
각 함수들은 정의된 인자가 있으며, 인자값 토대로 함수 실행
동일한 함수라고 하더라도 인자값 설정에 따라 동작방식 변동이 가능하다
중요!
함수는 () 를 꼭 사용한다
1) describe() - 통계 정보를 한 눈에 제공해주는 함수
2) 통계함수들 - max(), min(), avg(), ...
3) add_prefix(prefix) - 인덱스 라벨 앞에 prefix 문자열을 추가
이 함수에는 인자값이 꼭 필요하다!
sample.add_prefix('data-')
data-a 85 data-b 90 data-c 75 . . .
인자값의 유무는 함수마다 다르다
>>> () 의 안자값이 있느냐 없느냐
출력 데이터는 원본 데이터의 반영되지 않는다.
원본데이터를 바꾸고 싶다면?
원본데이터에 반영하면 된다!
sample2 = sample.add_prefix(prefix = 'big-') sample2 >> big-a 85 big-b 90 big-c 75 big-d 55 . . .
4) value_counts() - Seires에 있는 데이터 값을의 갯수
sample.valus_counts()
90 3 85 2 95 1 45 1 . . .
5) add(값) - Series의 데이터 각각에 값을 더하기
sample.add(100)
a 185 b 190 c 175 . . .
이때!
앞에 5개 데이터에는 5를 더하고, 나머지 5개의 데이터는 10을 더하고 싶다면?
list로 묶어야 한다.
sample.add([5, 10])
>> error
인자값을 모두 동일하게 주어야한다
sample.add([5,5,5,5,5,10,10,10,10,10])
a 90 b 95 c 80 d 60 e 50 f 100 g 105 h 95 i 100 j 110
6) append(series) - 인자로 받은 seires를 기존 series 뒤에 이어붙여서 하나의 series로 만든다
'k 80' 추가하고 싶다면?
sr = Series(80, index = ['k']) sample.append(sr) . . . k 80
인덱스를 사용할 때는 꼭 list로 묶어서 활용
7) isin(val_list) - Seires에 있는 각각의 데이터들이 val_list에 포함되어 있는지 여부를 확인
sample.isin([85])
마찬가지로 값이 하나라도
인덱스를 사용할 때는 꼭 list로 묶어서 활용
85 값만 True인 것이 확인가능하다.
[실습1]sample 데이터 내에 80이 있는지 확인하여 있으면 ture, 없으면 false를 출력
80 in sample.values False 85 in sample.values True
[실습2] sample의 인덱스 내에 'h'가 있는지 확인하여 있으면 true, 없으면 false
'h' in sample.index True
8) apply(func) - Series의 값에 func 함수를 적용
# 80 이상이면 good 미만이면 bad def get_grade(val): if val >= 80: return 'good' else : return 'bad' sample.apply(get_grade) a good b good c bad . . .
익명함수
=람다(lamda)함수
이름이없는 함수
함수를 재사용할 가능성이 희박하거나
굉장히 간단한 함수일 경우에만 사용함
sample.apply(lambda val: 'good' if val >=80 else 'bad') 위와 동일한 결과
익명함수의 장점
여러 줄의 코드가 필요한 일반함수에 비해 간결
메모리의 공간 절약 가능
반응형'Languages > python' 카테고리의 다른 글
[python] 파이썬을 이용한 빅데이터 실습 3 - DataFrame (0) 2021.09.12 [python] 파이썬을 이용한 빅데이터 실습 2 조건 색인 (0) 2021.09.12 [python] 상속과 클래스 (0) 2021.06.05 [python] 객체 지향 프로그래밍, 간단한 클래스의 정의와 활용, 내장 함수 isinstance, 매직 메소드(magic method) (0) 2021.06.05 [python] 파일 쓰기 write()와 읽기read()/ 파일 열기 함수 open() /파일 읽기 readlines()와 readline()/ 파일 읽기의 예외 처리/ mode='x'/바이너리 (0) 2021.05.30