본문 바로가기
PYTHON

20200316 - Numpy, Pandas 기초 설명 및 연습(랜덤, 데이터셋, 데이터프레임, 시리즈)

by 낫싱 2020. 3. 16.
728x90
반응형

 

 

대표사진 삭제

사진 설명을 입력하세요.

import pandas as pd

 

dict_data = {

'데이터 구조, 수집, 입출력, 처리, 통계적 탐색, 시각화, 응용':['데이터 구조에 대한 이해',\

'데이터 생성, 파일 데이터(RDBMS, WEB Crawling, Open API)',\

'생성, 행, 열 선택, 추가, 변환, 연산처리(Numpy, Pandas, Scikit-learn)', \

'기술통계분석, 가설과 검증, 상관분석 분산분석, PCA, 변수중요도(RF)', 'Matplotlib, Seaborn'],\

'':['자료구조, 인덱스, 행/열 다루기, 연산', 'Internal Data Building, CSV, Excel, JSON 파일, 웹 스크래핑', \

'OPEN API 분석용 데이터 셋을 위한 전처리', '통계적 접근을 통한 데이터 특징 파악, 중요 변수 및 파생변수 도출, \

모델링 진행 방안 연계',\

'시각적 탐색을 통한 데이터 특징, 중요 변수 및 파생변수 도출']}

 

df = pd.DataFrame(dict_data, index=['데이터구조', '입출력', '전처리', '통계적 탐색', '시각화'])

 

df

 

 

==============================================수업문제====================================================

 

Q. 파이썬 외장함수 random을 이용하여 아래사항들을 출력하세요.

0.0<= x <1.0 사이의 float를 랜덤하게 선택

10에서 20사이의 정수중에서 난수값 선택

10보다 적은 int 선택

20과 30사이의 float 선택

[6,7,8,9,10 ]리스트 내부에 있는 요소를 랜덤하게 선택

[6,7,8,9,10 ]리스트 내부에 있는 요소중 k개 선택

In [245]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

import numpy as np

import random

print('1번:',np.random.random(),'\n')

print('2번:',np.random.randint(10,20),'\n')

print('3번:',np.random.randint(10),'\n')

print('4번:',np.random.uniform(20,30),'\n')

print('5번:',np.random.choice([6,7,8,9,10]),'\n')

print('6번:',random.sample([6,7,8,9,10], k=2))

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

1번: 0.2565805322708937 2번: 11 3번: 3 4번: 25.624895181615326 5번: 7 6번: [8, 7]

Q. 주어진 데이터에서 랜덤으로 하나를 선택하여 꺼낸 다음 그 값을 출력하고 꺼내진 요소를 제외시킨 리스트를 출력하세요.

data = [1,2,3,4,5,6,7,8,9,10]

In [307]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

data=[1,2,3,4,5,6,7,8,9,10]

a=random.sample(data,1)

data.pop(a[0]-1)

print(a)

print(data)

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

[7] [1, 2, 3, 4, 5, 6, 8, 9, 10]

Q. 넘파이 random을 이용하여 아래사항들을 출력하세요.

0부터 10까지 랜덤한 숫자 1개

0부터 1사이의 균일분포에서 난수 5개로 구성되는 배열 생성

평균 0, 표준편차 1의 가우시안 표준정규분포에서 난수 10개로 구성되는 배열 생성

In [292]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

mt = np.random.randint(11)

print(mt,'\n')

mt1 = np.random.random_sample((5))

print(mt1,'\n')

mt2 = np.random.randn(10)

print(mt2,'\n')

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

4 [0.31677831 0.7085898 0.27837204 0.29120448 0.20174668] [ 0.78260238 1.10170741 1.10464916 -1.44462106 0.11795487 -0.27347831 0.74438337 -0.66683385 -0.41145149 0.48308483]

Q. 넘파이 random을 이용하여 아래사항들을 출력하세요.

[6,7,8,9,10] 리스트의 데이터의 순서 바꾸기

In [315]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

data=[6,7,8,9,10]

np.random.shuffle(data)

print(data)

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

[7, 6, 8, 9, 10]

Q. 넘파이 random을 이용하여 아래사항들을 출력하세요.

10보다 적은 정수에서 랜덤으로 중복되지 않게 5개를 선택 배열을 생성하세요.

c1 = [6,7,8,9,10] 배열에서 랜덤으로 중복 선택이 가능하게 5개를 선택, 배열을 생성하세요.

In [193]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

print(np.unique(np.random.randint(10,size=5)))

 

c1 = [6,7,8,9,10]

np.random.uniform(1.0,2.0,3)

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

[1 4 9]

Q. 넘파이 random을 이용하여 2.0보다 크거나 3.0보다 작은 5개의 수를 출력하세요.

In [87]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

np.random.uniform(2.0,3.0,(5))

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

Out[87]:

array([2.29188497, 2.61209537, 2.40158853, 2.12068986, 2.40264139])

Q. 넘파이 random을 이용하여 0.0보다 크거나 1.0보다 작은 (3,3) 2차원 배열을 2가지 방식으로 출력하세요.

In [88]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

#0.0보다 크거나 1.0보다 작은 (3행3열) 2차원 배열을 구하는것

mt1 = np.random.uniform(0.0,1.0,(3,3))

mt2 = np.random.random_sample((3,3))

print(mt1)

print(mt2)

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

[[0.91779555 0.70609815 0.29320934] [0.06213848 0.2696996 0.26742887] [0.43619 0.36763864 0.46118858]] [[0.8442785 0.6569465 0.33267956] [0.60673906 0.8239907 0.77907075] [0.28927334 0.30360456 0.25744469]]

Q. 앞(head) 또는 뒤(tail) (n=1) 가 나올 확률이 각각 50%(p=0.5)인 동전 던지기를 20번(size=20) 수행한 결과를 배열로 출력하세요.

In [309]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

print(np.random.binomial(n=1, p=0.5, size=20))

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

[1 0 1 0 0 1 0 0 0 0 1 0 1 1 0 0 1 1 1 0]

Q. (2,3,4) 3차원 배열 형태로 정규분포(np.random.normal)로 부터 무작위 샘플을 생성

In [318]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

print(np.random.normal(size=(2,3,4)))

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

[[[ 0.28971829 -1.25384296 1.26056299 0.79092547] [-0.41669301 1.69253612 -1.25453861 0.89229081] [-2.59002672 1.15963261 0.0500079 -2.35456797]] [[-0.2734168 -0.32503505 0.77715786 -0.53718658] [ 0.19606081 -0.25823293 1.30422557 -1.55502766] [-0.43945161 0.24400828 -1.54123101 0.15733154]]]

Q. [4 7 7 1 9]에서 중복되지 않는 원소 배열과 각 원소의 중복 개수 배열을 출력하세요.

In [322]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

a = np.array([4,7,7,1,9])

index,count=np.unique(a,return_counts=True)

print(index)

print(count)

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

[1 4 7 9] [1 1 2 1]

Q. [1, 1, 2, 2, 2, 3]에서 0 ~ 5에 해당하는 정수의 개수 배열을 출력하세요.

In [335]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

print(np.bincount([1,1,2,2,2,3], minlength=6))

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

[0 2 3 1 0 0]

Q(응용) 'ID', 'Prod', 'Price' 3개의 column과 10개의 row으로 구성되는 데이터셋을 아래를 참조하여 생성하세요.

ID는 1 ~ 10으로 적용

Prod는 상품코드로서 np.random을 이용하여 10보다 적은 정수를 랜덤하게 선택

Price는 가격으로서 np.random을 이용하여 1000 보다 적은 양의 소수를 랜덤하게 선택 (뽑은거 * 1000하면 됨)

3개의 컬럼을 결합하는 방법은 concat() 함수를 사용 (Series로 해도 된다) (df로 만들고 series를 덧붙이는 방법 등)

In [336]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

#고객 구매데이터 생성(id, 성별, 연령, 지역, 상품, 가격, 구매시간)

import numpy as np

import pandas as pd

import datetime

import warnings

warnings.filterwarnings('ignore')

 

a= np.random.randint(1,20, size=10) #1번에서 20번정도 구매하는 빈도가 생기는걸 정해줌(10개의 데이터)

sr_a = pd.Series(a, name='Freq')

 

b=np.random.randint(1,9,size=10)

sr_b=pd.Series(b,name='Prod')

 

c=np.random.rand(10)*1000

sr_c=pd.Series(c,name='Price')

 

d=np.random.rand(10)*10000

sr_d=pd.Series(d,name='Amount') #10000원정도에서 왔다갔다 하게 하려고 설정

 

e=np.random.choice(['Man','Woman'],size=10)

sr_e=pd.Series(e, name='Sex')

 

f=np.random.choice(['Seoul','Daejeon','Daegu','Busan','Changwon', 'Gangwon', 'Mokpo'],size=10)

sr_f=pd.Series(f, name='Region')

 

g=np.random.choice(range(1,15) ,size=10,replace=False)

sr_g=pd.Series(g, name='ID')

 

t=np.random.choice([datetime.datetime.now()],size=10)

sr_t=pd.Series(t, name='time')

 

df=pd.concat([sr_a,sr_b,sr_c,sr_d,sr_e,sr_f,sr_g,sr_t],axis=1)

display(df)

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 1열 선택1열 다음에 열 추가
  • 2열 선택2열 다음에 열 추가
  • 3열 선택3열 다음에 열 추가
  • 4열 선택4열 다음에 열 추가
  • 5열 선택5열 다음에 열 추가
  • 6열 선택6열 다음에 열 추가
  • 7열 선택7열 다음에 열 추가
  • 8열 선택8열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가
  • 1행 선택1행 다음에 행 추가
  • 2행 선택2행 다음에 행 추가
  • 3행 선택3행 다음에 행 추가
  • 4행 선택4행 다음에 행 추가
  • 5행 선택5행 다음에 행 추가
  • 6행 선택6행 다음에 행 추가
  • 7행 선택7행 다음에 행 추가
  • 8행 선택8행 다음에 행 추가
  • 9행 선택9행 다음에 행 추가
  • 10행 선택10행 다음에 행 추가

열 너비 조절

행 높이 조절

 

Freq

Prod

Price

Amount

Sex

Region

ID

time

0

17

7

384.320323

1487.854249

Woman

Daegu

10

2020-03-16 18:13:03.254451

1

16

4

825.042776

8321.487882

Woman

Mokpo

4

2020-03-16 18:13:03.254451

2

19

7

722.973158

9401.722171

Man

Daegu

13

2020-03-16 18:13:03.254451

3

4

3

294.938088

2920.488268

Woman

Changwon

6

2020-03-16 18:13:03.254451

4

8

2

813.653715

215.534590

Man

Gangwon

11

2020-03-16 18:13:03.254451

5

19

3

171.034324

8169.096889

Woman

Gangwon

1

2020-03-16 18:13:03.254451

6

18

2

837.204970

7394.767991

Woman

Daegu

14

2020-03-16 18:13:03.254451

7

3

2

612.606588

925.849913

Woman

Daegu

8

2020-03-16 18:13:03.254451

8

7

6

349.314482

3721.022476

Man

Daejeon

7

2020-03-16 18:13:03.254451

9

12

1

14.947452

729.567155

Woman

Busan

5

2020-03-16 18:13:03.254451

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

 

 

====================================================수업=============================================================

 

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

# random 함수

import random

print(random.random()) #0.0 <= x < 1.0 사이

print(random.randint(1,10)) # 1에서 10 사이의 정수중에서 난수값 리턴

print(random.uniform(10,20)) # min max 사이 float 리턴

print(random.randrange(10)) # 지정범위 int 리턴

print(random.choice([1,2,3,4,5])) # 리스트 내부에 있는 요소를 랜덤하게 선택

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

0.8207491878104047 8 17.36846874254026 9 3

In [224]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

list = [1,2,3,4,5]

random.shuffle(list) # 리스트 요소들을 랜덤하게 섞기

print(list)

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

[5] [1, 2, 3, 4]

In [119]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

print(random.sample([1,2,3,4,5], k=2)) #리스트의 요소 중 k개 뽑기

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

[3, 4]

In [249]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

import numpy as np

# numpy의 np.random

# Numpy의 random 서브패키지에는 난수를 생성하는 다양한 명령을 제공

# rand : 0부터 1 사이의 균일 분포

# randn : 가우시안 표준 정규 분포(평균을 0으로 하고 표준편차를 1로 한것 : 가우시안)

# randint : 균일 분포의 정수 난수

 

np.random.seed # seed를 통한 난수 생성

np.random.randint # 균일분포의 정수 난수 1개 생성

np.random.rand # 0부터 1사이의 균일분포(0부터 1까지 직선)에서 난수 매트릭스 array 생성

print(np.random.randn()) # 가우시안 표준 정규분포에서 난수 매트릭스 array 생성

print(np.random.randn()) # 가우시안은 0을 기준으로 좌우가 똑같은 분포인데 여기서 표준정규분포를 따르는게 randn

print(np.random.randn())

print(np.random.randn())

print(np.random.randn())

 

np.random.shuffle # 기존의 데이터의 순서 바꾸기

np.random.choice # 기존의 데이터에서 sampling

np.random.uniform # 실수출력

 

# 다차원의 array 형태로 정규분포(np.random.normal)로부터 무작위 샘플을 생성

np.random.normal(size=(2,3,4))

 

#앞(head) 또는 뒤(tail) (n=1) 가 나올 확률이 각 50%(p=0.5)인 동전 던지기를 20번(size)

np.random.binomial(n=1, p=0.5, size=20)

np.unique # 중복되지 않은 값의 리스트 출력

np.bincount # 발생하지 않은 사건에 대해서도 카운트

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

2.5921336769769807 0.011059085782480528 -1.7230908153757734 0.5202657944954446 0.020812361520378322

Out[249]:

<function numpy.bincount>

In [251]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

#난수 생성할 때 마다 값이 달라지는 것이 아니라, 누가, 언제 하든지 간에 똑같은 난수

np.random.seed(0) # 이 문구가 활성화되면 같은 값이 계속 출력된다.(난수생성 시 값을 유지하고 싶을 때 사용)

np.random.rand(5) #array([0.46052915, 0.09624339, 0.2053374 , 0.49348483, 0.21180261]) 랜덤발생

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

Out[251]:

array([0.5488135 , 0.71518937, 0.60276338, 0.54488318, 0.4236548 ])

In [225]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

# numpy.random.randint(low, high=None, size=None)

np.random.randint(6) # 0부터 5까지 랜덤한 숫자 1개 ( 6을 포함하지 않는다. 0~5까지 )

np.random.randint(1,20) #1부터 19까지 랜덤 숫자 1개

# np.random.seed(5)

np.random.randint(10,size=10) #size는 난수의 숫자

display(np.random.randint(10,20, size=10)) # 10에서 19까지 10개를 추출(1차원 배열)

display(np.random.randint(10,20, size=(3,5))) # 10~20 사이의 숫자를 랜덤으로 뽑는 3행 5열 (다차원 배열)

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

array([19, 16, 19, 17, 17, 14, 16, 13, 18, 19])

array([[19, 18, 14, 17, 15], [15, 16, 14, 18, 13], [17, 12, 11, 13, 16]])

In [278]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

import numpy as np

print(np.random.rand(6)) # 0 부터 1사이의 균일분포에서 난수 매트릭스 array 생성

print(np.random.randn(3,2))

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

[0.95287067 0.0139484 0.53346568 0.30458203 0.88286 0.25062272] [[ 1.00554921 0.57468582] [ 1.55668004 -0.41891835] [-0.40971692 1.11637454]]

In [282]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

print(np.random.randn(6)) # 평균 0, 표준편차 1의 (가우시안) 표준정규분포 난수를 매트릭스 array생성

print(np.random.randn(3,2))

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

[ 0.29839875 0.23766958 -0.15580481 -0.8595119 2.5290124 -0.84448494] [[ 0.89066205 0.77200376] [ 0.02031364 -1.58325014] [ 0.07544465 0.5921135 ]]

In [283]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

# 구매고객 이탈고객 이진 분류 모델

# 여러가지 변수 : 포스데이터 구매빈도 구매금액

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

In [291]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

# numpy.random.choice(a, size=None, replace=True)

# a : 배열이면 원래의 데이터, 정수이면 arange(a) 명령으로 데이터 생성

# size : 정수, 샘플 숫자

# replace : 불린, True이면 한번 선택한 데이터를 다시 선택 가능

 

# print(np.random.choice([1,2,3,4,5]))

np.random.seed(3)

np.random.choice(5,5, replace=False) #shuffle 명령과 같다.(replace는 저장하지 않는다 = False, 저장한다 = True)

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

Out[291]:

array([3, 4, 1, 0, 2])

In [296]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

list=[1,2,3,4,5]

np.random.shuffle(list)

print(list)

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

[4, 5, 2, 3, 1]

In [304]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

a = np.array([11,11,2,2,34,34])

index,count=np.unique(a,return_counts=True) #unique : 중복되는건 그 중에서 하나만(11이 2개, 2가 2개, 34가 2개니까 하나만 뽑음)

# return_counts = True 는

print(index) #index : 중복된걸 하나로 뽑은걸 출력

print(count) #count : 중복되는 갯수를 각각 뽑아준다.(11이 2개, 2가 2개, 34가 2개 해서 2 2 2 출력)

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

[ 2 11 34] [2 2 2]

In [309]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

# 0부터 minlength -1 까지의 숫자에 대해 각각 카운트

np.bincount([1,1,2,2,2,3], minlength=6) # minlength는 6이라고 되어있는데 6-1을 해서 5가 된다. 이때 0,1,2,3,4,5 가 몇개있는지 출력한다.

# 0은 0개 이므로 0출력, 1은 2개 이므로 2 출력, 3은 1개 있으므로 1 출력, 4는 없으므로 0, 5도 없으므로 0 출력)

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

Out[309]:

array([0, 2, 3, 1, 0, 0], dtype=int64)

In [312]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

# 1.0보다 크거나 2.0보다 작은 세 개의 수를 반환 : uniform 은 실수 출력

np.random.uniform(1.0,2.0,3)

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

Out[312]:

array([1.28352508, 1.69313792, 1.44045372])

In [318]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

# random_sample은 uniform 함수의 최소값, 최대값을 각각 0.0, 1.0으로 지정한 것과 같음

 

mt1 = np.random.uniform(0.0,1.0,(2,3)) # 0.0 ~ 1.0 사이의 숫자를 2행 3렬로 뽑아준다.

mt2 = np.random.random_sample((2,3)) # 2차원 배열 2행 3열 배열이 출력된다.(random_sample 은 0.0~1.0이 기본셋팅)

print(mt1)

print(mt2)

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

[[0.65047686 0.72393914 0.47508861] [0.59666377 0.06696942 0.07256214]] [[0.19897603 0.151861 0.10010434] [0.12929386 0.55327773 0.18781482]]

In [322]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

import pandas as pd

df = pd.DataFrame(np.random.rand(4,8))

df

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

Out[322]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 1열 선택1열 다음에 열 추가
  • 2열 선택2열 다음에 열 추가
  • 3열 선택3열 다음에 열 추가
  • 4열 선택4열 다음에 열 추가
  • 5열 선택5열 다음에 열 추가
  • 6열 선택6열 다음에 열 추가
  • 7열 선택7열 다음에 열 추가
  • 8열 선택8열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가
  • 1행 선택1행 다음에 행 추가
  • 2행 선택2행 다음에 행 추가
  • 3행 선택3행 다음에 행 추가
  • 4행 선택4행 다음에 행 추가

열 너비 조절

행 높이 조절

 

0

1

2

3

4

5

6

7

0

0.892393

0.640177

0.143332

0.414127

0.049109

0.209373

0.730708

0.651123

1

0.478978

0.274781

0.652223

0.956450

0.435521

0.070133

0.057731

0.082871

2

0.959707

0.540761

0.837462

0.170034

0.260345

0.691978

0.895570

0.340688

3

0.064673

0.864120

0.290872

0.741082

0.158034

0.694963

0.841420

0.727152

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

In [361]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

import numpy as np

import pandas as pd

np.random.seed(0)

index = [np.arange(5)] # 출력값 : [array([0, 1, 2, 3, 4])] : 괄호 안에 쓰인 숫자 미만의 연속적 숫자 출력

columns= ['A','B','C','D','E']

df = pd.DataFrame(np.arange(25).reshape(5,5),index,columns=columns) # index값과 columns 값 명시.(columns 는 =columns 가 없어도 가능)

# reshape : 괄호 안에 5,5면 5행 5열로 바꿈. np.arange(25)한걸 reshape(5,5)로 만들어준다.

 

display(df)

 

df2 = pd.DataFrame(np.arange(50).reshape(5,10),index=[np.arange(5)],columns=['A','B','C','D','E','F','G','H','I','J'])

display(df2)

 

df3 = pd.DataFrame(np.random.randint(50,size=50).reshape(5,10),index=[np.random.randint(10,size=5)],\

columns=['A','B','C','D','E','F','G','H','I','J'])

display(df3)

 

df4 = pd.DataFrame(np.random.randint(50,size=50).reshape(5,10)*10,index=[np.random.randint(10,size=5)*10],\

columns=['A','B','C','D','E','F','G','H','I','J'])

df5 = df3.apply(lambda x:x*10) # 모든 데이터값에 함수 다 적용 : apply() 함수(DataFrame 내장함수)

display(df4)

display(df5)

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 1열 선택1열 다음에 열 추가
  • 2열 선택2열 다음에 열 추가
  • 3열 선택3열 다음에 열 추가
  • 4열 선택4열 다음에 열 추가
  • 5열 선택5열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가
  • 1행 선택1행 다음에 행 추가
  • 2행 선택2행 다음에 행 추가
  • 3행 선택3행 다음에 행 추가
  • 4행 선택4행 다음에 행 추가
  • 5행 선택5행 다음에 행 추가

열 너비 조절

행 높이 조절

 

A

B

C

D

E

0

0

1

2

3

4

1

5

6

7

8

9

2

10

11

12

13

14

3

15

16

17

18

19

4

20

21

22

23

24

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 1열 선택1열 다음에 열 추가
  • 2열 선택2열 다음에 열 추가
  • 3열 선택3열 다음에 열 추가
  • 4열 선택4열 다음에 열 추가
  • 5열 선택5열 다음에 열 추가
  • 6열 선택6열 다음에 열 추가
  • 7열 선택7열 다음에 열 추가
  • 8열 선택8열 다음에 열 추가
  • 9열 선택9열 다음에 열 추가
  • 10열 선택10열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가
  • 1행 선택1행 다음에 행 추가
  • 2행 선택2행 다음에 행 추가
  • 3행 선택3행 다음에 행 추가
  • 4행 선택4행 다음에 행 추가
  • 5행 선택5행 다음에 행 추가

열 너비 조절

행 높이 조절

 

A

B

C

D

E

F

G

H

I

J

0

0

1

2

3

4

5

6

7

8

9

1

10

11

12

13

14

15

16

17

18

19

2

20

21

22

23

24

25

26

27

28

29

3

30

31

32

33

34

35

36

37

38

39

4

40

41

42

43

44

45

46

47

48

49

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 1열 선택1열 다음에 열 추가
  • 2열 선택2열 다음에 열 추가
  • 3열 선택3열 다음에 열 추가
  • 4열 선택4열 다음에 열 추가
  • 5열 선택5열 다음에 열 추가
  • 6열 선택6열 다음에 열 추가
  • 7열 선택7열 다음에 열 추가
  • 8열 선택8열 다음에 열 추가
  • 9열 선택9열 다음에 열 추가
  • 10열 선택10열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가
  • 1행 선택1행 다음에 행 추가
  • 2행 선택2행 다음에 행 추가
  • 3행 선택3행 다음에 행 추가
  • 4행 선택4행 다음에 행 추가
  • 5행 선택5행 다음에 행 추가

열 너비 조절

행 높이 조절

 

A

B

C

D

E

F

G

H

I

J

2

44

47

0

3

3

39

9

19

21

36

7

23

6

24

24

12

1

38

39

23

46

2

24

17

37

25

13

8

9

20

16

5

0

15

47

0

18

35

24

49

29

19

19

0

14

39

32

1

9

32

31

10

23

35

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 1열 선택1열 다음에 열 추가
  • 2열 선택2열 다음에 열 추가
  • 3열 선택3열 다음에 열 추가
  • 4열 선택4열 다음에 열 추가
  • 5열 선택5열 다음에 열 추가
  • 6열 선택6열 다음에 열 추가
  • 7열 선택7열 다음에 열 추가
  • 8열 선택8열 다음에 열 추가
  • 9열 선택9열 다음에 열 추가
  • 10열 선택10열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가
  • 1행 선택1행 다음에 행 추가
  • 2행 선택2행 다음에 행 추가
  • 3행 선택3행 다음에 행 추가
  • 4행 선택4행 다음에 행 추가
  • 5행 선택5행 다음에 행 추가

열 너비 조절

행 높이 조절

 

A

B

C

D

E

F

G

H

I

J

50

360

50

380

400

170

150

40

410

420

310

0

10

10

390

410

350

380

110

460

180

270

10

0

140

350

120

420

200

110

40

60

40

20

470

30

120

360

400

140

150

200

350

230

40

150

130

210

480

490

50

410

350

0

310

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 1열 선택1열 다음에 열 추가
  • 2열 선택2열 다음에 열 추가
  • 3열 선택3열 다음에 열 추가
  • 4열 선택4열 다음에 열 추가
  • 5열 선택5열 다음에 열 추가
  • 6열 선택6열 다음에 열 추가
  • 7열 선택7열 다음에 열 추가
  • 8열 선택8열 다음에 열 추가
  • 9열 선택9열 다음에 열 추가
  • 10열 선택10열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가
  • 1행 선택1행 다음에 행 추가
  • 2행 선택2행 다음에 행 추가
  • 3행 선택3행 다음에 행 추가
  • 4행 선택4행 다음에 행 추가
  • 5행 선택5행 다음에 행 추가

열 너비 조절

행 높이 조절

 

A

B

C

D

E

F

G

H

I

J

2

440

470

0

30

30

390

90

190

210

360

7

230

60

240

240

120

10

380

390

230

460

2

240

170

370

250

130

80

90

200

160

50

0

150

470

0

180

350

240

490

290

190

190

0

140

390

320

10

90

320

310

100

230

350

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

In [1]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

# 모의 데이터셋 만들기 : 선형 회귀 make_regression

from sklearn.datasets import make_regression

features, target, coefficients = make_regression(n_samples=100,

n_features=3,

n_informative=3,

n_targets=1,

noise=0.0,

coef=True,

random_state=1)

print(features[:3])

print(target[:3])

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

[[ 1.29322588 -0.61736206 -0.11044703] [-2.793085 0.36633201 1.93752881] [ 0.80186103 -0.18656977 0.0465673 ]] [-10.37865986 25.5124503 19.67705609]

In [213]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

#고객 구매데이터 생성(id, 성별, 연령, 지역, 상품, 가격, 구매시간)

import numpy as np

import pandas as pd

import datetime

import warnings

warnings.filterwarnings('ignore')

 

a= np.random.randint(1,20, size=10) #1번에서 20번정도 구매하는 빈도가 생기는걸 정해줌(10개의 데이터)

sr_a = pd.Series(a, name='Freq')

 

b=np.random.randint(1,9,size=10)

sr_b=pd.Series(b,name='Prod')

 

c=np.random.rand(10)*1000

sr_c=pd.Series(c,name='Price')

 

d=np.random.rand(10)*10000

sr_d=pd.Series(d,name='Amount') #10000원정도에서 왔다갔다 하게 하려고 설정

 

e=np.random.choice(['Man','Woman'],size=10)

sr_e=pd.Series(e, name='Sex')

 

f=np.random.choice(['Seoul','Dasjeon','Daegu','Busan','Changwon', 'Gangwon', 'Mokpo'],size=10)

sr_f=pd.Series(f, name='Region')

 

g=np.random.choice(range(1,15) ,size=10,replace=False)

sr_g=pd.Series(g, name='ID')

 

t=np.random.choice([datetime.datetime.now()],size=10)

sr_t=pd.Series(t, name='time')

 

df=pd.concat([sr_a,sr_b,sr_c,sr_d,sr_e,sr_f,sr_g,sr_t],axis=1)

df

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

Out[213]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 1열 선택1열 다음에 열 추가
  • 2열 선택2열 다음에 열 추가
  • 3열 선택3열 다음에 열 추가
  • 4열 선택4열 다음에 열 추가
  • 5열 선택5열 다음에 열 추가
  • 6열 선택6열 다음에 열 추가
  • 7열 선택7열 다음에 열 추가
  • 8열 선택8열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가
  • 1행 선택1행 다음에 행 추가
  • 2행 선택2행 다음에 행 추가
  • 3행 선택3행 다음에 행 추가
  • 4행 선택4행 다음에 행 추가
  • 5행 선택5행 다음에 행 추가
  • 6행 선택6행 다음에 행 추가
  • 7행 선택7행 다음에 행 추가
  • 8행 선택8행 다음에 행 추가
  • 9행 선택9행 다음에 행 추가
  • 10행 선택10행 다음에 행 추가

열 너비 조절

행 높이 조절

 

Freq

Prod

Price

Amount

Sex

Region

ID

time

0

8

3

880.585474

4629.761728

Man

Busan

11

2020-03-16 17:26:29.366941

1

15

8

892.120087

4633.522116

Woman

Changwon

6

2020-03-16 17:26:29.366941

2

19

7

983.294974

7767.981665

Man

Mokpo

9

2020-03-16 17:26:29.366941

3

19

7

929.954725

6916.538988

Man

Gangwon

10

2020-03-16 17:26:29.366941

4

4

1

4.910403

1691.256694

Woman

Mokpo

7

2020-03-16 17:26:29.366941

5

11

3

782.120612

5520.004515

Woman

Busan

8

2020-03-16 17:26:29.366941

6

3

5

210.629889

3805.656518

Woman

Dasjeon

12

2020-03-16 17:26:29.366941

7

11

6

971.372164

6349.280555

Man

Changwon

4

2020-03-16 17:26:29.366941

8

1

5

133.938599

5117.229699

Man

Mokpo

3

2020-03-16 17:26:29.366941

9

12

1

962.320016

7790.631363

Man

Mokpo

1

2020-03-16 17:26:29.366941

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

In [26]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

# 풀이 (Series 로 연결)

import pandas as pd

import numpy as np

 

a = np.arange(10)+1

sr_a = pd.Series(a, name='ID')

 

b = np.random.randint(1,9,size=10)

sr_b = pd.Series(b,name='Prod')

 

c = np.random.rand(10)*1000

sr_c = pd.Series(c,name='Price')

 

df = pd.concat([sr_a,sr_b,sr_c],axis=1)

df

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

Out[26]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 1열 선택1열 다음에 열 추가
  • 2열 선택2열 다음에 열 추가
  • 3열 선택3열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가
  • 1행 선택1행 다음에 행 추가
  • 2행 선택2행 다음에 행 추가
  • 3행 선택3행 다음에 행 추가
  • 4행 선택4행 다음에 행 추가
  • 5행 선택5행 다음에 행 추가
  • 6행 선택6행 다음에 행 추가
  • 7행 선택7행 다음에 행 추가
  • 8행 선택8행 다음에 행 추가
  • 9행 선택9행 다음에 행 추가
  • 10행 선택10행 다음에 행 추가

열 너비 조절

행 높이 조절

 

ID

Prod

Price

0

1

3

825.697065

1

2

1

767.801062

2

3

1

721.247442

3

4

3

347.339150

4

5

4

587.931073

5

6

5

65.679356

6

7

4

642.628880

7

8

8

810.990842

8

9

7

155.669763

9

10

2

719.205828

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

 

 

728x90
반응형

댓글