[Python_bigdata] 파이썬 기본 문법 (연산, 반복문, 조건문, 배열, 리스트, 함수, 패키지)

#Day05_01_basic

#!/usr/bin/env python

# coding: utf-8

 

# day05_01_data_type

 

# 주석

print('hello ,world')

 

# 데이터 타입

#숫자형

#정수형

a =123

b=-123

print(a)

print(b)

 

#실수형

c=123.123

d=100.000

print(c)

print(d)

print(c-d) #실수형은 정확하게 계산을 시킬 수 없는 영역이기 때문에 뒤에 0000001이 붙는다.

 

123.123 == 123.123

 

#문자형을 만드는 법

print('')

print("")

a="""

 

가독성 좋게 하는 법

 

 

"""

print(a)

 

# 파이썬은 문자형이 존재하지 않는다.

# 문자열만 존재한다.

 

a='hello world'

print(a)

print(a[0])

print(a[6])

print(a[0:6])

print(a[:])

print(a[0:])

print(a[:7])

print(a[7:])

 

#실습 w W로 변경

#조합을 해서 변경

w='w'

w=w.upper()

print(a[:6]+'W'+a[7:])

print(a[:6]+w+a[7:])

 

a='hello'

b='korea'

print(a,b)

 

#LIST

#여러가지 데이터 형을 동시에 가지고 있는 구조

#파이썬은 배열형이 존재하지 않는다.

#만드는 방법

a=[1,2,3]

a[1]

 

b=['a','b','c']

type(b) #b라는 변수의 데이터 타입을 검사

# b변수에서 'b'를 출력해라

b[1]

 

c = a+b

#c변수에서 값을 기준으로 2부터 'b'까지 출력

print(c[1:5]) #슬라이싱 이용

 

#리스트 : 값의 수정이 가능

 

#c변수의 1번째 방의 값 3 5로 변경해보기

c[1]= 5

#c변수의 1번째 방의 값 2 [8,9]로 변경

c[1]=[8,9]

#c변수의 2번째 방의 값 5 8,9로 변경

c[2:3]=[8,9]

c

 

#딕셔너리

#-json 의 형태와 유사

#java map형태와 유사

#key value로 이뤄진 데이터 타입

 

#딕셔너리 자료형 만들기

a={'baseball':'야구','name':'korea','job':[1,2,3]}

print(a)

 

print(a.get('baseball'))

print(a.get('name'))

print(a['name']) #고유 key [조회] 가능

#print(a[1])

#안되는 이유 : key는 고유성을 가져야한다. 만약 인덱스로 조회가 가능하다면 키가 1인 경우 중복되게 된다.

#구조적으로 딕셔너리는 순서가 없으므로 인덱스를 통한 조회가 불가능하다.

print(a['job'][2])

 

#딕셔너리 값 추가

a['python'] = 'python'

a

 

#딕셔너리 값 삭제 del

del a['python']

a

 

#Day05_02_basic.py

#!/usr/bin/env python

# coding: utf-8

 

#더하기

print(1+1)

 

#문자연산

print('a'+'b')

 

#자료형 연산 = 합치기

list01 = [1,2]

list02 = [3,4]

print(list01 + list02)

print(list02 + list01)

 

dic1 = {1:1,2:2}

dic2 = {3:3,4:4}

 

#print(dic1+dic2) #인덱스 넘버링이 없기 때문에 더해질 수 없다 .

dic1.update(dic2)

dic1

 

#나머지 사칙연산

print(3-2)

print(3 *2)

print(3**2)

print(3/2) #일반적인 나누기

print(3//2) #

print(3%2) #나머지

#실습, a변수의 값이 짝수인지 검사하는 수식을 만들어주세요.

#ex) true, false 인지 출력

a = 7

print(a%2 ==0)

 

#비교연산자

#응답 값이 무조건 네, 아니요로 나오는 것

1==1

1!=1

1>1

1>=1

'a'=='a'

'a'=='b'

[1,2,3]==[1,2]

 

#조건문

#조건에 따른 프로그램의 순서를 제어하는 기법(문법)

 

a = 10

#a 10보다 크면 10보다 크다, 작으면 작다

#10보다 큰 경우 a의 값도 출력

#들여쓰기 중요함

if a>10:

    print('10보다 금')

    print(a)

elif a==10:

    print('10이다')

else:

    print('10보다 작음')

 

#실습, 홀짝프로그램

a=7

if a%2==0:

    print('even')

else:

    print('odd')

 

 

#파이썬의 조검 특별한 if조건문

#x in 오브젝트

 

#만일 2 list01에 있으면 , 찾는 값이 존재한다. 를 출력

list01 = [1,2,3,4]

 

if 2 in list01:

    print('찾는 값 존재')

 

#pocket 안에 bill 이 존재하면 택시를 타고 가자

#card 가 존재하면 버스를 타고 가자

#없으면 걸어가자

 

pocket = ['coin','none','card']

if 'bill' in pocket:

    print('taxi')

elif 'card' in pocket: #elif는 무한으로 생성

    print('bus')

else:

    print('walk')

 

#반복문

#조건에 따라 프로그램을 여러번 동작시키는 것

#for  : 횟수가 중요한 경우

#while : 조건이 중요한 경우

#list01의 모든 값을 출력

list01= [1,2,3,4]

print(list01)

#값들을 +100씩 하여 출력

for object in list01:

    print(object+100)

 

#a의 변수에 o라는 문자가 몇번 출현하는지 횟수를 구하여라

 

a= 'hello world korea it'

cnt =0

 

for item in a: #a변수를 반복문을 이용하여 순회

    if 'o' in item: #a변수의 각 문자가 o인지 확인

        cnt = cnt+1

print(cnt)

 

#while

i = 0

while i <=4:

    print(i)

    i+=1

 

#함수(function)

#특정한 작업 동작을 사전에 미리 정의하여 동작하도록 제공

#python이 직접 가지고 있는 함수를 내장함수

#직접 만드는 함수를 외장함수(커스텀함수)라고 부름

 

#커스텀 함수 만들기

#홀짝 검사기 만들기

#def 이름():

#    구현

 

def odd_machine(val):

    if (val % 2 ) == 0:

        return ''

    else:

        return ''

 

odd_machine(2)

 

#내장함수

#입력값을 전부 더해주는 함수

sum([1,2])

 

max([1,3,5,7,8,3,12,3,1])

 

range(10)

for i in range(10):

    print(i)

 

#파이썬에 존재하는 조금 특별한 내장함수

#실행가능한 문자열을 받아서 실행해주는 함수

1+2

eval('1+2')

eval('odd_machine(1)')

 

list01 =  [1,2,3,4,3,42,52,35,2,3,4,5,5,6,6,6,6,4,4,3]

len(list01)

len('korea pyhton')

 

a='hello world'

for i in range(len(a)):

    #print(i)

    print(a[i])

 

#반올림

print(round(3.14))

print(round(3.14324234324,3)) #3자리 까지

 

#데이터 형변환

print(1+1) #숫자 연산

print('1'+'1') #문자 연산

#숫자와 문자를 연산한다면?

print(str(1)+'1')

print(1+int(1))

 

#객체의 타입 확인

print(type(1))

print(type('1'))

 

#정렬함수

list02 = [5,3,6,2,1,11]

list02

print(sorted(list02))#오름차순

print(sorted(list02,reverse=True))#내림차순

 

 

Day05_03_packages

#!/usr/bin/env python

# coding: utf-8

 

#외부 패키지 이용하기

#날짜

import datetime as dt

get_ipython().system('pip install scikit-learn')

 

# 현재 날짜

dt.datetime.now()

 

#now_dt 를 이용, 년도, , , 시간을 출력해보라

now_dt = dt.datetime.now()

print(now_dt.year)

print(now_dt.hour)

 

now_dt.strftime('%Y-%m-%d') #년월일

now_dt.strftime('%Y / %m / %d') #년월일

now_dt.strftime('%H:%M:%S') #시간을 포멧을 맞추어 출력

 

#날짜의 연산

now_dt + dt.timedelta(days=7)

 

 

#실습하기

#now_dt를 이용해서 1주일 이전을 출력해라

now_dt + dt.timedelta(days=-7)

now_dt + dt.timedelta(days=-1)

 

 

import numpy as np

 

#배열의 사용이유

#많은 숫자형 데이터를 하나의 변수에 넣고 관리할 때 사용하게 되는 리스트는 속도가 느리고 , 메모리를 많이 차지하는 단점이 존재한다.

#리스트는 추가, 삭제 , 수정 등이 배열에 비해 자유롭기 때문에 속도가 느리고, 사용상 이점을 갖는다.

#파이썬은 리스트만 존재하고, 배열이라는 개념이 존재하지 않는다.

#유일하게 문자열만 기본적으로 배열의 형태를 갖는다.

#배열이 속도가 빠른 이유는 배열에 저장되는 자료형은 모두 같은 자료형이기 때문.

a= np.array([1,2])

print(a)

b = np.array([[1,2],[3,4]])

b

# shpae는 배열의 형태를 리턴한다. 여기서 a는 (2,) 가 리턴되고 b는 (2,2)가 리턴된다 . (2,2)는 2행 2열로 해석 가능하다.

print(a.shape) 

print(b.shape)

c=np.array([[1,2,3],[2,3]])

c

 

#순차적인  증가배열을 만들 때

my_data = np.arange(25)

 

my_data

 

#my_data 리스트의 모든 자리에 +1씩 해라

my_data + 1

my_data * 2

 

my_data ==2 #bool 값 리턴

 

#실습

#my_data의 데이터에서 5보다 큰 데이터가 있는지 확인

my_data >5

 

#배열의 인덱싱(조회)

my_data[0]

my_data[2]

my_data[:]

my_data[4:]

 

my_data[4:100000] #out_of_index 문제가 발생하지 않는다. (python이 조정해줌 )

my_data[[0,1,20]]

my_data[my_data %2==0]

b = np.array([[1,2],[3,4]])

#b[,]

b[1,1]

b[0,0]

#실습하기 b의 모든 행의 1열을 출력하라

b[:,1]

import pandas as pd

#r vector와 같은 pandas 2가지 데이터 구조 중 하나

pd.Series(1)

s=pd.Series([1,2,3,4])

s[:]

s[0]

s[1]

s[3]

#인덱스의 이름을 가진 시리즈 만들기

s=pd.Series([99000,5000,30000],index=['서울','부산','인천'])

s

#실습하기 , s시리즈에서 부산의 값을 출력해라

s['부산']

s[1]

 

#r Dataframe과 동일한 pandas dataframe

dict01 ={'서울':[1,2,3,4],'부산':[100,200,300,400]}

df = pd.DataFrame(dict01)

 

#dataFrame print()가 아닌 display()로 기본 호출된다.

display(df) #display로 모양까지 출력되게 할 수 있다. 테이블 형태로 출력

display(df)

 

df['서울']

 

df.서울

df.index

len(df.index)

df.columns

list(df.columns) #list형으로 형변환, 컬럼명을 리스트 형태로 반환

댓글