knaka Tech-Blog

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

pandas sort_values()

ソート

指定列で、ソートする。

a2 = {'ID':['11','12','13' ]
        ,'birth':[1980,1973,1970 ]
        ,'type1':['a','b','c'  ]}
frame2 = DataFrame( a2)
#frame2

a3 = frame2.sort_values(by='birth' )
print(a3 )

結果:

   ID  birth type1
2  13   1970     c
1  12   1973     b
0  11   1980     a

欠損値

値を検索し、論理値を返す

# 値があるかどうかの確認
a1 = {'ID':['11','12','13' ]
        ,'city':['Tokyo','Osaka','Kyoto' ]
        ,'num1':[ 101 ,102,103 ]
        }

frame1 = DataFrame(a1 )
print(frame1 )
print(frame1.isin(["Tokyo"]) )

結果:

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

欠損値の取り扱い
nullを判定

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

frame1 = DataFrame(a1 )
print(frame1 )

print(frame1.isnull() )
#nullを判定し、合計する
frame1.isnull().sum()

結果:

  ID   city  num1
0  11  Tokyo   101
1  12  Osaka   102
2  13    NaN   103
      ID   city   num1
0  False  False  False
1  False  False  False
2  False   True  False
ID      0
city    1
num1    0
dtype: int64

pandas merge()

merge()

 dataFrame マージ
結合用のデータを準備しておきます。

#
a1 = {'ID':['11','12','13' ]
        ,'city':['Tokyo','Osaka','Kyoto' ]
        ,'num1':[ 101 ,102,103 ]
        }
frame1 = DataFrame(a1 )
print(frame1 )

a2 = {'ID':['11','12','13' ]
        ,'birth':[1980,1981,1982 ]
        ,'type1':['a','b','c'  ]}
frame2 = DataFrame( a2)
print(frame2 )

結果:

   ID   city  num1
0  11  Tokyo   101
1  12  Osaka   102
2  13  Kyoto   103
   ID  birth type1
0  11   1980     a
1  12   1981     b
2  13   1982     c

マージ

# データのマージ
m1= pd.merge( frame1, frame2)
print(m1)

結果:

   ID   city  num1  birth type1
0  11  Tokyo   101   1980     a
1  12  Osaka   102   1981     b
2  13  Kyoto   103   1982     c

index をキーにして、結合されているようです。

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