Numpy

이은영·2022년 6월 20일
0

빅데이터

목록 보기
3/3

Numpy 함수 라이브러리

y = np.ones([3,4]) #ones는 값을 다 1로 바꾸는 것
print("1차원 배열 mean() ",x.mean()) 평균
print("1차원 배열 mean() ",x.shape) 배열 안 전체값
np_arr = np.array(list1) #numpy로 한번 변환함
print("모든 원소에 2번째 해당하는 값 추출",np_arr[:,1]) #이 형식은 numpy에서만 지원이 된다.!!!!중요!!!!
#print(np.array(list1[:,1])) X <= 이 코드는 에러  numpy변환 전에 list1를 먼저 출력해서 안됨

import math
import numpy as np
#math.sqrt(2)
#math.sqrt([2,3,4]) X <= 이 코드는 에러
np.sqrt([2,3,4]) # 함수는 x의 제곱근을 반환합니다. (x에 루트를 씌운 값을 반환)
math.sqrt(4) # 4의 제곱근인 2를 반환합니다 (float 타입이므로 2.0)
a = np.arange(15).reshape(3,5) #3행 5열
z_v = np.zeros((5,3)) #5행의 3열의 값을 다 0
z_v = np.zeros(15).reshape((5,3))
z_v += 5 #위 5행의 3열의 값이 다5
print(arr.transpose()) #전치 행렬 : 행과 열을 교환
print(x[:,1])
z = x[:,1] + y[:,1]

a = np.array([10,20,30,40,50,60,70])
b = a > 50  결과 [False False False False False  True  True]
print(np.all(ary >= 0.3))
print(np.any(ary > 0.7))

bmi = ((weight/height) ** 2 )*100
np.linspace(0,12,4, retstep = True) #샘플 간격을 같이 출력

빅데이터 시각화

%matplotlib inline #데이터값 연결
import matplotlib.pyplot as plt
y = [11,5,15,6,71,10,100,40]
plt.plot(y)
plt.show()
plt.plot(range(len(y)),y)#0부터 n-1까지의 x좌표 표현
#x축에 의미 있는 문자(열) 넣기
x = ['Mon' ,'Tue', 'Wed', 'Thur', 'Fri', 'Sat', 'Sun']
y = [13,16,15,18,16,17,16]
plt.plot(x,y)
plt.xlabel('Daily') # xlabel(): x축의 라벨을 입력 
plt.ylabel('No. of Books Sold'); # ylabel(): y축의 라벨을 입력
plt.plot(x,y1,label='Sold') # 레전드(legend:범례) 붙이기
plt.plot(x,y2,label='On Shelves')
plt.legend(loc = "upper left") # upper위 bottom아래 center중심 left왼 rigth오른
plt.title('Le Prtit Prince: Sold & Left')

빅데이터 분석을 위한 선 그래프(plot) 2시작

import matplotlib.pyplot as plt
%matplotlib qt #결과가 팝업창으로 출력됨
%matplotlib inline #결곽가 화면으로 출력됨
x = ['Mon','Tue','Wed','Thur','Fri','Sat','Sun']
y1 = [13,16,15,18,16,17,16]
y2 = [17,14,17,16,15,15,14]
plt.plot(x,y1,color='b',linestyle='--') #color='b' 'r' 그래프의 색상 변경
plt.plot(x,y2)
plt.show()
#color='b' 'r' 그래프의 색상 변경
plt.plot(x,y,'r*--') #그래프 선(o),점(.),꺾쇠(^),별표(*) -- 덧붙일시에 선 연결
plt.axis([0,6,0,30]) #plt.axis(xmin,xmax,ymin,ymax) x축과 y축의 범위지정
plt.plot(points[:,0],points[:,1],"ro--") #[행,렬] 모든행의 x좌표, 모든열의 y좌표
plt.plot(p[0],p[1],"bo")
plt.axis([0,6,0,30]) #plt.axis(xmin,xmax,ymin,ymax) x축과 y축의 범위지정
x = np.linspace(0,5,10) #0부터 5까지 10개
y = x**3 #x의 제곱승 
plt.plot(x,y2,"gs--",linewidth=2,markersize=12,label="second") #점 모양,선 굵기, 점 굵기 ,범례
vplt.legend(loc=2,ncol=3) #범례위치, ncol는 범례를 2열로 가능
plt.savefig("mplot.jpg") #파일저장 
plt.rc('font',family="malgun gothic") #한글폰트 입력

#f = open("../CCTV.csv")
with open("CCTV.csv") as f:
col.append(data)
row = row.replace(' ',"0")

plt.plot(x,y,color='red')
plt.plot(x,y,linestyle="dashdot")


plt.plot() plt.axis([])  plt.legend()  plt.savefug()  plt.rc() plt.show

plt.plot(x,y,color='b', linestyle='--', 

10주차 막대그래프 plt.hist,별(흩뿌리는)그래프 plt.scatter

plt.subplot(2,2, 1) #2의2열 그래프가 4개가 있으면 4개중 2열의 2개씩있는 것
plt.hist(x,color="orange", bins=5, alpha = 0.3) #bins 몇 개 구간 , 5칸, alpha투명도
#rand() : 0부터 1사이의 실수 랜덤 값
#randint() : 정수형 랜덤 값
#choice() : 강력한 지정한 값에서 랜덤값 추출 랜덤함수
#randn() : 표준편차가 1일고 평균값이 0인 정규분포에서 표본추출
#normal(평균, 표준편차, 개수) : 
r = np.random.rand(2) #2개의 랜덤값
r = np.random.rand(2,3) #2행 3열이 출력
r = np.random.randint(2,5,size=(5,5)) #2포함~5까지 범위, 5행5열
r = np.random.choice(2,10) #2까지의 범위, 갯수
r = np.random.choice(2,(5,3)) #2까지의 범위, 갯수
r = np.random.choice(['초록','빨강','주황'],5) #가위바위보👆 , 윷놀이 📜
choice로 히스토그램 그리기
plt.hist(r,color="red", bins=10, edgecolor='black', alpha = 0.55)
#p168 정규분포 천개의 무작위 값을 생성 후 그래프 생성
#randn(): 표준편차가 1이고 평균값이 0인 정규분포
#p170 1000개를 가지고 
import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np
r = np.random.randn(1000)
plt.hist(r)
plt.show() 
r = np.random.normal(1.0,2.0,1000) #평균, 표준편차, 갯수
r = np.random.normal(3.0,2.0,(2,3)) #표준편차가 2.0이고 평균이 3.0인 2행 3열 데이터 출력 (normal로 추출)
r = np.random.standard_normal(1000) #standard_normal : 정규분포에서 표본 추출
#결과에 빈도수가 아닌 확률로 나타내고 싶으면  hist()  메소드의 인자로 density=True 
plt.hist(r,density=True) #확률은 0~1사이, 확률로 해서 그림을 그린 것 
plt.show() #첫번재 배열은 각각의 결과에 대한 y축의 값들을 두번째는 x축의 값들을 나타낸디
#179 표준편차가 2.0이고, 평균이 1인 정규분포 500개
#randn(): 표준편차가 1이고 평균값이 0인 정규분포
#normal : 정규분포에서 표본 추출
#standard_normal : 표준 정규분포에서 표본 추출
r1 = 2.0 * np.random.randn(500) + 1.0 # 표준편차, 갯수, 평균
r3 = 2.0 * np.random.standard_normal(500) + 1.0
plt.hist(r1,density=True)
r2 = np.random.normal(1.0,2.0,500) #평균, 표준편차, 갯수(흩뿌리는)그래프 plt.scatter
빅데이터 분석을 위한 plot기능 2220517
스캐터 그래프 : plt.scatter([], [], s=[], c=[]) plt.colorbar() plt.show()
, 히스토그램 그래프 : plt.hist(x, bin=100) plt.show()
, 막대 그래프 : plt.bar(range(5), y, color='red', width=0.5, align='edge',alpha=0.3,bottom=3)
size = np.pi * (np.random.rand(30)*20) **2
plt.scatter(x,y,s=size,c = colors, marker = '*', alpha = 0.7) #흩뿌리는 그래프
# s 마커크기       # c 마커색상
plt.scatter([1,2,3,4,5],[30,7,10,50,12],s=[100,500,200,250,300],c=['red','blue','orange','yellow','green']) 
plt.scatter(x,y,s=size,c=colors,marker='s',alpha = 0.3) #alpha투명도
plt.colorbar() #색상들의 갯수를 바에 나타냄
plt.hist(x,bins = 100) #bins 가로축 구간의 개수 지정
 for temp in data: 
        #print(temp[0].split('-')[0]) 년#split : 특정부분만 자르기
        #print(temp[0].split('-')[1]) 월
        #print(temp[0].split('-')[2]) 일
        month = temp[0].split('-')[1]
with open("서울.csv") as f:
    data = csv.reader(f)
    title = next(data)
    for temp in data: 
        month = temp[0].split('-')[1]
        day = temp[0].split('-')[2]
        if(month == "05" and day == "06"):
            x.append(float(temp[2]))
plt.hist(x,bins = 5,color="green")

막대그래프 bar()

plt.bar(x,y) # 막대그래프 설정
plt.bar(range(5),y) #0~4까지 범위 알아서 지정
#align 정렬 원래 default값은 center로 align = 'edge'는 범위의 끝에서 시작
plt.bar(x,y,color='orange',width=0.5, align = 'edge' ,alpha = 0.3, bottom = 3 )
plt.bar(x,y,color = 'orange',width = 0.3)
plt.bar(x,y2,color='green',width=0.3, align = 'edge')
plt.barh(y,x,color="green")
plt.barh(y1,x1,color="red")
plt.grid(True) #데이터의 위치를 더 명확히 나타내기 위해 격자를 표시할 수 있다.
plt.text(2,40,"42") #index 2번째 x좌표, 40위치의 y좌표, 데이터 텍스트

박스그래프 boxplot([x,y]) 원그래프 pie([10,20,30])

d = np.multiply(a1, b1) #곱하기
e = np.divide(a1, b1)   #나누기
f = np.subtract(a1, b1)  #빼기
a = np.arange(1,5)
print(a)
print(np.sum(a))
print(np.mean(a))
print(np.max(a))
print(np.min(a))

plt.boxplot([x,y])
c = ["yellow","orange","pink","skyblue"]
w = {'width':0.5,'edgecolor':'w','linewidth' : 10} #부채꼴 영역 속성 width: 부처꼴 너비 ,테두리 색상, 테두리선의 너비
#영역 스타일 설정, explode(4개데이터)돌출,  그림자 , 반지름 
plt.pie(x,labels = year, autopct = "%.1f%%", colors = c ,
   wedgeprops = w, explode = (0,0,0,0.01) , shadow = True, radius = 1) 
plt.legend(loc=(1.5,0.5),fontsize = 20, title = "학년") #좌표값 설정 

profile
성장중인 개발자 (머리속의 생각을 글로 옮기는 연습을 하고 있습니다.)

0개의 댓글