[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