ファイル編集時のいろいろなvimコマンド

- 移動

・基本操作
 h(←) j(↓) k(↑) l(→)
・%(括弧上でタイプすると対応する括弧上に移動)

- 単語処理

・yw(カーソルの右側から単語をコピー)
・cw(カーソルの右側から単語を削除し、挿入モードに入る)
・dw(カーソルの右側から単語を削除し、挿入モードに入らない)
・yiw(カーソル部分の単語全体をコピー)
・ciw(カーソル部分の単語全体を削除し、挿入モードに入る)
・diw(カーソル部分の単語全体を削除し、挿入モードに入らない)

- 行処理

・yy(行コピー)
・dd(行削除)
・p(行ペースト)
・ctrl+v(矩形選択)
・J(行連結)
 ex.)
   aaa
   bbb
   ↓
   aaa bbb
・矩形選択+$+A(選択した行の末尾に同じ文字列を入力する)

- 挿入モード

・i(カーソルの左側から挿入モードに入る)
・a(カーソルの右側から挿入モードに入る)
・o(カーソル下に行が追加され、挿入モードに入る)
・s(カーソル上の1文字を削除し、挿入モードに入る)
・I(行の先頭から挿入モードに入る)
・A(行の末尾から挿入モードに入る)
・S(行全体を削除し、挿入モードに入る)
・C(現在のカーソルから行末までを削除し、挿入モードに入る)

- 他ファイル操作

・:split <ファイル名>(編集中のファイルとは別のファイルを参照及び編集したいとき)
 ctrl+wwでファイル間の移動が可能(一方でコピーしたものを他方で利用可能)

- 置換

・:%s/<置換前文字列>/<置換後文字列>/g
 最後の「g」を「gc」とすることで、確認しながら置換処理できる

- その他

・ci'(シングルクオートの内部にある文字列を削除し、挿入モードに入る)
・ci"(ダブルクオートの内部にある文字列を削除し、挿入モードに入る)
・ci{(中括弧の内部にある文字列を削除し、挿入モードに入る)
・ctrl+a(カーソル上の数字を1プラスする)
・ctrl+x(カーソル上の数字を1マイナスする)
・ctrl+p(カーソルの前にあるキーワードと合致する単語を逆方向に検索して選択することがでる)
・.(前の処理を繰り返す)
・*(カーソル部分の文字列を検索する)
・ctrl+wv(ウインドウを縦方向に分割する)
・ctrl+ws(ウインドウを横方向に分割する)

- 参考

qiita.com

【python】ファイル存在確認

globモジュール

glob.glob(ファイル名orディレクトリ名)

ファイルorディレクトリが存在したら
リストに格納してくれる
(存在しない場合は空のリストになる)

ex.)

import glob

if glob.glob(’/tmp’):
    print(’T’)
else:
    print(’F’)

Jupyter Notebook

インストール

 # pip install jupyter

起動

 $ jupyter notebook --ip=0.0.0.0 --NotebookApp.token='ken' --NotebookApp.port=8880

 root権限では不可。
 NotebookApp.tokenはログイン画面で入力するパスワード。
 NotebookApp.portはJNで使用するポート番号。(省略時は8888)

【python】機械学習で車の買取価格予測

CarPrice.csvを学習させ、CarPrice_predict.csvを読み込ませた時の【買取価格】を予想する。

### 使用データ:CarPrice.csv、CarPrice_predict.csv

#### ライブラリインポート
import numpy as np
import pandas as pd
from sklearn.preprocessing import LabelEncoder,OneHotEncoder,StandardScaler
from sklearn.decomposition import PCA
from sklearn.model_selection import StratifiedKFold,GridSearchCV
from sklearn.linear_model import Lasso
from sklearn.metrics import mean_squared_error
import pickle

#### データ読み込み

df = pd.read_csv('02_CarPrice.csv', encoding='shift_jis', engine='python')

#### エンコーディング

le = []
enc_columns = []

for i in np.arange(0,4):
    le = np.append(le,LabelEncoder())
    le[i].fit(df.iloc[:,i])
    enc_columns = np.append(enc_columns, le[i].classes_)
    df.iloc[:,i] = le[i].transform(df.iloc[:,i])

#### OneHotエンコーディング

one_hot_encoder = OneHotEncoder()
one_hot_encoder.fit(df.iloc[:,:4])
enc_data = one_hot_encoder.transform(df.iloc[:,:4]).toarray()

enc_df = pd.DataFrame(enc_data)
enc_df.columns = enc_columns
df_post_enc = pd.concat([df.iloc[:,4:-1], enc_df, df.iloc[:,-1]],axis=1)

#### 標準化

sc = StandardScaler()
sc.fit(df_post_enc.iloc[:,:-1])
df_post_sc = pd.DataFrame(sc.transform(df_post_enc.iloc[:,:-1]))
df_post_sc = pd.concat([df_post_sc,df_post_enc.iloc[:,-1]],axis=1)
df_post_sc.columns = df_post_enc.columns

#### 主成分分析

pca = []
num_pc = np.arange(1,len(df_post_sc.columns))
result = np.empty((0,3))
cnt = 0

for i in num_pc:
    pca = np.append(pca,PCA(n_components=i))
    pca[cnt].fit(df_post_sc.iloc[:,:-1])
    result = np.append(result,np.array([[cnt,i,pca[cnt].explained_variance_ratio_.sum()]]),axis=0)
    cnt += 1

print(result)

best_pca = pca[20]
df_post_pca = pd.DataFrame(best_pca.transform(df_post_sc.iloc[:,:-1]))
df_post_pca = pd.concat([df_post_pca,df_post_sc.iloc[:,-1]],axis=1)

#### 学習(回帰)~評価のグリッドサーチ

X = df_post_pca.iloc[:,:-1]
y = df_post_pca.iloc[:,-1]

param_grid = {'alpha':[0.0001,0.001,0.01,0.1,1,10,100,1000,10000]}
reg_l1 = Lasso()

gs = GridSearchCV(estimator=reg_l1,param_grid=param_grid,scoring='neg_mean_squared_error',n_jobs=-1,cv=10)

gs.fit(X=X,y=y)

gs.best_score_

#### RMSE

np.sqrt(np.abs(gs.best_score_))

gs_result = pd.DataFrame(gs.cv_results_)
gs_result.sort_values(by='rank_test_score')

best_model = gs.best_estimator_
best_model.fit(X=X,y=y)

#### 予測対象データの読み込み

df = pd.read_csv('02_CarPrice_predict.csv',encoding='shift_jis',engine='python')

#### エンコーディング

for i in np.arange(0,4):
    df.iloc[:,i] = le[i].transform(df.iloc[:,i])

#### OneHotエンコーディング

df_post_enc = pd.DataFrame(one_hot_encoder.transform(df.iloc[:,0:4]).toarray())
df_post_enc = pd.concat([df.iloc[:,4:],df_post_enc],axis=1)

#### 標準化

df_post_sc = pd.DataFrame(sc.transform(df_post_enc))

print(type(one_hot_encoder))

#### 主成分分析

df_post_pca = pd.DataFrame(best_pca.transform(df_post_sc))

#### 予測

X = df_post_pca.values
best_model.predict(X)

CarPrice.csv

メーカー 使用燃料 駆動方式 エンジン位置 ドア数 ホイールベース 車両全長 車両全幅 車両全高 車両重量 エンジン気筒数 エンジンサイズ エンジン内径 エンジン行程 エンジン圧縮比 エンジン最高出力 エンジン回転数 都市部走行燃費 高速道路走行燃費 買取価格
toyota ガソリン 前輪駆動 フロント 2 95.7 158.7 63.6 54.5 2040 4 92 3.05 3.03 9 62 4800 31 38 6338
volvo ディーゼル 後輪駆動 フロント 4 109.1 188.8 68.9 55.5 3217 6 145 3.01 3.4 23 106 4800 26 27 22470
saab ガソリン 前輪駆動 フロント 4 99.1 186.6 66.5 56.1 2758 4 121 3.54 3.07 9.3 110 5250 21 28 15510
volkswagen ディーゼル 前輪駆動 フロント 2 97.3 171.7 65.5 55.7 2261 4 97 3.01 3.4 23 52 4800 37 46 7775
dodge ガソリン 前輪駆動 フロント 4 93.7 157.3 63.8 50.6 1989 4 90 2.97 3.23 9.4 68 5500 31 38 7609
nissan ガソリン 前輪駆動 フロント 4 94.5 165.3 63.8 54.5 1971 4 97 3.15 3.29 9.4 69 5200 31 37 7499
toyota ガソリン 後輪駆動 フロント 2 98.4 176.2 65.6 52 2536 4 146 3.62 3.5 9.3 116 4800 24 30 9639
volkswagen ガソリン 前輪駆動 フロント 2 94.5 165.7 64 51.4 2221 4 109 3.19 3.4 8.5 90 5500 24 29 9980
bmw ガソリン 後輪駆動 フロント 2 103.5 193.8 67.9 53.7 3380 6 209 3.62 3.39 8 182 5400 16 22 41315
toyota ガソリン 後輪駆動 フロント 2 98.4 176.2 65.6 53 2975 4 146 3.62 3.5 9.3 116 4800 24 30 17669
toyota ディーゼル 前輪駆動 フロント 4 95.7 166.3 64.4 52.8 2275 4 110 3.27 3.35 22.5 56 4500 38 47 7788
mitsubishi ガソリン 前輪駆動 フロント 2 95.9 173.2 66.3 50.2 2833 4 156 3.58 3.86 7 145 5000 19 24 12629
mercedes-benz ガソリン 後輪駆動 フロント 2 96.6 180.3 70.5 50.8 3685 8 234 3.46 3.1 8.3 155 4750 16 18 35056
bmw ガソリン 後輪駆動 フロント 4 101.2 176.8 64.8 54.3 2765 6 164 3.31 3.19 9 121 4250 21 28 21105
mazda ガソリン 前輪駆動 フロント 4 98.8 177.8 66.5 55.5 2425 4 122 3.39 3.39 8.6 84 4800 26 32 11245
nissan ガソリン 前輪駆動 フロント 2 95.1 162.4 63.8 53.3 2008 4 97 3.15 3.29 9.4 69 5200 31 37 8249
volkswagen ガソリン 前輪駆動 フロント 2 97.3 171.7 65.5 55.7 2209 4 109 3.19 3.4 9 85 5250 27 34 7975
mercedes-benz ディーゼル 後輪駆動 フロント 4 110 190.9 70.3 58.7 3750 5 183 3.58 3.64 21.5 123 4350 22 25 28248
toyota ガソリン 前輪駆動 フロント 4 102.4 175.6 66.5 54.9 2326 4 122 3.31 3.54 8.7 92 4200 29 34 8948
plymouth ガソリン 前輪駆動 フロント 4 103.3 174.6 64.6 59.8 2535 4 122 3.35 3.46 8.5 88 5000 24 30 8921
peugot ガソリン 後輪駆動 フロント 4 114.2 198.9 68.4 58.7 3230 4 120 3.46 3.19 8.4 97 5000 19 24 12440
mazda ガソリン 前輪駆動 フロント 2 98.8 177.8 66.5 53.7 2385 4 122 3.39 3.39 8.6 84 4800 26 32 8845
nissan ガソリン 前輪駆動 フロント 4 97.2 173.4 65.2 54.7 2324 4 120 3.33 3.47 8.5 97 5200 27 34 8949
alfa-romero ガソリン 後輪駆動 フロント 2 88.6 168.8 64.1 48.8 2548 4 130 3.47 2.68 9 111 5000 21 27 13495
volkswagen ガソリン 前輪駆動 フロント 2 94.5 159.3 64.2 55.6 2254 4 109 3.19 3.4 8.5 90 5500 24 29 11595
mazda ガソリン 前輪駆動 フロント 4 98.8 177.8 66.5 55.5 2410 4 122 3.39 3.39 8.6 84 4800 26 32 8495
bmw ガソリン 後輪駆動 フロント 2 101.2 176.8 64.8 54.3 2395 4 108 3.5 2.8 8.8 101 5800 23 29 16430
honda ガソリン 前輪駆動 フロント 2 96.5 167.5 65.2 53.3 2289 4 110 3.15 3.58 9 86 5800 27 33 9095
mitsubishi ガソリン 前輪駆動 フロント 2 93.7 157.3 64.4 50.8 2004 4 92 2.97 3.23 9.4 68 5500 31 38 6669
nissan ガソリン 前輪駆動 フロント 4 94.5 170.2 63.8 53.5 2037 4 97 3.15 3.29 9.4 69 5200 31 37 7999
peugot ガソリン 後輪駆動 フロント 4 107.9 186.7 68.4 56.7 3075 4 120 3.46 3.19 8.4 97 5000 19 24 16630
porsche ガソリン 後輪駆動 リア 2 89.5 168.9 65 51.6 2756 6 194 3.74 2.9 9.5 207 5900 17 25 34028
porsche ガソリン 後輪駆動 フロント 2 94.5 168.9 68.3 50.2 2778 4 151 3.94 3.11 9.5 143 5500 19 27 22018
honda ガソリン 前輪駆動 フロント 4 96.5 157.1 63.9 58.3 2024 4 92 2.92 3.41 9.2 76 6000 30 34 7295
volkswagen ガソリン 前輪駆動 フロント 4 97.3 171.7 65.5 55.7 2212 4 109 3.19 3.4 9 85 5250 27 34 8195
dodge ガソリン 前輪駆動 フロント 4 103.3 174.6 64.6 59.8 2535 4 122 3.34 3.46 8.5 88 5000 24 30 8921
toyota ガソリン 前輪駆動 フロント 4 95.7 169.7 63.6 59.1 2280 4 92 3.05 3.03 9 62 4800 31 37 6918
audi ガソリン 前輪駆動 フロント 4 99.8 176.6 66.2 54.3 2337 4 109 3.19 3.4 10 102 5500 24 30 13950
honda ガソリン 前輪駆動 フロント 2 86.6 144.6 63.9 50.8 1713 4 92 2.91 3.41 9.6 58 4800 49 54 6479
subaru ガソリン 4WD フロント 4 97 172 65.4 54.3 2385 4 108 3.62 2.64 9 82 4800 24 25 9233
nissan ガソリン 前輪駆動 フロント 4 100.4 184.6 66.5 55.1 3060 6 181 3.43 3.27 9 152 5200 19 25 13499
mazda ガソリン 前輪駆動 フロント 2 93.1 159.1 64.2 54.1 1890 4 91 3.03 3.15 9 68 5000 30 31 5195
chevrolet ガソリン 前輪駆動 フロント 2 94.5 155.9 63.6 52 1874 4 90 3.03 3.11 9.6 70 5400 38 43 6295
honda ガソリン 前輪駆動 フロント 4 96.5 175.4 65.2 54.1 2465 4 110 3.15 3.58 9 101 5800 24 28 12945
subaru ガソリン 4WD フロント 2 93.3 157.3 63.8 55.7 2240 4 108 3.62 2.64 8.7 73 4400 26 31 7603
porsche ガソリン 後輪駆動 リア 2 89.5 168.9 65 51.6 2756 6 194 3.74 2.9 9.5 207 5900 17 25 32528
toyota ガソリン 4WD フロント 4 95.7 169.7 63.6 59.1 3110 4 92 3.05 3.03 9 62 4800 27 32 8778
honda ガソリン 前輪駆動 フロント 2 93.7 150 64 52.6 1837 4 79 2.91 3.07 10.1 60 5500 38 42 5399
mitsubishi ガソリン 前輪駆動 フロント 4 96.3 172.4 65.4 51.6 2403 4 110 3.17 3.46 7.5 116 5500 23 30 9279
mazda ガソリン 後輪駆動 フロント 4 104.9 175 66.1 54.4 2670 4 140 3.76 3.16 8 120 5000 19 27 18280
dodge ガソリン 前輪駆動 フロント 4 93.7 157.3 63.8 50.6 1967 4 90 2.97 3.23 9.4 68 5500 31 38 6229
nissan ガソリン 前輪駆動 フロント 4 94.5 165.3 63.8 54.5 1938 4 97 3.15 3.29 9.4 69 5200 31 37 6849
volvo ガソリン 後輪駆動 フロント 4 109.1 188.8 68.9 55.5 2952 4 141 3.78 3.15 9.5 114 5400 23 28 16845
mitsubishi ガソリン 前輪駆動 フロント 2 95.9 173.2 66.3 50.2 2921 4 156 3.59 3.86 7 145 5000 19 24 14869
nissan ガソリン 前輪駆動 フロント 4 100.4 181.7 66.5 55.1 3095 6 181 3.43 3.27 9 152 5200 17 22 13499
saab ガソリン 前輪駆動 フロント 2 99.1 186.6 66.5 56.1 2808 4 121 3.54 3.07 9 160 5500 19 26 18150
toyota ガソリン 前輪駆動 フロント 4 95.7 158.7 63.6 54.5 2015 4 92 3.05 3.03 9 62 4800 31 38 6488
nissan ディーゼル 前輪駆動 フロント 2 94.5 165.3 63.8 54.5 2017 4 103 2.99 3.47 21.9 55 4800 45 50 7099
nissan ガソリン 後輪駆動 フロント 2 91.3 170.7 67.9 49.7 3139 6 181 3.43 3.27 7.8 200 5200 17 23 19699
volvo ガソリン 後輪駆動 フロント 4 104.3 188.8 67.2 57.5 3042 4 141 3.78 3.15 9.5 114 5400 24 28 16515
mazda ガソリン 前輪駆動 フロント 2 93.1 159.1 64.2 54.1 1900 4 91 3.03 3.15 9 68 5000 31 38 6095
honda ガソリン 前輪駆動 フロント 2 96.5 169.1 66 51 2293 4 110 3.15 3.58 9.1 100 5500 25 31 10345
mazda ガソリン 前輪駆動 フロント 4 98.8 177.8 66.5 55.5 2410 4 122 3.39 3.39 8.6 84 4800 26 32 10245
mazda ガソリン 前輪駆動 フロント 4 93.1 166.8 64.2 54.1 1950 4 91 3.08 3.15 9 68 5000 31 38 7395
mitsubishi ガソリン 前輪駆動 フロント 2 95.9 173.2 66.3 50.2 2926 4 156 3.59 3.86 7 145 5000 19 24 14489
jaguar ガソリン 後輪駆動 フロント 4 113 199.6 69.6 52.8 4066 6 258 3.63 4.17 8.1 176 4750 15 19 35550
toyota ガソリン 前輪駆動 フロント 4 95.7 166.3 64.4 53 2094 4 98 3.19 3.03 9 70 4800 38 47 7738
toyota ガソリン 後輪駆動 フロント 2 98.4 176.2 65.6 52 2540 4 146 3.62 3.5 9.3 116 4800 24 30 8449
honda ガソリン 前輪駆動 フロント 2 86.6 144.6 63.9 50.8 1819 4 92 2.91 3.41 9.2 76 6000 31 38 6855
saab ガソリン 前輪駆動 フロント 2 99.1 186.6 66.5 56.1 2658 4 121 3.54 3.07 9.31 110 5250 21 28 11850
peugot ガソリン 後輪駆動 フロント 4 107.9 186.7 68.4 56.7 3075 4 120 3.46 2.19 8.4 95 5000 19 24 15580
volvo ガソリン 後輪駆動 フロント 4 104.3 188.8 67.2 56.2 2912 4 141 3.78 3.15 9.5 114 5400 23 28 12940
mercedes-benz ガソリン 後輪駆動 フロント 4 120.9 208.1 71.7 56.7 3900 8 308 3.8 3.35 8 184 4500 14 16 40960
toyota ガソリン 後輪駆動 フロント 2 98.4 176.2 65.6 52 2679 4 146 3.62 3.5 9.3 116 4800 24 30 11199
subaru ガソリン 前輪駆動 フロント 4 97.2 172 65.4 52.5 2340 4 108 3.62 2.64 9 94 5200 26 32 9960
toyota ガソリン 後輪駆動 フロント 4 104.5 187.8 66.5 54.1 3131 6 171 3.27 3.35 9.2 156 5200 20 24 15690
volvo ガソリン 後輪駆動 フロント 4 104.3 188.8 67.2 57.5 3157 4 130 3.62 3.15 7.5 162 5100 17 22 18950
toyota ガソリン 後輪駆動 フロント 2 98.4 176.2 65.6 52 2551 4 146 3.62 3.5 9.3 116 4800 24 30 9989
plymouth ガソリン 前輪駆動 フロント 4 93.7 157.3 63.8 50.6 1967 4 90 2.97 3.23 9.4 68 5500 31 38 6229
toyota ガソリン 前輪駆動 フロント 4 95.7 166.3 64.4 52.8 2109 4 98 3.19 3.03 9 70 4800 30 37 7198
plymouth ガソリン 後輪駆動 フロント 2 95.9 173.2 66.3 50.2 2818 4 156 3.59 3.86 7 145 5000 19 24 12764
plymouth ガソリン 前輪駆動 フロント 2 93.7 157.3 63.8 50.8 2128 4 98 3.03 3.39 7.6 102 5500 24 30 7957
volvo ガソリン 後輪駆動 フロント 4 104.3 188.8 67.2 56.2 3045 4 130 3.62 3.15 7.5 162 5100 17 22 18420
toyota ガソリン 前輪駆動 フロント 4 102.4 175.6 66.5 53.9 2414 4 122 3.31 3.54 8.7 92 4200 27 32 9988
peugot ディーゼル 後輪駆動 フロント 4 114.2 198.9 68.4 58.7 3485 4 152 3.7 3.52 21 95 4150 25 25 17075
peugot ディーゼル 後輪駆動 フロント 4 107.9 186.7 68.4 56.7 3252 4 152 3.7 3.52 21 95 4150 28 33 16900
subaru ガソリン 前輪駆動 フロント 2 93.7 156.9 63.4 53.7 2050 4 97 3.62 2.36 9 69 4900 31 36 5118
bmw ガソリン 後輪駆動 フロント 4 110 197 70.9 56.3 3505 6 209 3.62 3.39 8 182 5400 15 20 36880
peugot ガソリン 後輪駆動 フロント 4 114.2 198.9 68.4 56.7 3285 4 120 3.46 2.19 8.4 95 5000 19 24 16695
bmw ガソリン 後輪駆動 フロント 4 103.5 189 66.9 55.7 3230 6 209 3.62 3.39 8 182 5400 16 22 30760
audi ガソリン 前輪駆動 フロント 2 99.8 177.3 66.3 53.1 2507 5 136 3.19 3.4 8.5 110 5500 19 25 15250
isuzu ガソリン 後輪駆動 フロント 2 96 172.6 65.2 51.4 2734 4 119 3.43 3.23 9.2 90 5000 24 29 11048
mazda ガソリン 前輪駆動 フロント 4 93.1 166.8 64.2 54.1 1945 4 91 3.03 3.15 9 68 5000 31 38 6695
jaguar ガソリン 後輪駆動 フロント 4 113 199.6 69.6 52.8 4066 6 258 3.63 4.17 8.1 176 4750 15 19 32250
honda ガソリン 前輪駆動 フロント 4 96.5 163.4 64 54.5 2010 4 92 2.91 3.41 9.2 76 6000 30 34 7295
bmw ガソリン 後輪駆動 フロント 4 103.5 189 66.9 55.7 3055 6 164 3.31 3.19 9 121 4250 20 25 24565
audi ガソリン 4WD フロント 4 99.4 176.6 66.4 54.3 2824 5 136 3.19 3.4 8 115 5500 18 22 17450
honda ガソリン 前輪駆動 フロント 4 96.5 175.4 65.2 54.1 2304 4 110 3.15 3.58 9 86 5800 27 33 8845
mercedes-benz ディーゼル 後輪駆動 フロント 4 110 190.9 70.3 56.5 3515 5 183 3.58 3.64 21.5 123 4350 22 25 25552
peugot ガソリン 後輪駆動 フロント 4 108 186.7 68.3 56 3130 4 134 3.61 3.21 7 142 5600 18 24 18150
volvo ガソリン 後輪駆動 フロント 4 109.1 188.8 68.8 55.5 3049 4 141 3.78 3.15 8.7 160 5300 19 25 19045
nissan ガソリン 前輪駆動 フロント 2 94.5 165.6 63.8 53.3 2028 4 97 3.15 3.29 9.4 69 5200 31 37 7799
dodge ガソリン 前輪駆動 フロント 2 93.7 157.3 63.8 50.8 1876 4 90 2.97 3.23 9.4 68 5500 31 38 6377
dodge ガソリン 前輪駆動 フロント 2 93.7 157.3 63.8 50.8 1876 4 90 2.97 3.23 9.41 68 5500 37 41 5572
jaguar ガソリン 後輪駆動 フロント 2 102 191.7 70.6 47.8 3950 12 326 3.54 2.76 11.5 262 5000 13 17 36000
peugot ディーゼル 後輪駆動 フロント 4 107.9 186.7 68.4 56.7 3197 4 152 3.7 3.52 21 95 4150 28 33 13200
subaru ガソリン 前輪駆動 フロント 2 93.7 157.9 63.6 53.7 2120 4 108 3.62 2.64 8.7 73 4400 26 31 7053
subaru ガソリン 前輪駆動 フロント 4 97.2 172 65.4 52.5 2190 4 108 3.62 2.64 9.5 82 4400 28 33 7775
porsche ガソリン 後輪駆動 リア 2 89.5 168.9 65 51.6 2800 6 194 3.74 2.9 9.5 207 5900 17 25 37028
nissan ガソリン 前輪駆動 フロント 4 94.5 170.2 63.8 53.5 2024 4 97 3.15 3.29 9.4 69 5200 31 37 7349
toyota ガソリン 後輪駆動 フロント 2 94.5 168.7 64 52.6 2204 4 98 3.19 3.03 9 70 4800 29 34 8238
mercedes-benz ディーゼル 後輪駆動 フロント 2 106.7 187.5 70.3 54.9 3495 5 183 3.58 3.64 21.5 123 4350 22 25 28176
bmw ガソリン 後輪駆動 フロント 2 101.2 176.8 64.8 54.3 2710 6 164 3.31 3.19 9 121 4250 21 28 20970
mercedes-benz ガソリン 後輪駆動 フロント 2 112 199.2 72 55.4 3715 8 304 3.8 3.35 8 184 4500 14 16 45400
mazda ガソリン 前輪駆動 フロント 2 93.1 159.1 64.2 54.1 1905 4 91 3.03 3.15 9 68 5000 31 38 6795
honda ガソリン 前輪駆動 フロント 2 93.7 150 64 52.6 1956 4 92 2.91 3.41 9.2 76 6000 30 34 7129
volkswagen ディーゼル 前輪駆動 フロント 4 97.3 171.7 65.5 55.7 2319 4 97 3.01 3.4 23 68 4500 37 42 9495
mercedes-benz ガソリン 後輪駆動 フロント 4 115.6 202.6 71.7 56.5 3740 8 234 3.46 3.1 8.3 155 4750 16 18 34184
mitsubishi ガソリン 前輪駆動 フロント 4 96.3 172.4 65.4 51.6 2405 4 122 3.35 3.46 8.5 88 5000 25 32 8189
bmw ガソリン 後輪駆動 フロント 4 101.2 176.8 64.8 54.3 2395 4 108 3.5 2.8 8.8 101 5800 23 29 16925
nissan ガソリン 前輪駆動 フロント 2 94.5 165.3 63.8 54.5 1889 4 97 3.15 3.29 9.4 69 5200 31 37 5499
toyota ガソリン 前輪駆動 フロント 2 95.7 158.7 63.6 54.5 1985 4 92 3.05 3.03 9 62 4800 35 39 5348
volkswagen ガソリン 前輪駆動 フロント 4 100.4 183.1 66.9 55.1 2563 4 109 3.19 3.4 9 88 5500 25 31 12290
mitsubishi ガソリン 前輪駆動 フロント 2 93.7 157.3 64.4 50.8 1918 4 92 2.97 3.23 9.4 68 5500 37 41 5389
subaru ガソリン 前輪駆動 フロント 4 97 173.5 65.4 53 2290 4 108 3.62 2.64 9 82 4800 28 32 7463
toyota ディーゼル 前輪駆動 フロント 4 95.7 166.3 64.4 53 2275 4 110 3.27 3.35 22.5 56 4500 34 36 7898
audi ガソリン 前輪駆動 フロント 4 105.8 192.7 71.4 55.9 3086 5 131 3.13 3.4 8.3 140 5500 17 20 23875
mercury ガソリン 後輪駆動 フロント 2 102.7 178.4 68 54.8 2910 4 140 3.78 3.12 8 175 5000 19 24 16503
peugot ガソリン 後輪駆動 フロント 4 107.9 186.7 68.4 56.7 3020 4 120 3.46 3.19 8.4 97 5000 19 24 11900
plymouth ガソリン 前輪駆動 フロント 4 93.7 167.3 63.8 50.8 2191 4 98 2.97 3.23 9.4 68 5500 31 38 7609
toyota ガソリン 後輪駆動 フロント 4 104.5 187.8 66.5 54.1 3151 6 161 3.27 3.35 9.2 156 5200 19 24 15750
nissan ガソリン 後輪駆動 フロント 2 99.2 178.5 67.9 49.7 3139 6 181 3.43 3.27 9 160 5200 19 25 18399
saab ガソリン 前輪駆動 フロント 4 99.1 186.6 66.5 56.1 2695 4 121 3.54 3.07 9.3 110 5250 21 28 12170
mazda ガソリン 前輪駆動 フロント 2 98.8 177.8 66.5 53.7 2385 4 122 3.39 3.39 8.6 84 4800 26 32 10595
toyota ガソリン 後輪駆動 フロント 2 102.9 183.5 67.7 52 2976 6 171 3.27 3.35 9.3 161 5200 20 24 16558
chevrolet ガソリン 前輪駆動 フロント 4 94.5 158.8 63.6 52 1909 4 90 3.03 3.11 9.6 70 5400 38 43 6575
alfa-romero ガソリン 後輪駆動 フロント 2 88.6 168.8 64.1 48.8 2548 4 130 3.47 2.68 9 111 5000 21 27 16500
nissan ガソリン 前輪駆動 フロント 2 94.5 165.3 63.8 54.5 1918 4 97 3.15 3.29 9.4 69 5200 31 37 6649
toyota ガソリン 後輪駆動 フロント 2 102.9 183.5 67.7 52 3016 6 171 3.27 3.35 9.3 161 5200 19 24 15998
toyota ガソリン 後輪駆動 フロント 2 94.5 168.7 64 52.6 2265 4 98 3.24 3.08 9.4 112 6600 26 29 9298
nissan ガソリン 前輪駆動 フロント 2 94.5 165.3 63.8 54.5 1951 4 97 3.15 3.29 9.4 69 5200 31 37 7299
volkswagen ディーゼル 前輪駆動 フロント 4 100.4 180.2 66.9 55.1 2579 4 97 3.01 3.4 23 68 4500 33 38 13845
toyota ガソリン 前輪駆動 フロント 4 95.7 166.3 64.4 53 2081 4 98 3.19 3.03 9 70 4800 30 37 6938
toyota ガソリン 前輪駆動 フロント 4 102.4 175.6 66.5 54.9 2414 4 122 3.31 3.54 8.7 92 4200 27 32 10898
volkswagen ディーゼル 前輪駆動 フロント 4 97.3 171.7 65.5 55.7 2264 4 97 3.01 3.4 23 52 4800 37 46 7995
mitsubishi ガソリン 前輪駆動 フロント 4 96.3 172.4 65.4 51.6 2365 4 122 3.35 3.46 8.5 88 5000 25 32 6989
peugot ディーゼル 後輪駆動 フロント 4 107.9 186.7 68.4 56.7 3252 4 152 3.7 3.52 21 95 4150 28 33 17950
mitsubishi ガソリン 前輪駆動 フロント 2 96.3 173 65.4 49.4 2328 4 122 3.35 3.46 8.5 88 5000 25 32 8499
alfa-romero ガソリン 後輪駆動 フロント 2 94.5 171.2 65.5 52.4 2823 6 152 2.68 3.47 9 154 5000 19 26 16500
subaru ガソリン 前輪駆動 フロント 4 97.2 172 65.4 52.5 2145 4 108 3.62 2.64 9.5 82 4800 32 37 7126
subaru ガソリン 4WD フロント 4 96.9 173.6 65.4 54.9 2420 4 108 3.62 2.64 9 82 4800 23 29 8013
plymouth ガソリン 前輪駆動 フロント 2 93.7 157.3 63.8 50.8 1918 4 90 2.97 3.23 9.4 68 5500 37 41 5572
volvo ガソリン 後輪駆動 フロント 4 104.3 188.8 67.2 56.2 2935 4 141 3.78 3.15 9.5 114 5400 24 28 15985
mercedes-benz ディーゼル 後輪駆動 フロント 4 115.6 202.6 71.7 56.3 3770 5 183 3.58 3.64 21.5 123 4350 22 25 31600
saab ガソリン 前輪駆動 フロント 2 99.1 186.6 66.5 56.1 2707 4 121 2.54 2.07 9.3 110 5250 21 28 15040
toyota ガソリン 後輪駆動 フロント 2 94.5 168.7 64 52.6 2300 4 98 3.24 3.08 9.4 112 6600 26 29 9538
mitsubishi ガソリン 前輪駆動 フロント 2 93 157.3 63.8 50.8 2145 4 98 3.03 3.39 7.6 102 5500 24 30 7689
volkswagen ガソリン 前輪駆動 フロント 4 97.3 171.7 65.5 55.7 2300 4 109 3.19 3.4 10 100 5500 26 32 9995
nissan ガソリン 後輪駆動 フロント 2 91.3 170.7 67.9 49.7 3071 6 181 3.43 3.27 9 160 5200 19 25 17199
saab ガソリン 前輪駆動 フロント 4 99.1 186.6 66.5 56.1 2847 4 121 3.54 3.07 9 160 5500 19 26 18620
nissan ガソリン 前輪駆動 フロント 4 100.4 184.6 66.5 56.1 3296 6 181 3.43 3.27 9 152 5200 17 22 14399
toyota ガソリン 前輪駆動 フロント 4 95.7 166.3 64.4 52.8 2122 4 98 3.19 3.03 9 70 4800 28 34 8358
toyota ディーゼル 前輪駆動 フロント 4 102.4 175.6 66.5 54.9 2480 4 110 3.27 3.35 22.5 73 4500 30 33 10698
subaru ガソリン 前輪駆動 フロント 4 97 173.5 65.4 53 2455 4 108 3.62 2.64 9 94 5200 25 31 10198
subaru ガソリン 4WD フロント 4 96.9 173.6 65.4 54.9 2650 4 108 3.62 2.64 7.7 111 4800 23 23 11694
plymouth ガソリン 前輪駆動 フロント 4 93.7 167.3 63.8 50.8 1989 4 90 2.97 3.23 9.4 68 5500 31 38 6692
peugot ディーゼル 後輪駆動 フロント 4 114.2 198.9 68.4 58.7 3430 4 152 3.7 3.52 21 95 4150 25 25 13860
subaru ガソリン 4WD フロント 4 97 172 65.4 54.3 2510 4 108 3.62 2.64 7.7 111 4800 24 29 11259
toyota ガソリン 前輪駆動 フロント 4 95.7 166.3 64.4 52.8 2140 4 98 3.19 3.03 9 70 4800 28 34 9258
toyota ガソリン 4WD フロント 4 95.7 169.7 63.6 59.1 2290 4 92 3.05 3.03 9 62 4800 27 32 7898
volvo ガソリン 後輪駆動 フロント 4 109.1 188.8 68.9 55.5 3062 4 141 3.78 3.15 9.5 114 5400 19 25 22625
isuzu ガソリン 後輪駆動 フロント 4 94.3 170.7 61.8 53.5 2337 4 111 3.31 3.23 8.5 78 4800 24 29 6785
volvo ガソリン 後輪駆動 フロント 4 109.1 188.8 68.9 55.5 3012 6 173 3.58 2.87 8.8 134 5500 18 23 21485
mitsubishi ガソリン 前輪駆動 フロント 4 96.3 172.4 65.4 51.6 2403 4 110 3.17 3.46 7.5 116 5500 23 30 9279
dodge ガソリン 前輪駆動 フロント 4 93.7 157.3 63.8 50.6 1989 4 90 2.97 3.23 9.4 68 5500 31 38 6692
mitsubishi ガソリン 前輪駆動 フロント 2 93.7 157.3 64.4 50.8 1944 4 92 2.97 3.23 9.4 68 5500 31 38 6189
nissan ガソリン 前輪駆動 フロント 4 97.2 173.4 65.2 54.7 2302 4 120 3.33 3.47 8.5 97 5200 27 34 9549
dodge ガソリン 前輪駆動 フロント 2 95.9 173.2 66.3 50.2 2811 4 156 3.6 3.9 7 145 5000 19 24 12964
volvo ガソリン 後輪駆動 フロント 4 104.3 188.8 67.2 57.5 3034 4 141 3.78 3.15 9.5 114 5400 23 28 13415
mitsubishi ガソリン 前輪駆動 フロント 2 96.3 173 65.4 49.4 2370 4 110 3.17 3.46 7.5 116 5500 23 30 9959
honda ガソリン 前輪駆動 フロント 2 96.5 167.5 65.2 53.3 2236 4 110 3.15 3.58 9 86 5800 27 33 7895
audi ガソリン 前輪駆動 フロント 4 105.8 192.7 71.4 55.7 2954 5 136 3.19 3.4 8.5 110 5500 19 25 18920
volkswagen ガソリン 前輪駆動 フロント 4 97.3 171.7 65.5 55.7 2275 4 109 3.19 3.4 9 85 5250 27 34 8495
chevrolet ガソリン 前輪駆動 フロント 2 88.4 141.1 60.3 53.2 1488 3 61 2.91 3.03 9.5 48 5100 47 53 5151
mazda ディーゼル 後輪駆動 フロント 4 104.9 175 66.1 54.4 2700 4 134 3.43 3.64 22 72 4200 31 39 18344
toyota ガソリン 後輪駆動 フロント 2 94.5 168.7 64 52.6 2169 4 98 3.19 3.03 9 70 4800 29 34 8058
toyota ガソリン 前輪駆動 フロント 4 102.4 175.6 66.5 53.9 2458 4 122 3.31 3.54 8.7 92 4200 27 32 11248
audi ガソリン 前輪駆動 フロント 4 105.8 192.7 71.4 55.7 2844 5 136 3.19 3.4 8.5 110 5500 19 25 17710
toyota ガソリン 後輪駆動 フロント 2 98.4 176.2 65.6 52 2714 4 146 3.62 3.5 9.3 116 4800 24 30 11549
honda ガソリン 前輪駆動 フロント 2 93.7 150 64 52.6 1940 4 92 2.91 3.41 9.2 76 6000 30 34 6529
dodge ガソリン 前輪駆動 フロント 2 93.7 157.3 63.8 50.8 2128 4 98 3.03 3.39 7.6 102 5500 24 30 7957


CarPrice_predict.csv

メーカー 使用燃料 駆動方式 エンジン位置 ドア数 ホイールベース 車両全長 車両全幅 車両全高 車両重量 エンジン気筒数 エンジンサイズ エンジン内径 エンジン行程 エンジン圧縮比 エンジン最高出力 エンジン回転数 都市部走行燃費 高速道路走行燃費
honda ガソリン 前輪駆動 フロント 4 96.5 175.4 62.5 54.1 2372 4 110 3.15 3.58 9 86 5800 27 33

【python】株価取得ツール

#!/usr/bin/python
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import os
import numpy as np
import pandas as pd
import pandas.tools.plotting as plotting
import datetime as dt
import argparse

parser = argparse.ArgumentParser(description='This is a program to get stock price.')
parser.add_argument('-d', '--date', help='start date', required=True)
parser.add_argument('-c', '--code', help='stock code', required=True)
parse = parser.parse_args()

def get_quote(code, start=None, end=None, interval='d'):
    base = 'http://info.finance.yahoo.co.jp/history/?code={0}.T&{1}&{2}&tm={3}&p={4}'
    #start, end = web._sanitize_dates(start, end)
    start = pd.to_datetime(start)
    if end == None:
        end = pd.to_datetime(pd.datetime.now())
    else :
        end = pd.to_datetime(end)
    start = 'sy={0}&sm={1}&sd={2}'.format(start.year, start.month, start.day)
    end = 'ey={0}&em={1}&ed={2}'.format(end.year, end.month, end.day)
    p = 1
    results = []

    if interval not in ['d', 'w', 'm', 'v']:
        raise ValueError("Invalid interval: valid values are 'd', 'w', 'm' and 'v'")

    while True:
        url = base.format(code, start, end, interval, p)
        tables = pd.read_html(url, header=0)
        if len(tables) < 2 or len(tables[1]) == 0:
            break
        results.append(tables[1])
        p += 1
    result = pd.concat(results, ignore_index=True)

    result.columns = ['Date', 'Open', 'High', 'Low', 'Close', 'Volume', 'Adj Close']
    if interval == 'm':
        result['Date'] = pd.to_datetime(result['Date'], format='%Y年%m月')
    else:
        result['Date'] = pd.to_datetime(result['Date'], format='%Y年%m月%d日')
    result = result.set_index('Date')
    result = result.sort_index()
    return result

def main():
    start = parse.date
    code = parse.code
    t = get_quote(code, start=start)
    print(t)

if __name__ == '__main__':
    main()

【python】メール送信ツール

#!/usr/bin/python
# -*- coding: utf-8 -*-
import smtplib
import os
import argparse
import mimetypes

from email import Encoders
from email.Utils import formatdate
from email.Header import Header
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase  import MIMEBase
from email.MIMEImage import MIMEImage
from email.MIMEAudio import MIMEAudio

parser = argparse.ArgumentParser(description='This is a program to send a mail.')
parser.add_argument('-f', '--from_addr', help='From Address',     required=True)
parser.add_argument('-t', '--to_addr',   help='To Address',       required=True)
parser.add_argument('-s', '--subject',   help='Subject',          required=True)
parser.add_argument('-m', '--mta',       help='SMTP Server',      required=False, default='localhost')
parser.add_argument('-a', '--attach',    help='Attachment Files', required=False, default=[],    action='append')
parser.add_argument('-S', '--spam',      help='Send a SPAM mail', required=False, default=False, action='store_true')
parse = parser.parse_args()

def read_file(f):
    try:
        with open(f, 'r') as fh:
            data = fh.read()
    except:
        print('Error: can not open ' + f)
        exit()
    return data

def set_attach(mp, files):
    for f in files:
        # 添付ファイルデータを読み込む
        data = read_file(f)

        # Content-Typeヘッダに添付ファイルのメディアタイプをセット
        # http://docs.python.jp/2/library/mimetypes.html
        # http://docs.python.jp/2/library/email-examples.html
        ctype, encording = mimetypes.guess_type(f)

        # メディアタイプを判定出来ない場合、以下を設定
        if ctype is None or encording is not None:
            ctype = 'application/octet-stream'

        # タイプとサブタイプ
        mtype, msub = ctype.split('/')
        if mtype == 'text':
             mime = MIMEText(data, _subtype=msub)
        elif mtype == 'image':
             mime = MIMEImage(data, _subtype=msub)
        elif mtype == 'audio':
             mime = MIMEAudio(data, _subtype=msub)
        else:
             mime = MIMEBase(mtype, msub)
             mime.set_payload(data)
             Encoders.encode_base64(mime)

        f = os.path.basename(f)
        mime.add_header('Content-Disposition','attachment', filename=f)
        mp.attach(mime)

    return mp

def create_message(d):
    cs = 'UTF-8'
    body = '''
これはテストメールです。

'''
    if d['spam']:
        body = 'XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X'

    msg = MIMEText(body, 'plain', cs)
    if d['attach']:
        mp = MIMEMultipart()
        mp.attach(msg)
        msg = set_attach(mp, d['attach'])

    msg['Subject'] = Header(d['subject'], cs)
    msg['From'] = d['from']
    msg['To'] = d['to']
    msg['Date'] = formatdate(localtime=True)

    d['msg'] = msg
    return d

def send(d):
    s = smtplib.SMTP(d['mta'])
    s.sendmail(d['from'], [d['to']], d['msg'].as_string())
    s.close()

def get_args():
    d = dict()
    d['from'] = parse.from_addr
    d['to'] = parse.to_addr
    d['subject'] = parse.subject
    d['mta'] = parse.mta
    d['attach'] = parse.attach
    d['spam'] = parse.spam
    return d

def main():
    d = get_args()
    d = create_message(d)
    send(d)

if __name__ == '__main__':
    main() 

【python】webスクライピングツール

#!/usr/bin/python
# coding: UTF-8
import urllib2
from bs4 import BeautifulSoup

# アクセスするURL
url = "http://www.nikkei.com/markets/kabu/"

# URLにアクセスする htmlが帰ってくる → <html><head><title>経済、株価、ビジネス、政治のニュース:日経電子版</title></head><body....
html = urllib2.urlopen(url)

# htmlをBeautifulSoupで扱う
soup = BeautifulSoup(html, "html.parser")

# span要素全てを摘出する→全てのspan要素が配列に入ってかえされます→[<span class="m-wficon triDown"></span>, <span class="l-h...
span = soup.find_all("span")

# print時のエラーとならないように最初に宣言しておきます。
nikkei_heikin = ""
# for分で全てのspan要素の中からClass="mkc-stock_prices"となっている物を探します
for tag in span:
    # classの設定がされていない要素は、tag.get("class").pop(0)を行うことのできないでエラーとなるため、tryでエラーを回避する
    try:
        # tagの中からclass="n"のnの文字列を摘出します。複数classが設定されている場合があるので
        # get関数では配列で帰ってくる。そのため配列の関数pop(0)により、配列の一番最初を摘出する
        # <span class="hoge" class="foo">  →   ["hoge","foo"]  →   hoge
        string_ = tag.get("class").pop(0)

        # 摘出したclassの文字列にmkc-stock_pricesと設定されているかを調べます
        if string_ in "mkc-stock_prices":
            # mkc-stock_pricesが設定されているのでtagで囲まれた文字列を.stringであぶり出します
            nikkei_heikin = tag.string
            # 摘出が完了したのでfor分を抜けます
            break
    except:
        # パス→何も処理を行わない
        pass

# 摘出した日経平均株価を出力します。
print nikkei_heikin