pythonでcsv

読み込んで、列順を変えて書き込む


import csv

csv_r = open("./test.csv", "r", encoding="utf-8", errors="", newline="" )
csv_w = open('output.csv', 'w')
rf = csv.reader(csv_r, delimiter=",", doublequote=True, lineterminator="\r\n", quotechar='"', skipinitialspace=True)
wf = csv.writer(csv_w, lineterminator='\n')

order = [2,3,1]

for row in rf:
data = []
for i in order:
if i == 0:
data.append("")
continue
data.append(row[i-1])
wf.writerow(data)

csv_r.close()
csv_w.close()

DataFrameで密度分布


mport numpy as np
import pandas as pd
%matplotlib inline
from matplotlib import pyplot as plt

x = np.random.normal(50, 10, 1000)
dataframe_value = pd.DataFrame(x)
dataframe_value.plot(kind="kde", subplots=True, figsize=(10, 6))

#集約
std_data = pd.read_csv("std.csv")
grouped_data = std_data.groupby("name")
#grouped_data.head()
grouped_data.mean()
grouped_data.plot(kind="kde", subplots=True, figsize=(10, 6))

kerlでealang、elixirインストール centos7


# cd /usr/local/bin
#curl -O https://raw.githubusercontent.com/spawngrid/kerl/master/kerl
# cd kerl
# chmod a+x kerl
$ kerl list releases
$ kerl build 20.3 build20.3
$ mkdir -p ~/bin/erlang/20.3
$ kerl install build20.3 ~/bin/erlang/20.3/
$ kerl build 20.3 build20.3
$ . ~/bin/erlang/20.3/activate

$ git clone https://github.com/elixir-lang/elixir.git
$ cd elixr
$ git tag
$ git checkout -b v.1.6.5 refs/tags/v1.6.5
$ make clean test
$ echo 'export PATH=$PATH:$HOME/elixir/bin' >> ~/.bash_profile

anyenvでanacondaインストール centos7


$ git clone https://github.com/riywo/anyenv ~/.anyenv

$ vim ~/.bash_profile
export PATH="$HOME/.anyenv/bin:$PATH"
eval "$(anyenv init -)"

$ anyenv install pyenv
$ pyenv install -l | grep ana
$ pyenv install anaconda3-5.1.0
$ pyenv rehash
$ pyenv global anacond3-5.1.0
$ echo 'export="$PYENV_ROOT/versions/anaconda3-5.1.0:$PATH"' >> ~/.bash_profile
$ conda update conda
$ conda update --all

MatPlotLib


%matplotlib inline

from scipy.stats import norm
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(-3, 3, 0.001)

plt.plot(x, norm.pdf(x))
plt.show()

#ファイルに保存
plt.plot(x, norm.pdf(x))
plt.plot(x, norm.pdf(x, 1.0, 0.5))
plt.savefig('MyPlot.png', format='png')

#軸の調整
axes = plt.axes()
#軸の範囲
axes.set_xlim([-5, 5])
axes.set_ylim([0, 1.0])
#軸の目盛り
axes.set_xticks([-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5])
axes.set_yticks([0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0])
#グリッドの追加
axes.grid()

#ラベル
plt.xlabel('Greebles')
plt.ylabel('Probability')

#凡例 loc=4は右下
plt.legend(['Sneetches', 'Gacks'], loc=4)
#線の種類
#bは青、-はソリッド
#rは赤、:は点線
plt.plot(x, norm.pdf(x), 'b-')
plt.plot(x, norm.pdf(x, 1.0, 0.5), 'r:')


plt.show()

numpy財務計算



現在価値
n年後に受け取るX円の現在価値、割引率r%
X/(1+r%)**n
5年後にもらえる100万円の現在価値、(国債などの利率0.8%)
>>> np.pv(0.008, 5, 0, -100)
96.094236264559825

将来価値
X円を利率r%でn年運用したn年後の将来価値
X*(1+r%)**n
>>> n = np.pv(0.008, 5, 0, -100)
>>> np.fv(0.008, 5, 0, -n)
100.0


正味現在価値
5年にわたって各年100万もらえる投資商品、割引率3%
>>> np.npv(0.03, [0,100,100,100,100,100])
457.97071871945337

内部収益率
初期投資800
各年
100,150,200,250,300,350
の収益
割引率10%
>>> np.npv(0.1, [-800,100,150,200,250,300,350])
119.7346295160028
>>> round(np.irr([-800,100,150,200,250,300,350]),4)
0.1405
判断基準
npv>0
irr>割引率



二項分布

二項分布

  • n回の連続した試行

コインを10回連続で投げる

  • それぞれの試行は互いに排他的

表か裏がでる

  • 表の確率がpならば裏の確率は1-p

表が0.5ならば裏は1-0.5

  • それぞれの試行は独立

1回目の結果は2回目に影響しない

コインを10回連続で投げた場合の表がでる確率


>>> import scipy.misc as sc
>>> def answer(k):
... p=0.5
... n=10
... comb = sc.comb(n,k)
... return comb * (p**k)*((1-p)**(n-k))
...
>>> answer(1)
0.009765625
>>> answer(2)
0.0439453125
>>> answer(3)
0.1171875
>>> answer(4)
0.205078125
>>> answer(5)
0.24609375
>>> answer(6)
0.205078125
>>> answer(7)
0.1171875
>>> answer(8)
0.0439453125
>>> answer(9)
0.009765625
>>> answer(10)
0.0009765625

#平均
>>> n*p
5.0
#標準偏差
>>> math.sqrt(n*(1-p)*p)
1.5811388300841898

#scipy
>>> from scipy.stats import binom
>>> mean, var = binom.stats(n,p)
>>> print(mean)
5.0
>>> print(math.sqrt(var))
1.5811388300841898


#確率質量関数 pmf (Probability mass function)
>>> x = range(n+1)
>>> y = binom.pmf(x,n,p)
>>> y
array([ 0.00097656, 0.00976563, 0.04394531, 0.1171875 , 0.20507813,
0.24609375, 0.20507813, 0.1171875 , 0.04394531, 0.00976563,
0.00097656])