pandas info()
index:
.info()
dataFrame についての、情報が表示できます。
importしておきます
# import numpy as np import numpy.random as random import scipy as sp import pandas as pd from pandas import Series, DataFrame
データの定義
# # a1 = { 'ID':['11','12','13', '14' ] ,'num1':[ 101 ,102,103 , 101] ,'num2':[ 201 ,202,203 ,204 ] ,'num3':[ 301 ,302,303 ,304 ] } frame1 = DataFrame(a1 ) print(frame1 )
結果:
ID num1 num2 num3 0 11 101 201 301 1 12 102 202 302 2 13 103 203 303 3 14 101 204 304
info() 実行
frame1.info()
結果:
null 判定, 型の表示ができます。
# <class 'pandas.core.frame.DataFrame'> RangeIndex: 4 entries, 0 to 3 Data columns (total 4 columns): ID 4 non-null object num1 4 non-null int64 num2 4 non-null int64 num3 4 non-null int64 dtypes: int64(3), object(1) memory usage: 148.0+ bytes
mean
平均値、 num1 の平均を出力します。
# # 平均値 print( frame1.num1.mean())
結果:
# 101.75
median()
中央値
# 中央値 print( frame1.num1.median())
結果:
101.5
mode()
最頻値:出現する頻度が多い値
print(frame1.num1.mode())
結果:
0 101 dtype: int64
describe()
要約統計量 の表示
# a1 =frame1.describe() print(a1 )
結果:
num1 num2 num3 count 4.000000 4.000000 4.000000 mean 101.750000 202.500000 302.500000 std 0.957427 1.290994 1.290994 min 101.000000 201.000000 301.000000 25% 101.000000 201.750000 301.750000 50% 101.500000 202.500000 302.500000 75% 102.250000 203.250000 303.250000 max 103.000000 204.000000 304.000000
出力内容:
データ数
平均値
標準偏差
最小値
第一四分位数
第二四分位数
第三四分位数
最大値
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]