우리는 이제 프로그래밍까지 공부하면서 훈련을 통해 자신이 생각하는 것을 컴퓨터로 구현해낼 수 있어요. 집합 그리고 List를 이용하여 그룹들을 나눠서 데이터가 무엇이 있는 지, 데이터가 얼마나 있는 지도 확인할 수 있죠. 그래서 오늘은 이러한 데이터들을 종합하여 저장한 후 그래프를 그리는 연습을 해보려고 해요.
import random
data=[]
for i in range(10000):
data.append(random.randint(1,100))
names=set(data)
names[0]
names=list(names)
names[0]
for i in names:
if i <=10:
print data.count(i)
else: break
(편의상 열개만 불러왔어요). 그런데 나중에 데이터를 분석하기 위한 그래프를 그려야 하는데 이런식으로는 누가누군지 알 수가 없죠.
counts={}
for i in names:
counts[i]=data.count(i)
print counts[1]
print counts[99]
counts.keys()
keys()는 집합 자체를 불러오는 기능이에요. 실행하면 우리가 아까 저장했었던 집합들이 나타나게 되죠. dictionary에서의 key는 데이터의 집합!
counts.values()
values()는 집합의 개수를 나타내는 List에요. 위 데이터의 경우 1에서 100까지 각각 몇개씩 있는 지 나타내는 거죠. dictionary에서의 value는 집합의 원소 개수!
counts.get(99)
1 in counts
101 in counts
in을 통해서 딕셔너리에 값이 있는 지 없는 지도 나타낼 수 있죠.
class1={'Boys':25,'girls':20}
class1vector={'number1':[170,50],'number2':[155,40]}
class1vector
이런식으로 딕셔너리를 통해서 원하는 값들을 만들어낼 수도 있죠. 그러니, 딕셔너리에는 우리의 관심있는 데이터들이 모여있는 집합물이라고 할 수 있죠. 위의 class1에서는 남자가 여자가 몇명인지 궁금한 반면, class1vector에선 키와 몸무게를 저장했으니깐 말이죠.
import matplotlib.pyplot as plt
%matplotlib inline
plt.bar(counts.keys(),counts.values())
plt.show()
import pandas as pd
wine=pd.read_csv('https://ocw.mit.edu/courses/sloan-school-of-management/15-097-prediction-machine-learning-and-statistics-spring-2012/datasets/wine.csv',header=None)
Alcohol=list(wine.ix[:,0]);
Acid=list(wine.ix[:,1]);
proline=list(wine.ix[:,12])
plt.scatter(Acid,proline,c=Alcohol)
plt.show()
이 그림 와인에서 산성과 프롤린의 관계를 찾아내려고 그린 산점도에요. 그룹은 알콜이 어느정도 들어강있느냐에따라 나누었구요.
items=set(Alcohol)
items=list(items)
howmany={}
for item in items:
howmany[item]=Alcohol.count(item)
이렇게 되면 howmany라는 Alocohol이 얼만큼 있는 지 넣을 수 있겠죠?
plt.bar(howmany.keys(),howmany.values(),color=['red','green','blue'])
벡터라는 말이 갑자기 생소하게 나오니깐 무슨말인지 모르겠지만, 코드와 그림을 보면서 쉽게 이해해봐요.
%%html
<img src='http://cfile5.uf.tistory.com/image/03302733515503933FD919' width=300 height=300>
person1=[170,62,4,0];person2=[165,66,6,2];person3=[160,50,10,15]
위의 경우에는 값이 한 사람마다 우리에게 주는 정보가 4개씩 있다는 것을 알 수 있어요. 그리고 이를 나타내는 게 Vector(벡터)에요. 결국, 조사한 게 얼마냐에 따라서 벡터의 ,수가 정해지는거죠. 그리고 벡터의 값의 개수를 차원이라고 부르죠
%%html
<img src="http://3.bp.blogspot.com/_mkkVHG-vLEw/TD_hrvDTtDI/AAAAAAAAAas/3lIMonAZP6Y/s320/quad19.png" width=250 height=250>
그럼 사람들을 여러 명 조사해서 세로로 쌓게 되면 어떻게 될까요? 그리고 이러한 사각형(직사각형 혹은 정사각형)의 형태를 띈 데이터의 모임을 행렬이라고 부르죠 키,몸무게,가족의 수, 애완동물의 수를 조사하는 사람들을 100명 조사했다면, (100*4)개의 값이 있는 행렬이 되겠죠? 이를 100x4행렬이라고도 부르죠.
[person1,person2,person3]
만약 세명만 조사했다면 3x4행렬이라고 부르고요.