■
[python]pythonお勉強:一次元データの扱い方
pythonお勉強(日経ソフト2018.05)
一次元データの扱い方の基本
>>>import pandas as pd
>>>import numpy as np
>>> s=pd.Series(data=np.random.randint(1,7,100), index=range(0,100))
で1-6の数値をインデックス付きで100個作る。
■配列 s の各要素へのアクセス方法
>>> s
>>> s[99]
>>> s[15:20]
>>> s.head(10)
>>> s.tail(10)
■型を表示
>>> type(s)
■棒グラフで出力
>>> fig = s.plot(kind="bar").get_figure()
>>> fig.savefig("figure1.png")
■統計的な数値を得る
>>> s.describe()
■出現頻度
>>> s.value_counts();
二次元データの扱い方の基本
■sin(), cos() データ生成の例
>>>d=pd.DataFrame(data=[(np.sin(2*np.pi*i/360), np.cos(2*np.pi*i/360)) for i in range(0,360)], columns=("sin", "cos"), index=range(0,360))
■グラフ画像作成
>>> fig=d.plot().get_figure()
>>> fig.savefig("figure2.png")
■内容の確認
head(), tail(), [] など一次元と同様に使用できる
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
その後の複雑な集計(演算?)も、本に書いてあるままに試し始めてみたが、言語も概念も両方がわからない状態で、チンプンカンプンになってしまったので、途中で中止。出直してきます。
■正規分布のランダム100個の座標(x,y)を生成
>>> import numpy as np
>>> import scipy.cluster
>>> import matplotlib.pyplot as plt
>>> a=np.random.multivariate_normal([0,0], [[1.0, 0.0], [0.0, 1.0]], 100)
>>> plt.scatter(a[:,0], a[:,1])
>>> plt.savefig("figure3.png")
>>> b=np.random.multivariate_normal([-5,-5], [[1.0, 0.0], [0.0, 1.0]], 100)
>>> c=np.random.multivariate_normal([ 5, 5], [[1.0, 0.0], [0.0, 1.0]], 100)
>>> src = np.vstack*1
>>> plt.scatter(src[:,0],src[:,1])
>>> plt.savefig("figure4.png")
>>> codebook, distortion = scipy.cluster.vq.kmeans(src, 3)
>>> code, dist = scipy.cluster.vq.vq(src,codebook)
da=[src[i] for i in np.where(code==0)][0]
db=[src[i] for i in np.where(code==1)][0]
dc=[src[i] for i in np.where(code==2)][0]
plt.scatter(da[:,0],da[:,1])
plt.scatter(db[:,0],db[:,1])
plt.scatter(dc[:,0],dc[:,1])
plt.savefig("figure5.png")
*1:a,b,c