티스토리 뷰
In [1]:
import numpy as np
import matplotlib.pyplot as plt
In [33]:
f = open('CARD_SUBWAY_MONTH_201901.csv', encoding='utf-8')
head = f.readline()
data=[]
for line in f:
l = line.strip().split(',')
l2 = [i.strip('"') for i in l]
l2[0]=int(l2[0])
l2[2]=int(l2[2])
l2[4]=int(l2[4])
l2[5]=int(l2[5])
l2[6]=int(l2[6])
l2.append(l2[0]//10000)
l2.append((l2[0]//100)%100) # l2[0]%10000//100
l2.append(l2[0]%100)
data.append(l2)
f.close()
In [34]:
head
Out[34]:
In [35]:
data[-10:] # 숫자로 바꾸면 0201 같은 경우 201로 바뀐다
Out[35]:
In [36]:
type(data)
Out[36]:
In [40]:
#기본적으로 for문 이용하여 한줄씩 읽어가며 원하는 정보를 하나씩 빼내
data2= [[line[4], line[5]] for line in data]
data2[:10]
Out[40]:
In [41]:
subway = np.array(data2, dtype=float)
subway.shape
Out[41]:
In [47]:
import matplotlib.pyplot as plt
plt.scatter(subway[:,0],subway[:,1], alpha=0.2)
plt.plot([0,150000],[0,150000],'r')
plt.axis('equal')
Out[47]:
In [51]:
plt.scatter(subway[:,0],subway[:,1], alpha=0.2)
plt.axis('scaled')
plt.xlim(0,20000)
plt.ylim(0,30000)
Out[51]:
In [83]:
from sklearn.linear_model import LinearRegression
model = LinearRegression()
X=subway[:,[0]] # subway[:,0].reshape(-1,1)
y=subway[:,1]
model.fit(X,y)
display(model.coef_, model.intercept_)
display(model.score(subway[:,[0]], subway[:,1]))
In [82]:
a= list(subway[:,1]/subway[:,0]) # 각 점의 기울기를 알아낸다.
plt.scatter(subway[:,0], a, alpha=0.2)
plt.ylabel('slope')
plt.xlabel('boarding')
Out[82]:
In [71]:
sort_a = np.argsort(a) # 인덱스로 바꿔서 정렬
sort_a[::-1]# 반대방향 정렬
Out[71]:
In [73]:
sort_a[-10:]
Out[73]:
In [75]:
data[11361]
Out[75]:
In [76]:
data[19]
Out[76]:
In [77]:
data[6567]
Out[77]:
In [79]:
data[7476]
Out[79]:
pandas 적용 예시¶
In [84]:
import pandas as pd
In [85]:
cols = ["사용일자","노선명","역ID","역명","승차총승객수","하차총승객수","등록일자","년도","월","일"]
subway_df = pd.DataFrame(data, columns=cols)
In [87]:
subway_df
Out[87]:
In [88]:
subway_df.info()
In [89]:
subway_df.describe()
Out[89]:
In [91]:
subway_df['승차총승객수'] #subway_Df.승차총승객수
Out[91]:
numpy에서는 괄호 안에 어떤 값을 넣으면 행에 대해 처리하지만, pandas는 열에 대해 처리
In [93]:
subway_df.iloc[:5,:4]
Out[93]:
In [95]:
subway_df[['승차총승객수', '하차총승객수']]
# 칼럼단위이므로 내가 원하는 정보를 리스트 안에 넣어서 해야해
Out[95]:
Tab을 잘 활용하자!! 어떤 글자를 쓰고 tab누르면 관련 명령어가 다 나옴.
In [97]:
subway_df['노선명'].unique()
Out[97]:
In [101]:
subway_df['노선명'].value_counts() # numpy의 bincount와 유사
Out[101]:
In [102]:
subway_df['사용일자'].value_counts()
Out[102]:
모든 역이 매일 정보가 있는건 아닐까? 아니면 2번 이상 들어간 역이 있어서?
In [104]:
subway_df['역명'].value_counts()
Out[104]:
'beginner > 파이썬 머신러닝 기초' 카테고리의 다른 글
지도학습 - LinearSVM_2 (0) | 2019.03.05 |
---|---|
지도학습 - LinearSVM_1 (0) | 2019.03.05 |
지도학습 - 선형회귀 (1) | 2019.02.27 |
와인 데이터 분석 (0) | 2019.02.26 |
sklearn 기본 틀 (0) | 2019.02.26 |