Bigdata analytics
Why Python ?
간결하고 쉽다.
데이터 분석과 머신러닝을 위한 수많은 라이브러리들이 있습니다.
다양한 확장이 용이하다 (R, SPSS etc...)
Anaconda
내 계정 컴퓨터에 파일을 만들면 크롬에서 주피터로 연결되는 http://localhost:8888/tree/test_python 곳에서 내 파일이 생긴다.
C:\Users\owner\test_python
주피터 단축키
a = 3 #shift +e Enter 누르면 메모리가 올라감
print(a)
esc 커멘드 모드
esc 한 후에 ctrl c v 하면 복붙 가능
위에 셀 추가 아래 셀 추가
esc+ a 위에 줄 추가
esc+ b 아래 줄 추가
esc+ d 삭제
esc m 파이썬 명령어 넣더라도 실행안됨 / 마크다운처럼 쓸 수 있다.
--> Cell CellType code 로하면 코드라인으로 바뀐다.
tab키 자동완성
Shift +tab: 받아들이는 인자 뭔지 설명
help() 함수는 어떤 역할을 하는지 알려주는 함수이다.
import os
os.getcwd()
'C:\\Users\\owner\\test_python'
경로 어디인지 찾기!
esc ctrl s 저장
print("My name is {}".format("Groot"))
My name is 뒤에 Groot가 넣어진다.
print("My name is {} and I'm {} years old".format('Groot',99))
-> My name is Groot and I'm 99 years old
print("My name is {1} and I'm {0} years old".format('Groot',99))
->My name is 99 and I'm Groot years old
그외 Python Basic 참조
Python은
index 방식(대부분) : str, list , numpy,
key 방식 : dic, pandas.DataFrame
index
temp = "Python"
temp[0]
# 'P'
temp[0:4]
#'Pyth' --> 0이상 4이하 뒷부분 4는 언제가 제외된다.
temp[-1]
#'n' --> 맨 뒤에서 부터 접근
temp[ : ]
#'Python' --> 다나옴
참거짓
t = True
f = False
#대문자임
print(t && f) #바꿔쓸 수 있다
print(t and f)
함수
def just_print():
print("Yes, I'm groot")
#들여쓰기 맞춰줘야한다.
def add_nums(num1,num2):
print(num1+num2)
add_nums(2,3) # 5
def add_nums(num1,num2=10):
print(num1+num2)
add_nums(2) # 12 -> 위에서 num2를 미리 초기화 해준다면?
#print 와 return의 차이
def add_nums(x, y):
return x+y
a = add_nums(3, 4)
a # 7
여러개 줄이 들여쓰기가 안되어 있다면? 한줄한줄 고칠 수 없다
---> 단축키 shift tab
컨테이너 (다른 변수들을 담을 수 있는 자료형)
list, dict, tuple, set
리스트 (list) _ index
x = list(,,,) #이런 식으로 쓰기도 한다.
x = [3, 1, 2, 4, 6] # 리스트의 생성(대괄호)
x
#[3, 1, 2, 4, 6]
x[0:3] # [3, 1, 2] 를 출력하려면?
x[1: ] # 1부터 끝까지?
x.append("어머나") # 리스트 item 추가하기
x
x.pop() # 기본적으로 리스트의 마지막 요소를 삭제하고 반환 (pop(n) -> index 기반으로 n번째 아이템을 삭제할 수도 있음)
# 1) 데이터의 순서/자리를 활용하여 삭제할 때 : del == index를 활용 (추천)
del x[0] # 삭제의 영어 단어 앞 3글자?
# 2) 데이터 값 자체를 활용하여 삭제할 때 : remove() == value를 활용
# 3) 삭제 후 삭제한 값을 리턴받아 활용해야할 때 : pop() == index를 활용
# 리스트 합치기
y = [3, 4, 5]
z = x + y
# 리스트 정렬하기
z.sort()
# 리스트 역으로 정렬하기
z.sort(reverse=True)
딕셔너리_key
cage = {'Cat' : '야옹', 'Dog' : '멍멍'} # {key:value, key:value, ...} (중괄호)
cage['Cat'] # key 기반 호출
cage.get('Cat') # '얻다'
cage.get('Fish', '집나감') #'집나감'이 출력 / 없는키면 default value로 인식됨
print('Pig' in cage) # key 유무 체크 (있나없나?)
cage['Pig'] = '꿀꿀' # dict에 새로운 item 추가하기
del cage['Pig'] # 삭제의 영어 단어 앞 3글자?
cage.keys()
cage.values() # value들을 꺼내려면?
# list -> dict
temp = [['Cat', '야옹'], ['Dog', '멍멍'], ['Tiger', '어흥']]
cage = dict(temp)
튜플(tuple)
값과 크기가 변하지 않음
t = (5, 6)
type(t)
#자주 안쓴다
# 튜플이 사용되는 예시
def return_tuple(x, y):
return x, y
what = return_tuple(3, 4)
what # (3, 4)
set
중복을 허용하지 않음
x = set( , , ) #주로 이런식으로 쓴다.
s = {1, 2, 3, 3, 4, 4, 5} #잘 안씀
temp = [1, 2, 3, 3, 4, 4, 5]
temp
# 리스트 temp 에서 중복을 제거하고, 다시 리스트로 만드려면?
what = list(set(temp))
what #[1, 2, 3, 4, 5]
중복 날리는 용도로 쓰이긴 한다.
if
# x 가 'Groot' 인지 체크하고, 맞을 경우 'I'm groot' 를 출력하기
if x == 'Groot':
print("I'm groot")
if x != 'Groot':
print("I'm groot") #I'm groot
if lunch_price > 10000:
print("거참 창렬일세")
elif lunch_price < 3000: # else + if
print("와우 혜자다 혜자")
else: # 나머지 조건 모두 받기
print("얼른 벌어서 소고기 먹어야지")
for
nums = [1, 2, 3, 4, 5]
for number in nums:
range(5) # '범위'를 영어로? -> iterable이라고 부른다 0부터 5개꺼내줌(= 0부터 5미값 꺼내준다)
for index in range(5):
for item in cage.items(): # values + keys = items
print(item[1])
# enumerate 배우기
for index, student in enumerate(class_1):
print("얘 번호는 {}번이구요. 이름은 {}래요".format(index+1, student))
# for 문의 주된 활용 방식
empty_list = []
for student in class_1:
empty_list.append(student) # 리스트에 item 추가하기
class = ['철수', '영희', '동수'] # 왜 에러가 발생할까요?
class는 예약어 이다. class_1 = ['철수', '영희', '동수']
은 가능하다.
while
temp = 1
while temp <= 10:
print(temp)
temp += 1 # temp 를 1 증가시켜주려면?
# 무한 루프, Pass, Interrupting kernel
while True:
pass # *표시가 나면서 다른 셀들이 실행이 안된다, Kernel 에 interrupt해준다.
파일 읽고 쓰기
파일 쓰기
file = open('cage.txt', 'w', encoding='utf-8') # '열다'를 영어로? & w/r/a
cage = ['Cat', 'Dog', 'Tiger']
file.write(cage) # 에러 발생
# file.write(cage) 대신,
for animal in cage:
file.write(animal)
file.close() #써줘야 파일이 나온다.
with open('cage2.txt', 'w', encoding='utf-8') as file: #별명을 file이라고 지어서 for문이 끝날때 까지 함께 있는다는 의미
for animal in cage:
file.write(animal)
파일 읽기
file = open('cage.txt', encoding='utf-8') # 읽기 모드
file = open('cage.txt','r', encoding='utf-8') # 읽기 모드
cage = file.readlines() # 여러줄 한번에 읽어서 리스트에 담기
클래스
class Cage: # 클래스 X를
# 상속할 때에는 : class Cage(X):
#------------------------------------------
def print_something():
print("This is something!")
cage_1 = Cage()
cage_1.print_something() #오류남
# 파이썬 내부적으로 Cage.print_something()가 호출된다.
Cage.print_something(cage_1) #로 해줘야한다. 내가 ~인데 ~거 실행시켜줘라
##오류남
# ====> 바꿔라
class Cage: # 클래스 X를
# 상속할 때에는 : class Cage(X):
def print_something(self): #self로 해주면
print("This is something!")
cage_1.print_something()
Cage.print_something(cage_1)
#------------------------------------------
class Cage:
def __init__(self):
print("생성자 함수 호출")
def print_somthing(self):
print("This is something!")
# 클래스 선언 후 객체가 메소드를 호출할 때 메소드를 호출한 객체 자신이 첫번째 인자로 함께 전달된다.
# ("self"는 다른 값으로 바꿔줘도 무방함)
def print_something(self):
print("This is something!")
cage_1 = Cage() ## 생성자 함수 호출
cage_1.print_something() # 메소드 호출, check_animals 메소드를 호출한 객체 cage_1 이 자동으로 self에 전달된다.
## This is something!
#------------------------------------------
class Cage:
def __init__(self):
defalut_cage = ['Dog','Cat']
def print_somthing(self):
print("This is something!")
# 클래스 선언 후 객체가 메소드를 호출할 때 메소드를 호출한 객체 자신이 첫번째 인자로 함께 전달된다.
# ("self"는 다른 값으로 바꿔줘도 무방함)
def print_something(self):
print("This is something!")
cage_1 = Cage()
Cage.print_something(cage_1)
##This is something!
self 는 변수를 공유할 때
Pass (why we need 'self')
age.check_animals(cage_1) # == cage1.check_animals() -> cage_1 객체를 check_animals()에게 인자로 던져주는 것
#['Cat', 'Dog', 'Tiger']
Cage.check_animals(cage_2) # == cage2.check_animals()
#['Cat', 'Dog', 'Tiger', 'Pig']
# 사실 cage_1.check_animals()를 실행하면
# 백그라운드에서는 Cage.check_animals(chech_1) 이 실행되는 것
# 이 때 클래스 Cage 가 어떤 객체(instance)의 메소드를 호출해야하는지 모르기 때문에 객체를 인자로 전달해줘야 한다.
len('Python') # 길이?
list('Python')
dir('Python') # (여기서는 string) 객체가 자체적으로 가지고 있는 변수나 함수
# "Python"은 'str'이라는 데이터타입(클래스)이 만들어낸 객체이며 'str' 데이터타입(클래스)에 정의된 모든 속성(객체변수)과 메소드를 상속 받음
round(1.7) # 반올림
bool(1) # 참/거짓 판별
sum([1, 2, 3]) # 합
max([1, 2, 3]) # 최대값
min([1, 2, 3]) # 최소값
list(range(0, 100, 10))
#######
def func(x):
return x**2
func(5)
# 한줄로 함수를 쓰고 싶다면 ? java의 람다함수
# x(input) 를 받아 x**2(output) 를 return 해주는 람다 함수
func = lambda x:x**2
func(5)
# 함수의 input : 함수의 output (:를 기준으로)
#######
import random # 외장함수
x = random.random()
import os # 외장함수
os.getcwd() # get current working directory
라이브러리 활용하기 (Library == Package, Module(단일 .py)의 상위 개념 )
import numpy # import 라이브러리이름
a = numpy.array([1, 2, 3])
##array([1, 2, 3])
import numpy as np # import 라이브러리이름 as 별명
a = np.array([1, 2, 3])
##array([1, 2, 3]) -->제일 좋은 방식
from numpy import array, ndarray # from 라이브러리이름 import 함수이름
a = array([1, 2, 3])
## array([1, 2, 3]) --> 제일 권장되지 않는다.
a = numpy.array([1, 2, 3])
##array([1, 2, 3])
import numpy as np # import 라이브러리이름 as 별명
a = np.array([1, 2, 3])
##array([1, 2, 3]) -->제일 좋은 방식
from numpy import array, ndarray # from 라이브러리이름 import 함수이름
a = array([1, 2, 3])
## array([1, 2, 3]) --> 제일 권장되지 않는다.
conda intall .... //아나콘다 프롬포트 상에서
라이브러리 치기
'CS > DataAnalysis' 카테고리의 다른 글
데이터 분석 (0) | 2021.04.11 |
---|---|
데이터 분석_설치환경구축, 라이브러리 (0) | 2021.03.28 |
정형 데이터의 전처리 / 탐색 /시각화 (0) | 2019.02.19 |