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
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行の配列ができました。