728x90
반응형

* 본 포스팅은 주피터 노트북에서 실행하였다.

 

import datetime
datetime.datetime.now()

 

today = datetime.date.today()
today

 

.year , .month, .day로 년, 월, 일을 확인할 수 있다.

 

파이썬 내장함수

dir(datetime) # __ => double under , dunder , 파이썬 내장함수, 내장 데이터 타입

 

import datetime as dt #dt로 rename하기
start_time = dt.datetime.now()
start_time

 

replace 이용하여 시간 바꾸기

start_time.replace(month=12, day=22) #시간 바꾸기

 

남은 시간 구하기

today = dt.date.today()
xMas = dt.datetime(2021, 12, 25)
time_gap = xMas - dt.datetime.now()
print('올해 크리스마스 까지는 {}일 {}시간 남았다.'.format(time_gap.days,time_gap.seconds//3600))

 

728x90
반응형
728x90
반응형

* 본 포스팅은 주피터 노트북에서 실행하였다.

 

a=[10,20,30]
b={'ten','twenty','thirty'}
for val in zip(a,b):
    print(val)

 

str_list=['hello','world','python','rokcs']
int_tuple=(1,2,3)
int_list=[400,500,600,700,800]

my_iterator = zip(str_list, int_tuple, int_list)
list(my_iterator)

 

 

zip으로 묶여진 튜플들을 다시 풀어내는 방법

 

zip_lst = list(zip(str_list, int_list, int_tuple))
a,b,c = zip(*zip_lst)
print('a: {}, b: {}, c: {}'.format(a,b,c))

728x90
반응형
728x90
반응형

* 본 포스팅은 주피터 노트북에서 실행했다.

 

def product_set(set1,set2):
    res=set()
    for i in set1:
        for j in set2:
            res = res | {(i,j)}
    return res
A = {1,3}
B = {2,4}
AxB = product_set(A,B)
print('A= ',A)
print('B= ',B)
print('AxB= ',AxB)

SQL의 Cross Join과 동일하다. 데카르트의 곱

 

곱집합 함수를 이용한 집합의 세제곱 연산

def product_set(set1,set2):
    res=set()
    for i in set1:
        for j in set2:
            res = res | {(i,j)}
    return res
def exp(input_set, exponent):
    res=input_set
    for _ in range(exponent-1):
        res=product_set(res,input_set) #호출한 결과를 res에 누적하여 반환함
    return res
A = {1,3}
A3 = exp(A,3) #집합 A에 대하셔 거듭 제곱을 3회 수행함
print(A3)

 

이를 참고하여 주사위를 두번 던졌을 때 가지수를 구해보자

cases={1,2,3,4,5,6}
cases_2times = product_set(cases, cases)
cases_2times #주사위 두번던졌을 때 가지수

 

#주사위 2번 던졌을 때 set이라 36이 안나오고 11가지 밖에 없음
sum_set ={sum(tup) for tup in cases_2times}
sum_set

 

위 코드를 list로 변환해 보았다.

sum_set =[sum(tup) for tup in cases_2times]
len(sum_set)

 

주사위 3번 던졌을 때 경우의 수 구하기

def tuple_sum(tup):
    if isinstance(tup, int): #tup가 정수(int) 형이면 tup을 반환
        return tup
    else:
        accum=0
        for element in tup:
            accum += tuple_sum(element) #재귀적 호출, 자기 자신 호출
    return accum
def product_set(set1,set2):
    res=set()
    for i in set1:
        for j in set2:
            res = res | {(i,j)}
    return res
cases_3times = product_set(cases, cases_2times)
sums={tuple_sum(tup) for tup in cases_3times}
sums

 

728x90
반응형
728x90
반응형

* 본 포스팅은 주피터 노트북에서 실행하였다.

 

s1 = {i for i in range(1,7)}
s1

 

s2 = {i for i in range(4,10)} #set comprehension
s2

 

합집합

 

교집합

 

차집합

 

두 집합이 서로소인지 확인하기 -> isdisjoint 사용하면 된다.

s1 = {1,2,3}
s2 = {10,20,30}

 

 

 

728x90
반응형
728x90
반응형

* 본 포스팅은 주피터 노트북에서 실행하였다.

 

  • 리스트로부터 집합 만들기
days_list=['Mon', 'Tue','Wed','Thu','Fri','Sat','Sun']
days_set = set(days_list)
days_set

 

  • 튜플로부터 집합 만들기
fruts_tuple=('apple','orange','water melon')
fruits_set = set(fruts_tuple)
fruits_set

 

  • 문자열로부터 집합 만들기
h_str='hello'
h_set=set(h_str)
h_set

 

#set은 중복을 없앤다.

s={100,100,200,200,300,400}
s

 

s.add(500) #추가
s

 

s.discard(100) # 삭제
s

 

 

728x90
반응형
728x90
반응형

* 본 포스팅은 주피터 노트북에서 진행했다.

 

#튜플
t0=(10,20,30)
t0

 

t0+t0

 

튜플은 리스트와 똑같은데 차이점은 수정이 안된다. 읽어오기만 할 수 있다.

 

 

예제

def area_and_circle(radius):
    area = 3.14*radius**2
    circum = 2*3.14*radius
    return area, circum

type()을 이용해 형식을 살펴보니 tuple이다...

 

r=5
a,c=area_and_circle(r)
print('반지름 {}인 원의 면적의 둘래는 {},{}'.format(r,a,c))

 

반환 값을 하나(tuple)이고 반환받은 곳에서 unpacking 되어 하나씩 가져다 사용 가능하다.

728x90
반응형
728x90
반응형

* 본 포스팅은 주피터 노트북에서 진행했다.

 

딕셔너리 객체를 생성한다

person = {'이름':'홍길동','나이':26,'몸무게':87}
person #딕셔너리 객체 만들기

 

컬럼 값 가져오기

person['이름']
person.get('이름')

 

popitem()

person.popitem() #랜덤하게 key와 value를 삭제

clear()

person.clear() #빈객체 만들기
person

 


딕셔너리 객체가 아래의 사진인 상태에서 for문을 통해 key와 value의 값을 어떻게 불러오는지 확인해 보자

 

key = person.keys()
value=person.values()
item=person.items() #key와 value를 tuple로 반환
for i in value:
        print(i)

 

item은 key와 value 둘다 tuple로 반환한다.

for i in item:
        print(i)

 

key를 이용하여 key와 value를 반환하였다.

for key in person:
    print('{} : {}'.format(key, person[key]))

다른 방법도 있다!

for key,value in person.items():
    print('{} : {}'.format(key, person[key]))

 

728x90
반응형
728x90
반응형

* 본 포스팅은 주피터 노트북으로 사용했다.

 

import numpy as np
import pandas as pd

arr10 = [[[26, 22, 12, 12, 22], [87, 11, 13, 17, 19], [12, 23, 34, 23, 17]],
         [[26+1, 22+5, 19, 112, 22], [817, 11, 413, 17, 19], [112, 23, 134, 523, 117]],
         [[26+2, 22+6, 111, 132, 22], [87, 101, 130, 17, 19], [12, 23, 64, 23, 117]],
         [[26+3, 22+7, 12, 121, 22], [87, 171, 163, 17, 19], [12, 23, 634, 23, 167]],
         [[26+4, 22+8, 12, 121, 22], [87, 311, 163, 17, 19], [12, 23, 434, 23, 107]]]
print(arr10)

 

형식을 확인한다.

#3차원 배열
npa = np.array(arr10)
np.shape(npa) #3행5열5장있는것

 

 #내가 푼 결과가 이것과 같아야 하므로 확인차 실행한다.

np.sum(arr10,axis=2)

 

def myF1(i):
    sum=0
    for j in i:
        sum+=j
    return sum
def myF(i):
    return list(map(myF1,i))
list(map(myF,arr10))

 

 

자세한 동작과정을 확인해 보기 위해 print문을 적용해 보았다.

 

728x90
반응형
728x90
반응형

 

* 본 포스팅은 주피터 노트북을 사용하였다.

 

person ={'이름':['홍길동','홍말자','김개똥','홍길동','김개똥'],
         '나이':[26, 22 ,12,12,22],
         '몸무게':[87,11,13,17,19],
         'age':[12,23,34,23,17], 
         'sex':['M','F','M','F','M']
        }
person

 

생성된 딕셔너리에 '이름' 키값을 가져와 보자

 

 

person의 나이의 총합 구하기

sum=0
for i in person['나이']:
    sum +=i
print(sum)

 

 

map을 이용하여 2차원 리스트 값 더하기

 

생성된 2차원 리스트에서 나이, 몸무게, age 끼리 더한 결과를 도출해 보자

def myF(i):
    sum=0
    for j in i:
        sum+=j
    return sum
list(map(myF,arr))

728x90
반응형
728x90
반응형

* 본 포스팅은 주피터 노트북을 이용하였다.

 

딕셔너리를 생성한다.

 

나이 컬럼을 수정한다.

 

없는 키값을 추가해 보자.

 

 

딕셔너리를 다시 생성한다!

데이터 프레임으로 변환한다.

 

describe() 메서드는 다양한 통계량을 요약해준다.

 

성별 기준으로 나이의 총합 구하기

group1 = df['나이'].groupby(df['sex'])

sum()은 합계, mean()은 평균을 뜻한다.

 

위 방법과 다른 표현으로도 나타낼 수 있다.

df['나이'].groupby(df['sex']).agg([
                                    ('총합','sum'),
                                    ('최대','max'),
                                    ('최소','min'),
                                    ('사용자 정의',myFuncAgg),
                                     ('평균','mean')
                                    ])

 

이름으로 그룹화하고 몸무게의 통계치(집계함수/aggregation)을 출력하기

person ={'이름':['홍길동','홍말자','김개똥','홍길동','김개똥'],
         '나이':[26, 22 ,12,12,22],
         '몸무게':[87,11,13,17,19],
         'age':[12,23,34,23,17], 
         'sex':['M','F','M','F','M']
        }
person
df=pd.DataFrame(person)
print(df)

df['몸무게'].groupby(df['이름']).agg([
                                    ('총합','sum'),
                                    ('최대','max'),
                                    ('최소','min'),
                                     ('평균','mean')
                                    ])

 

group으로 그룹화하고 a의 통계치(집계함수/aggregation) 출력하기

df1 = pd.DataFrame(np.random.rand(4,4), columns=list('abcd'))
df1['group'] = [0,0,1,1]
print(df1)

df1.groupby('group').agg({'a':['sum','max'],
                         'b':'mean',
                          'c':'sum',
                          'd':lambda x:x.max()-x.min()
                         })

 

728x90
반응형

+ Recent posts