knaka Tech-Blog

AI, IoT, DIYエレクトロニクス, データサイエンスについて投稿予定です。

pandas DataFrame

作成

a1 = {'ID':['11','12','13' ]
        ,'city':['Tokyo','Osaka','Kyoto' ]
        ,'num1':[ 101 ,102,103 ]
        }

frame1 = DataFrame(a1 )
print(frame1 )

結果:

   ID   city  num1
0  11  Tokyo   101
1  12  Osaka   102
2  13  Kyoto   103

T

置き換え、行列の転置が可能です。

a2= frame1.T
print(a2)

結果:

          0      1      2
ID       11     12     13
city  Tokyo  Osaka  Kyoto
num1    101    102    103

列名の指定

# 列名の指定
frame1.num1

結果:

0    101
1    102
2    103
Name: num1, dtype: int64

条件フィルター

条件の指定を行い、特定のレコードを抽出できる

# 条件(フィルター)
a2= frame1[frame1['city']=='Tokyo']
print(a2 )

結果:

   ID   city  num1
0  11  Tokyo   101

pandas Series

必要な import

import numpy as np
import numpy.random as random
import pandas as pd
from pandas import Series, DataFrame

配列の作成

# Series
a1 = pd.Series([5,6,7,8,9])
print(a1)
a1 = pd.Series(np.arange(5, 10 ,dtype='f'))
print(a1 )

結果:

0    5
1    6
2    7
3    8
4    9
dtype: int64
0    5.0
1    6.0
2    7.0
3    8.0
4    9.0
dtype: float32

index が自動で付与されるようです。

a1.index

結果:

RangeIndex(start=0, stop=5, step=1)


index の表示ができました。

numpy の行列の作成

numpy の行列の作成 、操作のの説明となります。

reshape()

行列の作成

作成

#行列の作成
a1 = np.arange(9).reshape(3,3)
print(a1 )

結果:

[[0 1 2]
 [3 4 5]
 [6 7 8]]

3×3の行列が、出力されます。

行の取り出し。

0行目

a1[0, :]
<

結果:
>|python|
array([0, 1, 2])

列の取り出し。

0列

a1[: , 0]

結果:

array([0, 3, 6])

dot()

積を求める

a1 = np.arange(1, 3)
print(a1 )
a2 = np.arange(4, 6)
print(a2)

a3 = np.dot(a1, a2)
a3

結果:

[1 2]
[4 5]
14

1次元×1次元の積、 14が出力されました。
(1*4) + (2* 5) = 14

numpy のrandom randn() で乱数生成。

numpy のrandom 等 で乱数操作のの説明となります。
 関連のページ:
https://docs.scipy.org/doc/numpy/reference/routines.random.html

numpyモジュールのimport

import numpy as np
import numpy.random as random

randn()

seed指定で毎回同じ乱数が出る

random.seed(0)

# 正規分布(平均0、分散1)の乱数を10個発生
a1 = random.randn(10)
print( a1 )

結果:

[ 1.76405235  0.40015721  0.97873798  2.2408932   1.86755799 -0.97727788
  0.95008842 -0.15135721 -0.10321885  0.4105985 ]

choice()

ランダム に抽出

# 10個を抽出(重複あり )
print(random.choice(a1,10))

# 10個を抽出(重複なし )
print(random.choice(a1 ,10,replace=False)) 
[ 0.40015721 -0.15135721  0.4105985   0.4105985   2.2408932   0.95008842
 -0.15135721  0.97873798  1.76405235  2.2408932 ]
[ 0.40015721  0.97873798  1.76405235 -0.15135721  0.4105985   0.95008842
 -0.10321885  2.2408932   1.86755799 -0.97727788]

pythonでデータサイエンス 初級

データ解析、機械学習で使用される統計などの技術
python の数学系ライブラリについての内容となります。

=========
参考は。大学さまの公開資料や、python数学系ライブラリの参考記事、
統計学の参考記事を参考にしています。より詳しく理解されたい方は
記載の用語などを検索したり。各ページの関連URLを参考下さい。

参考のページ:
http://weblab.t.u-tokyo.ac.jp/gci_contents/

jupyter notebook形式のファイルは、
事前に実行環境を準備が必要になりそうです。
=========

numpy の機能

python の数学系ライブラリnumpy 機能の説明となります。
データサイエンス、機械学習の前処理でよく使われるようです。


numpy の配列作成, array() arange() zeros() ones()
knaka0209.hatenablog.com



numpy のsort() min() max() sum()
knaka0209.hatenablog.com


numpy のrandom randn()
knaka0209.hatenablog.com


numpy の行列の作成
knaka0209.hatenablog.com

pandas の機能

pandas Series
knaka0209.hatenablog.com


pandas DataFrame
knaka0209.hatenablog.com


pandas merge()
knaka0209.hatenablog.com


pandas sort_values()
knaka0209.hatenablog.com


pandas info()
knaka0209.hatenablog.com

統計の初級編

 分散、標準偏差、要約統計量
knaka0209.hatenablog.com

 確率
knaka0209.hatenablog.com

numpy のsort() min() max() sum()

numpy のsort() 等の説明となります。
 関連のページ:
https://docs.scipy.org/doc/numpy/reference/routines.sort.html

sort()

# ソート
a1 = np.array([5,4,3,2,1])
print(a1 )
a1.sort()
print(a1 )

結果:

[5 4 3 2 1]
[1 2 3 4 5]

sort() 実行後に、配列の順番が変更されています。

min()

a1 = np.array([5,4,3,2,1])
# 最小値
print("Min:", a1.min())

結果:

('Min:', 1)

最小値が、表示されます。

max()

最大

print("Max:",a1.max())

結果:

('Max:', 5)

最大値が、表示されます。

sum()

合計

# 合計
a1 = np.array([5,4,3,2,1])
print("Sum:", a1.sum())

結果:

('Sum:', 15)

cumsum()

積み上げ

# 積み上げ

a1 = np.array([5,4,3,2,1])
print("Cumsum:", a1.cumsum())

結果:

('Cumsun:', array([ 5,  9, 12, 14, 15]))

numpy の配列作成, array() arange() zeros() ones()

numpy の配列作成等の内容となります。

 関連のページ:
https://docs.scipy.org/doc/numpy/reference/routines.array-creation.html

array()

array(配列 , dtype )

#  array()
a1 = np.array([5,4,3,2,1] ,dtype='f')
a1

結果:

#
array([5., 4., 3., 2., 1.], dtype=float32)

arange()

連続したnumpy配列の生成、
arange(start, stop, step )

#
a1= np.arange(10)
print(len(a1))
a1

結果:

#
10
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

配列数は、10個できました。


#
a1= np.arange(10 ,20  ,0.2 )
print(len(a1))
print(a1)

結果:

50
[10.  10.2 10.4 10.6 10.8 11.  11.2 11.4 11.6 11.8 12.  12.2 12.4 12.6
 12.8 13.  13.2 13.4 13.6 13.8 14.  14.2 14.4 14.6 14.8 15.  15.2 15.4
 15.6 15.8 16.  16.2 16.4 16.6 16.8 17.  17.2 17.4 17.6 17.8 18.  18.2
 18.4 18.6 18.8 19.  19.2 19.4 19.6 19.8]

stepを指定すると、各step幅を指定する事ができます。
配列数は、50個できました。

linspace()

#
#linspace(start, stop ,num , endpoint=True )
a2 =np.linspace(0, 1, num=50, endpoint=True )
print(len(a2) )
a2

結果:

#
20
array([0.        , 0.05263158, 0.10526316, 0.15789474, 0.21052632,
       0.26315789, 0.31578947, 0.36842105, 0.42105263, 0.47368421,
       0.52631579, 0.57894737, 0.63157895, 0.68421053, 0.73684211,
       0.78947368, 0.84210526, 0.89473684, 0.94736842, 1.        ])

numを指定すると、start -stop間の周波数を指定できます。
配列数は、20個できました

zeros()

 zeros(shape, dtype )
0 で埋めた配列が作成できます。

a3 = np.zeros(5)
a3

結果:

array([0., 0., 0., 0., 0.])

shapeを、2行にしてみます。

a3 = np.zeros((2,3), dtype='f')
a3

結果:

array([[0., 0., 0.],
       [0., 0., 0.]], dtype=float32)

ones()

ones(shape, dtype )
1 で埋めた配列が作成できます。

a4 = np.ones(5)
a4

結果:

array([1., 1., 1., 1., 1.])

shapeを、2行指定してみます。

a4 = np.ones((2,3), dtype='f')
a4

結果:

array([[1., 1., 1.],
       [1., 1., 1.]], dtype=float32)

2行の配列ができました。