beginner/파이썬 기초
NumPy_잘라내기
johh
2019. 2. 11. 13:22
In [1]:
import numpy as np
Iris 데이터 불러오기¶
In [2]:
f = open('iris.csv')
'''작업내용'''
f.close()
In [3]:
data = []
f = open('iris.csv')
f.readline() # 첫 줄은 분류 목록이므로
for line in f:
I = line.strip().split(',')
I[0] = float(I[0])
I[1] = float(I[1])
I[2] = float(I[2])
I[3] = float(I[3])
data.append(I)
if I[4] == 'Iris-setosa':
I[4] = 0
elif I[4] == 'Iris-versicolor':
I[4] = 1
else:
I[4] = 2
f.close()
iris = np.array(data)
print(iris)
In [4]:
iris.shape
Out[4]:
In [5]:
iris[0]
Out[5]:
In [6]:
iris[:,4]
Out[6]:
In [7]:
f = open('iris.csv')
line = f.readline()
features = line.strip().split(',')[:4]
labels = ['Iris-setosa', 'Iris-versicolor', 'Iris-virginica']
data = []
for line in f:
I = line.strip().split(',')
I[:4] = [float(i) for i in I[:4]]
I[4] = labels.index(I[4])
data.append(I)
f.close()
iris = np.array(data)
display : print와 유사한데 아래로 쭉 써준다
In [8]:
display(type(iris), iris.shape, len(iris), iris[0])
데이터를 가공해서 더 잘 다루기 위해 list를 NumPy로 바꾼다.
행(샘플, 레코드)읽기¶
In [9]:
iris[0]
Out[9]:
In [10]:
iris[1]
Out[10]:
In [11]:
iris[149]
Out[11]:
In [12]:
iris[-1]
Out[12]:
In [13]:
iris[150] # 0부터 시작하니 마지막 줄은 149이다.
In [ ]:
iris[0:5]
In [14]:
iris[50:55]
Out[14]:
한 항목 읽기¶
In [15]:
iris[0,0]
Out[15]:
In [16]:
iris[50,3]
Out[16]:
In [17]:
iris[0,4], iris[0,-1], iris[-1,0], iris[-1,-1]
Out[17]:
열(칼럼,속성)읽기¶
In [18]:
iris[:,0]
Out[18]:
In [19]:
iris[:,-1]
Out[19]:
In [20]:
X = iris[:,:4]
X
Out[20]:
In [21]:
X.shape
Out[21]:
In [22]:
y = iris[:,4]
y
Out[22]:
In [23]:
y.shape
Out[23]:
데이타와 레이블(target)을 분리
In [24]:
# iris[행번호, 열번호]
그래프 그려보기¶
In [25]:
import matplotlib.pyplot as plt
In [26]:
plt.plot(iris[:,0])
Out[26]:
In [27]:
plt.plot(iris[:,-1])
Out[27]:
In [28]:
plt.plot(iris[:,1])
Out[28]:
In [29]:
plt.plot(iris[:,0])
plt.plot(iris[:,1])
plt.plot(iris[:,2])
plt.plot(iris[:,3])
plt.title('Iris features', fontsize = 15)
plt.legend(['SepalLength', 'SepalWidth', 'PetalLength', 'PetalWidth'])
Out[29]:
In [30]:
plt.scatter(iris[:,0], iris[:,1], c=iris[:,-1]) #c는 컬러
plt.colorbar()
plt.xlabel('SepalLength')
plt.ylabel('SepalWidth') #속성 4개를 가지고 6종류의 산점도를 그릴수 있다.
Out[30]:
In [31]:
plt.plot(iris[:50,:4].T, 'r-', alpha=0.1)
plt.plot(iris[50:100,:4].T, 'g-',alpha=0.1)
plt.plot(iris[100:,:4].T, 'b-', alpha=0.1)
plt.xticks(range(4),['SepalLength','SepalWidth', 'PetalLength', 'PetalWidth'])
pass
In [32]:
iris[:,0]
Out[32]:
In [33]:
iris[:,0]
Out[33]:
In [34]:
data
Out[34]:
In [35]:
slen2=[]
for a in data:
slen2.append(a[0])
slen2
Out[35]:
In [36]:
type(data)
Out[36]:
In [37]:
slen1=[]
for i in data:
slen1.append(i[:4])
slen1
Out[37]:
In [38]:
X = iris[:,:4]
y = iris[:,4]
In [39]:
X
Out[39]:
In [40]:
y
Out[40]:
원하는 속성 뽑아내기¶
In [41]:
iris[:5]
Out[41]:
In [42]:
iris[[0,2,4]]
Out[42]:
In [43]:
iris[[4,3,2,1,0]]
Out[43]:
In [44]:
iris[[0,50,100]]
Out[44]:
In [45]:
iris[:,[0,2,4]]
Out[45]:
조건식 적용¶
In [46]:
iris2 = iris[[0,50,100]]
iris2
Out[46]:
In [47]:
iris2[[True,False,True]]
Out[47]:
In [48]:
iris2[[0,2]]
Out[48]:
In [49]:
iris2[:,[0,2]]
Out[49]:
In [50]:
iris2[:,[True,False,True,False,False]]
Out[50]:
- 인덱스 이용
- 리스트 이용
- 조건식 이용 : 갯수 일치
versicolor와 virginica 만 골라내 보자¶
In [54]:
a = np.array([1,2,3,4,5])
a
Out[54]:
In [56]:
a>3 # 부등식도 항목 하나하나 적용
Out[56]:
In [57]:
a == 3
Out[57]:
In [51]:
iris2
Out[51]:
In [59]:
t = iris2[:,-1] # t는 target을 의미
t
Out[59]:
In [61]:
t < 1
Out[61]:
In [63]:
iris2[t<1] # = iris2[[True, False, False]]
Out[63]:
In [64]:
iris2[iris2[:,-1]==0]
Out[64]:
In [68]:
setosa = iris[iris[:,-1]==0]
setosa
Out[68]:
In [67]:
setosa.shape
Out[67]:
In [70]:
versicolor = iris[iris[:,-1]==1]
versicolor
Out[70]:
In [71]:
versicolor.shape
Out[71]:
In [72]:
virginica = iris[iris[:,-1]==2]
virginica
Out[72]:
In [73]:
virginica.shape
Out[73]:
In [77]:
X = iris[:, :4]
y = iris[:, 4]
setosa1 = X[y==0]
versicolor1 = X[y==1]
virginica1 = X[y==2]
In [78]:
setosa1
Out[78]:
In [79]:
versicolor1
Out[79]:
In [81]:
virginica1
Out[81]: