Develop/Python

1011 Python Numpy,pandas(맛보기)

포페PostFace 2022. 10. 13. 17:17
import numpy as np
import random

a = np.array(random.sample(range(1,21), 9)).reshape([3,3])
print('a:',a)

result = []
for i in a:
    # print(i)
    result.append(np.max(i))
    result.append(np.sum(i))
print('result:',result)

result = np.array(result)
print('array result:',result)

result = result.reshape([3,2])

print('result:\n',result)
import numpy as np

a=100
print(a)
print(type(a))

L1=[1,2,3,4]
print(L1)
print(type(L1))
print(len(L1))

L2=[[1,2,3,4],[5,6,7,8]]
print(L2)
print(type(L2))
print(len(L2))
print(len(L2[0]))
print(len(L2[1]))
print()

b = np.array(100)
print('b :',b)
print(type(b))
print(b.ndim)
print(b.shape)
print()
c = np.array([1,2,3])
print('c :',c)
print(type(c))
print(c.ndim) #몇차원 배열인지
print(c.shape) #어떤 모양인지 (방의 갯수로 나옴)
print()

d = np.array([[1,2,3]])
print('d :',d)
print(type(d))
print(d.ndim) #몇차원 배열인지
print(d.shape) #어떤 모양인지 (방의 갯수로 나옴)(1, 3) 1행 3열
print()

# array() : numpy 모듈 안에 있는 함수로
# 숫자 , 리스트 , 튜플을 인자로 넣어서 배열로 바꾸는 함수다.
e = np.array([[1,2,3],[4,5,6,7]])
print('e :',e)
print(type(e))
print(e.ndim)
print(e.shape) 
t = e.shape
print(t[0])
print(len(e))
e[0][1] =222
#e[0] = 999 해당 행을 전부 바꾼다.행마다 열의 갯수가 다르면 바뀌지 않는다. 
for i in e :
    for j in i :
        print(j,end=' ')
    print()    
for i in range(e.shape[0]) :
    for j in range(0,len(e[i])) :
        print(e[i][j],end=" ")   
    print()     
print()
import numpy as np

L1=[1,2,3]
L2=[4,5,6]

arr1=np.array([1,2,3,4])
arr2=np.array([4,5,6,7])

print(L1+L2)
#print(L1*L2) error
print(arr1+arr2)
print(arr1*arr2)
print()
print(arr1.shape)

arr11 = arr1.reshape([2,2])
print('arr11:',arr11)
print(arr11.shape)

arr22= np.reshape(arr2,(2,2))
print('arr22:',arr22)
print(arr22.shape)

arr33=arr1.reshape([1,4])
print('arr33:',arr33)
print(arr33.shape)
print(arr33.ndim)

arr44 = arr33.transpose() #행과 열을 바꿈
print('arr44:',arr44)
print(arr44.shape)
print(arr44.ndim)

#arr = np.array([[1,2],[3,4],[5,6]])
d =[]
for i in range(1,13) :
    d += [i]
arr = np.array(d).reshape([4,3]) 
# arr = np.array([i for i in range(1, 7)]).reshape([3,2])
# arr = np.array(range(1, 7)).reshape([3,2])

print('arr:',arr)
print(arr.shape)
print(arr.ndim)

result = arr>2
print('result:',result)
print(arr[result])
print(arr[arr>2])

print(arr[1])
print(arr[1:3]) #1<=x<3
print(arr[1:3,0:2]) #1<=x<3 , 0<=y<2 행,열
print(arr[0:len(arr),0:2])
#print(arr[:,0:2])
import numpy as np

a= range(5)
print('a:',a)
print(type(a))
for i in a:
    print(i,end='')
print()

b= np.arange(5) #arange([start,] stop[, step,], dtype=None, *, like=None) 대괄호는 생략 가능하다.
print('b:',b)
print(type(b))
for i in b:
    print(i,end='')
print()

c=np.arange(6).reshape([2,3])
print('c:',c)
print('-----------------------')

result = np.repeat(10,5) #[10 10 10 10 10]
print(result)
print(type(result))

arr=np.array([1.57,2.48,3.93,4.33])
print('arr:',arr)
print()

result =np.ceil(arr)
print(result)
result =np.floor(arr)
print(result)
result =np.round(arr)
print(type(arr[0]))
print(result)
result =np.round(arr,1)
print(result)
result =np.max(arr)
print(result)
result =np.min(arr)
print(result)

print('----------------')
#mean,average 둘 다 평균을 구하는 함수
arr2 = np.sum(arr),np.average(arr),np.mean(arr),np.min(arr),np.max(arr)
print('arr2:',arr2)
print(type(arr2))

arr=np.array([1.57,2.48,3.93,4.33])
print('arr:',arr)
arr1=np.array([1.90,2.28,-3.93,4.33])
print('arr1:',arr1)
result =np.maximum(arr,arr1)
print(result)
result =np.minimum(arr,arr1)
print(result)
result =np.equal(arr,arr1)
print(result)

#numpy 모듈 안에 random 모듈 안에 random 함수가 있다.
result = np.random.random() #0<=x<1
print(result)
result = np.random.random()*10 #0*10<=x<1*10
print(result)
result = (np.random.random()*10)+5 #0*10+5<=x<1*10+5
print(result)
print(int(result))
print(np.floor(result))
print(round(result))

#range + random 같은 함수
result =np.random.permutation(10)
print(result)
print(type(result))

import random 
result = random.random()
print(result)

print(random.randrange(1,10)) #1<=x<10 하나만 가져온다.
print(random.randrange(1,10,3)) #1 4 7 중 하나

print(random.sample(range(1,10),3)) #1~9 random *3
import random

lotto = random.sample(range(1,46),6)

print(lotto)
select=[]
count=0

while True:        
    try :
        selone=int(input('1~45사이의 수 입력:'))
        if selone>45 or selone<1 :
            raise ArithmeticError('1~45사이의 수를 입력해야합니다.')
        if selone in select :
            raise NameError('이미 입력한 수입니다.')
    except ValueError :
        print('숫자로 입력하세요.')
        continue
    except ArithmeticError as err :
        print(err)
        continue
    except NameError as err :
        print(err)
        continue    
    else :
        select += [selone]
    if len(select) == 6 :
        break    
for i in lotto :
    for j in select :
        if i==j :
            count +=1
print('로또 번호',lotto)
print('내 번호',select)
print('ok:',count)
if count <3 :
    print('꽝입니다.')
elif count==3 :
    print('4등')        
elif count==4 :
    print('3등')        
elif count==5 :
    print('2등')
elif count==6 :
    print('1등입니다. 축하축하')

pandas (다음날 수업에 들어가기전 맛보기 였습니다.)

import numpy as np
import pandas as pd

arr = np.array([10,40,30,20])
print('arr :',arr)
print(type(arr))
print()

s1 = pd.Series([10,40,30,20])
print('s1 :',s1)
'''
s1 :0    10
    1    40
    2    30
    3    20
    dtype: int64
'''
print(type(s1))#<class 'pandas.core.series.Series'>
print(s1.shape,s1.ndim) #(4,) 1 방 4개 1차원배열
print('s1.index:',s1.index) # RangeIndex(start=0, stop=4, step=1)
print('s1.values:',s1.values) # [10 40 30 20]
print(s1[1])
print()

s2= pd.Series([10,40,30,20],['슬기','정국','웬디','슈가'])#뒤에 쓰는건 index= 이다.
print('s2:',s2)
print(s2['웬디']) #30
print()
print(s2[['웬디']])
'''
웬디    30
dtype: int64
'''
print(s2[0])

s2['슬기']=70 #변경
s2['윤아']=50 #추가
print('s2:',s2)
print(s2.values < 40) #[False False  True  True False]
print(s2[s2.values<40])
print()
print(s2[['웬디','슈가']]) # 대괄호 두개 필수 
print('s2:',s2)
print('s2*2:',s2*2)
print()
print('정국' in s2) #True
print('장동건' in s2) #False
print(s2.shape,s2.ndim) #(5,) 1

print('-----------------')

from pandas import Series
#import pandas.Series as Series
d={'서울':2000,'부산':3000,'울산':4000,'광주':5000}
print('d:',d)
print(type(d))
s3 = Series(d) #key=index value=value
print('s3 :',s3)
print('s3.index:',s3.index) 
print('s3.values:',s3.values)

city = ['부산','제주','서울','광주']
s4= Series(d,index=city)
'''
부산    3000.0 
제주       NaN 원래 없던 index라 NaN으로 나온다. 나머지 값도 실수로 변환한다.
서울    2000.0
광주    5000.0
'''
print('s4:',s4)

print('---------------')
s5 = s4.reindex(['a','서울','c','d'],fill_value=0)
print('s5:',s5)
print()

print('s2:',s2)
print(s2['슈가'])
print(s2[3])
print(s2[-1])

new_s = s2.drop(['정국','윤아'])
print('new_s:',new_s)


print(s2[2:4])
print()
print(s2[2:7])
print()
print(s2[[1,3,4]])
print()
print(s2['정국':'슈가']) #'슈가'가 포함된다.

print('-------------------')

print('s2:',s2)
print()
print(np.max(s2)) #Series의 value의 최대값
print(np.sum(s2)) #Series의 value의 합계

s2 = s2.sort_index(ascending=False) # index 기준 정렬
#ascending = True 는 오름차순
print('s2:',s2)
s2 = s2.sort_values() # value 기준 정렬
print('s2:',s2)

print('---------------')
d= {'모모':10,'정연':np.NaN,'채연':30,'다현':50}
s3 = Series(d)
print('s3:',s3)

print(s3.dropna())

print(s3.notnull())

print(s3[s3.notnull()]) # ==print(s3.dropna())

'Develop > Python' 카테고리의 다른 글

1013 Python csv  (0) 2022.10.13
1012 Python pandas DataFrame  (0) 2022.10.13
1007 Python Class,예외처리,DB  (1) 2022.10.13
1006 Python 파일 입출력,클래스  (0) 2022.10.06
1005 Python list 이어서,튜플,사전,함수,모듈  (1) 2022.10.06