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