筋肉で解決しないために。

日々出会うモノに対する考察をしたり、主に以下のテーマに関して書いています。 データサイエンス/人工知能/AI/機械学習/DeepLearning/Python//数学/統計学/統計処理

searborn入門第3回目、「ヒートマップとクラスターマップ」

こんにちは、ワタルです。

さっと見て、「あぁそうだったそうだった」と確認できるハンドブックのような存在を目指して。

searborn入門第3回目、「ヒートマップとクラスターマップ」です。

はじめに

このエントリでは、seabornのサンプルデータを用いてヒートマップとクラスターマップを描く手法について学びます。 以下の関数を学習することができます。

sns.load_dataset("flight_dframe")(サンプルデータの取得)
dataframe.pivot('a','b','c')(ピボットテーブルに形成)
seaborn.heatmap()(ヒートマップを描く)
seaborn.clustermap()(クラスターマップを描く)

おまじない

import numpy as np
from numpy.random import randn
import pandas as pd

from scipy import stats

import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns

%matplotlib inline

サンプルデータの取得

#Seabornにサンプルデータがあります。
flight_dframe = sns.load_dataset("flight_dframe")

または、Githubから取得することもできます。 https://github.com/mwaskom/seaborn-data/blob/master/flights.csv

csvの場合は、pd.read_csv("tips.csv")で読み込むことができます。

取得したdataframeを表示します。

flight_dframe.head()

>>>
    year    month   passengers
0  1949   January     112
1  1949   February    118
2  1949   March       132
3  1949   April       129
4  1949   May         121

dataframe.pivot('a','b','c')(ピボットテーブルに形成)

第一引数は、index 第二引数は、columns 第三引数は、values を意味しています。

flight_dframe = flight_dframe.pivot('month','year','passengers')
flight_dframe

>>>
    year    1949   1950   1951   1952   1953   1954   1955   1956   1957   1958   1959   1960
month                                               
April       129    135    163    181    235    227    269    313    348    348    396    461
August      148    170    199    242    272    293    347    405    467    505    559    606
December    118    140    166    194    201    229    278    306    336    337    405    432
February    118    126    150    180    196    188    233    277    301    318    342    391
January     112    115    145    171    196    204    242    284    315    340    360    417
July        148    170    199    230    264    302    364    413    465    491    548    622
June        135    149    178    218    243    264    315    374    422    435    472    535
March       132    141    178    193    236    235    267    317    356    362    406    419
May         121    125    172    183    229    234    270    318    355    363    420    472
November    104    114    146    172    180    203    237    271    305    310    362    390
October     119    133    162    191    211    229    274    306    347    359    407    461
September   136    158    184    209    237    259    312    355    404    404    463    508
December    118    140    166    194    201    229    278    306    336    337    405    432

seaborn.heatmap()(ヒートマップを描く)

#引数cmapは色の指定
カラーコードはこちら
https://matplotlib.org/examples/color/colormaps_reference.html
#annotにTrueを指定するとそれぞれの値を表示します
#fmtは出力フォーマットを指定しています
sns.heatmap(flight_dframe,cmap='OrRd', annot=True, fmt='d')

>>>

f:id:watarumon:20180703183456p:plain

中心を指定して、色を変える

ここでは、April,1955を中心に描いてみます。

sns.heatmap(flight_dframe, center=flight_dframe.loc['April ',1955],cmap='bwr')

>>>

f:id:watarumon:20180703183509p:plain

seaborn.clustermap()(クラスターマップを描く)

ここでは、データを規格化した結果を描画します。 これは、似たものを分類するクラスター分析を行った結果になります。

sns.clustermap(flight_dframe,cmap='OrRd', standard_scale=1)

f:id:watarumon:20180703183524p:plain

今回は、少し短いですが、seabornのサンプルデータを用いてヒートマップとクラスターマップを描く手法について学びました。

お疲れ様でした!

それじゃー、また。

seaborn入門2_「回帰とプロット」

こんにちは、ワタルです。

さっと見て、「あぁそうだったそうだった」と確認できるハンドブックのような存在を目指して。

searborn入門第2回目、「回帰とプロット」です。

はじめに

このエントリでは、seabornのサンプルデータを用いて様々な回帰曲線を描く手法について学びます。 以下の関数を学習することができます。

tips = sns.load_dataset("tips")(サンプルデータの取得)
sns.lmplot("x","y",dataframe)(単回帰曲線の可視化)
sns.lmplot("x","y",dataframe,
                   scatter_kws={'marker':'o', 'color':'indianred'},
                   line_kws={'linewidth':1, 'color':'blue'})(様々な引数)
fig, (axis1,axis2) = plt.subplots(1,2,sharey =True)(複数のグラフを同時にプロットする)

おまじない

import numpy as np
from numpy.random import randn
import pandas as pd

from scipy import stats

import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns

%matplotlib inline

サンプルデータの取得

#Seabornにサンプルデータがあります。
tips = sns.load_dataset("tips")

または、Githubから取得することもできます。

csvの場合は、pd.read_csv("tips.csv")で読み込むことができます。

取得したdataframeを表示します。

tips.head()

>>>
  total_bill tip sex smoker day time sise
0  16.99  1.01   Female  No  Sun Dinner  2
1  10.34  1.66   Male    No  Sun Dinner  3
2  21.01  3.50   Male    No  Sun Dinner  3
3  23.68  3.31   Male    No  Sun Dinner  2
4  24.59  3.61   Female  No  Sun Dinner  4

seaborn.lmplot("x","y",dataframe)(単回帰曲線の可視化)

seabornを用いることで、簡単に単回帰曲線を可視化することができます。

sns.lmplot("total_bill","tip",tips)

>>>

f:id:watarumon:20180702165335p:plain

グラフの様々な引数

プロット点や線の色などを指定することもできます。

sns.lmplot("total_bill","tip",tips,
                   scatter_kws={'marker':'o', 'color':'indianred'},
                   line_kws={'linewidth':1, 'color':'blue'})
>>>

f:id:watarumon:20180702165347p:plain

引数order(多項式回帰の可視化)

seabornでは、多項式回帰も簡単に描くことが出来ます。

sns.lmplot("total_bill", "tip", tips, order=4,
           scatter_kws={"marker": "o", "color": "indianred"},
           line_kws={"linewidth": 1, "color": "blue"})

f:id:watarumon:20180702165357p:plain

引数fit_reg(散布図の可視化)

fit_reg=Falseを指定することで、散布図のみを描画することができます。

sns.lmplot("total_bill", "tip", tips,fit_reg=False)

>>>

f:id:watarumon:20180702165409p:plain

離散的な値の散布図の可視化

lmplotでは、離散的な値でも問題なく可視化することができます。

#チップの割合を表す、tip_pectを計算した後、描画します

tips["tip_pect"]=100*(tips['tip']/tips['total_bill'])
sns.lmplot("size", "tip_pect", tips)

>>>

f:id:watarumon:20180702165423p:plain

引数x_estimator(特定の推定量とその回帰を可視化)

引数x_estimatorでは、x 軸の各値に指定された関数を実行し、その返り値をプロットします。 そのプロットに対する回帰を可視化することができます。

#関数に平均を指定してみます
sns.lmplot("size", "tip_pect", tips, x_estimator=np.mean);

>>>

f:id:watarumon:20180702165437p:plain

引数hue(色合いを変える)

hueとは、色合い/色調という意味の英単語で、hueを指定することで、うまく色分けして可視化することができます。

sns.lmplot("total_bill", "tip_pect", tips, hue="sex",markers=["x","o"])

>>>

f:id:watarumon:20180702165449p:plain

グラフの分割表示

複数のグラフを同時に表示することも簡単にできます。 subplots( )の第一引数はグラフの行数を、第二引数はグラフの列数をあらわしています。

fig, (axis1,axis2) = plt.subplots(1,2,sharey =True)

sns.regplot("total_bill","tip_pect",tips,ax=axis1)
sns.violinplot(y='tip_pect', x='size', data=tips.sort('size') ,ax=axis2)

f:id:watarumon:20180702165600p:plain

今回は、seabornのサンプルデータを用いて様々な回帰曲線を中心としたデータ可視化手法について学びました。

お疲れ様でした! 次回はこちら

watarumon.hatenablog.com

それじゃー、また。

seaborn入門_「様々なデータの可視化手法」

こんにちは、ワタルです。

さっと見て、「あぁそうだったそうだった」と確認できるハンドブックのような存在を目指して。

pandas入門第1回目、「様々なデータの可視化手法」です。

はじめに

このエントリでは、以下の関数を学習することができます。

pyplot.hist(data)
seaborn.jointplot(data1,data2)
seaborn.distplot(data)
seaborn.boxplot(data)
seaborn.violinplot(data)

おまじない

import numpy as np
from numpy.random import randn
import pandas as pd

#描画のためのライブラリです。
import matplotlib.pyplot as plt
import seaborn as sns

# ブラウザ内に画像を埋め込むための命令です
%matplotlib inline

ヒストグラムをプロットする

ヒストグラムを描くことで、データの概要をつかむことができます。

#正規分布に従う乱数を作ります。
dataset1 = randn(100)

plt.hist(dataset1)
#デフォルトは、bins=10
#binsというのは、ヒストグラムの棒の数

>>>
(array([ 2.,  2.,  6., 19., 16., 23., 16.,  9.,  4.,  3.]),
 array([-2.4821785 , -1.99590527, -1.50963205, -1.02335882, -0.5370856 ,
        -0.05081237,  0.43546086,  0.92173408,  1.40800731,  1.89428053,
         2.38055376]),

f:id:watarumon:20180630182347p:plain

引数color

#データセットをもう一つ作ります。
dataset2 = randn(80)

#引数colorで色を指定することができます
plt.hist(dataset2,color='indianred')

>>>
(array([ 3.,  6., 10., 15., 25., 11.,  8.,  1.,  0.,  1.]),
 array([-2.53975366, -1.9111417 , -1.28252975, -0.65391779, -0.02530583,
         0.60330612,  1.23191808,  1.86053004,  2.48914199,  3.11775395,
         3.7463659 ]),

f:id:watarumon:20180630182400p:plain

引数normed

plt.hist(dataset1, normed=True)

>>>
(array([ 0.24336855,  0.2704095 ,  0.2163276 ,  0.2163276 ,  0.40561425,
         0.40561425,  0.3244914 ,  0.29745045,  0.18928665,  0.13520475]),
 array([-1.7284242 , -1.35861471, -0.98880522, -0.61899573, -0.24918624,
         0.12062325,  0.49043274,  0.86024223,  1.23005172,  1.59986121,
         1.9696707 ]),
 <a list of 10 Patch objects>)

f:id:watarumon:20180630182424p:plain

2つのヒストグラムを同時にプロットする

複数のヒストグラムを同時にプロットすることもできます。

plt.hist(dataset1,normed=True,alpha=0.5,bins=20)
plt.hist(dataset2,normed=True,alpha=0.5,bins=20, color='indianred')

>>>
(array([0.03977016, 0.07954033, 0.03977016, 0.19885082, 0.07954033,
        0.3181613 , 0.35793147, 0.23862098, 0.47724196, 0.51701212,
        0.23862098, 0.19885082, 0.07954033, 0.23862098, 0.03977016,
        0.        , 0.        , 0.        , 0.        , 0.03977016]),
 array([-2.53975366, -2.22544768, -1.9111417 , -1.59683573, -1.28252975,
        -0.96822377, -0.65391779, -0.33961181, -0.02530583,  0.28900014,
         0.60330612,  0.9176121 ,  1.23191808,  1.54622406,  1.86053004,
         2.17483601,  2.48914199,  2.80344797,  3.11775395,  3.43205993,
         3.7463659 ]),
 <a list of 20 Patch objects>)

f:id:watarumon:20180630183332p:plain

sns.jointplot(data1,data2)結合分布表示

先ほどよりデータ点を増やして、それぞれをx軸、y軸におき、同時にプロットすることもできます。 これによって、データの粗密を感じることができます。

data1 = randn(1000)
data2 = randn(1000)

# 同時分布(結合分布)
sns.jointplot(data1,data2)

>>>
<seaborn.axisgrid.JointGrid at 0x1a1d155cc0>

f:id:watarumon:20180630183343p:plain

引数kind

引数にkind='hex'を与えると、六角形で表示されます。

sns.jointplot(data1,data2,kind='hex')

>>>

f:id:watarumon:20180630183354p:plain

カーネル密度推定のプロット

カーネル密度推定 - Wikipedia

ここでは、ヒストグラムカーネル密度推定を同時にプロットしてみます。 引数で色やラベルを指定することもできます。

sns.distplot(data1,
             kde_kws={'color':'indianred','label':'KDE PLOT'},
             hist_kws={'color':'blue','label':"HISTOGRAM"})
>>>

f:id:watarumon:20180630183451p:plain

seaborn.boxplot(data)箱ひげ図のプロット

boxplotというメソッドでは、日本語でいう箱ひげ図を描くことができます。

箱ひげ図 - Wikipedia

sns.boxplot(data1)

>>>

f:id:watarumon:20180630183504p:plain

seaborn.violinplot(data)バイオリン図を描く

violinplotは、boxplotの様な外形をしつつ、カーネル密度推定の情報量を兼ね備えたものになります。

バイオリン図 - Wikipedia

sns.violinplot(data1)

>>>

f:id:watarumon:20180630183515p:plain

終わりに

今回は、様々なデータの可視化方法について学びました。

お疲れ様でした!

次回はこちら

watarumon.hatenablog.com

それじゃー、また。

多重回帰分析の実装、そして儚さ。

こんにちは、ワタルです。

はじめに

今回は、多重回帰分析について、理論的な仕組みを理解できるよう解説しつつ、実装してみようと思います。 さらに、その実装がseabornであれば1行で終わってしまう儚さを体験しつつ、seabornにおける多重回帰分析のメソッドを学びたいと思います。

数学的に厳密には正しくない説明になっている箇所もあるかと思います。説明に違和感を覚える方がいましたら是非勉強させていただきますので、コメントを頂けましたらと思います。

目的

今回は、以下のデータ群に対して、基底関数として3次項までの多項式基底を用い、推定モデルを算出することが目的になります。

f:id:watarumon:20180628202613p:plain

線形回帰とは

計算に入る前に簡単に線形回帰について解説してみたいと思います。

まず、回帰とは、与えられたデータに適した関数を求める手法のことで、線形回帰とは、回帰分析の中の1つの手法のことを指します。

線形回帰の中でも、基底関数に多項式基底を用いた手法を多重回帰分析と呼びます。

ちなみに、基底関数に1次元項までの場合、単回帰分析と呼びます。

多重回帰分析の実装

さあ実装していきます。

まずはおまじないです。

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns

データ群を確認します。

X = np.array([0.02, 0.12, 0.19, 0.27, 0.42, 0.51, 0.64, 0.84, 0.88, 0.99])
t = np.array([0.05, 0.87, 0.94, 0.92, 0.54, -0.11, -0.78, -0.89, -0.79, -0.04])
plt.scatter(X,t)

f:id:watarumon:20180628202613p:plain

天下り的ですが、ここで、3次関数っぽいなという感覚から今回は、3次多項式基底を用いることを思いつきます。 簡単のため、正規化項や過学習については、他のwebページに譲ることとします。

思いついたモデルは、係数w_0,w_1,w_2,w_3が4×1の行列Wとすると、その解tの行列Tを用いて、このように記述することができます。

XW = T

ここで、Xの要素を求めるphi(x)を求めます。

def phi(x):
    return [1, x, x**2, x**3]
PHI = np.array([phi(x) for x in X])

次に、二乗誤差を算出するために、Xの転置行列で左から積を取り、 さらに左からその逆行列の積を取ることで、Wを求めます。

W = (X^{T}X)^{-1}X^{T}T

w = np.linalg.solve(np.dot(PHI.T, PHI), np.dot(PHI.T, t))

最後にプロットします。

def f(w, x):
    return np.dot(w, phi(x))
xlist = np.arange(0, 1, 0.01)
ylist = [f(w, x) for x in xlist]
plt.plot(xlist, ylist)
plt.plot(X, t, 'o')

f:id:watarumon:20180628202719p:plain

ここまでで、よくできた重回帰モデルができました。

seabornを用いて多重回帰分析の実装

次にseabornを用いて、ここまでの計算を1から行ってみます。

おまじないは同じなので省略します。

X = np.array([0.02, 0.12, 0.19, 0.27, 0.42, 0.51, 0.64, 0.84, 0.88, 0.99])
t = np.array([0.05, 0.87, 0.94, 0.92, 0.54, -0.11, -0.78, -0.89, -0.79, -0.04])
sns.regplot(X,t,order=3)

f:id:watarumon:20180628202733p:plain

終わってしまいました。。。

このように、regplotに引数(order=3)をしたことで、3次項までの重回帰分析を行うことができます。

終わりに

今回は、多重回帰分析について、理論的な仕組みを理解しつつ、seabornにおける多重回帰分析のメソッドを学びました。

この様に、seabornやscikit-learnを用いると、あっという間に計算出来てしまいますが、一度くらいはせこせこと実装してみると勉強になると思います。

pandas入門8_「Dataframeにおける階層indexの考え方」

こんにちは、ワタルです。

さっと見て、「あぁそうだったそうだった」と確認できるハンドブックのような存在を目指して。

pandas入門第8回目、「Dataframeにおける階層indexの考え方」です。

今回の学習内容

今回は、階層的なindexを作る方法や、indexやcolumnsに名前を付ける方法について学んでいきます。

今回学ぶ関数

今回は、以下の関数について学びます。

dataframe.index.names = ['INDEX_1','INDEX_2'](indexに名前をつける)
dataframe.columns.names = ['Columns1','Columns2'](columunsに名前をつける)
dataframe.swaplevel('Columns1','Columns2',axis=1)(列方向の階層を逆にする)

おまじない

import numpy as np
from pandas import Series,DataFrame
import pandas as pd
from numpy.random import randn
#まずは、階層的なindexとcolumnsをもったdataframeをつくります

dframe = DataFrame(np.arange(16).reshape(4,4),
                    index=[['a','a','b','b'],[1,2,1,2]],
                    columns=[['A','A','B','C'],['X','Y','Y','X']])
dframe
>>>
A B C
X Y Y X
a 1 0 1 2 3
2 4 5 6 7
b 1 8 9 10 11
2 12 13 14 15
#階層的なindexに名前を付けてみます

#以下のように行の名前をつけます
dframe.index.names = ['INDEX_1','INDEX_2']

#以下のように行の名前をつけます
dframe.columns.names = ['Columns1','Columns2']

dframe

>>>
Columns1 A B C
Columns2 X Y Y X
INDEX_1 INDEX_2
a 1 0 1 2 3
2 4 5 6 7
b 1 8 9 10 11
2 12 13 14 15

dataframe.swaplevel('Columns1','Columns2',axis=1)(列方向の階層を逆にする)

#階層構造を逆にすることができます。今回は列方向を逆にします

dframe.swaplevel('Columns1','Columns2',axis=1)

>>>
Columns2 X Y X
Columns1 A A B C
INDEX_1 INDEX_2
a 1 0 1 2 3
2 4 5 6 7
b 1 8 9 10 11
2 12 13 14 15

今回は、少し短めでしたが、dataframeにおける階層的なindexを作る方法や、indexやcolumnsに名前を付ける方法について学びました。

お疲れ様でした!

それじゃー、また。

pandas入門7_「欠損値の扱い」

こんにちは、ワタルです。

さっと見て、「あぁそうだったそうだった」と確認できるハンドブックのような存在を目指して。

pandas入門第7回目、「欠損値の扱い」です。

今回の学習内容

今回は、欠損値が含まれたデータに対して、様々な対応の方法を学んでいきます。

今回学ぶ関数

今回は、以下の関数について学びます。

series.isnull()(欠損値を見つける)
series.dropna()(欠損値を取り除く)
dataframe.dropna()(dataframeの欠損値を取り除く)
dataframe.drop(how='all')(全てが欠損値の行を落とす)
dataframe.dropna(axis=1)(欠損値を含む列を落とす)
dframe.dropna(thresh=n)(欠損値でない要素が決めた閾値数以上の行のみ表示する)
dframe2.fillna(n)(欠損値を任意の数字で埋める)

おまじない

import numpy as np
from numpy import nan
from pandas import Series,DataFrame
import pandas as pd

series.isnull()(欠損値を見つける)

#欠損値の含まれたseriesをつくります

data = Series(['one','two', np.nan, 'four'])
data

>>>
0     one
1     two
2     NaN
3    four
dtype: object
#null値を見つけます。

data.isnull()

>>>
0    False
1    False
2     True
3    False
dtype: bool

series.dropna()(欠損値を取り除く)

data.dropna()

#欠損値の含まれていたindexが2の要素がなくなっていることがわかります

>>>
0     one
1     two
3    four
dtype: object

dataframe.dropna()(dataframeの欠損値を取り除く)

#seriesと同様にdataframeでも同じことができます

#まずはdataframeをつくります

dframe = DataFrame([[1,2,3],[np.nan,5,6],[7,np.nan,9],[np.nan,np.nan,np.nan]])
dframe

>>>
    0  1  2
0  1.0 2.0 3.0
1  NaN 5.0 6.0
2  7.0 NaN 9.0
3  NaN NaN NaN
dframe.dropna()

#欠損値の含まれていないindexが0の行だけ残っていることがわかります

>>>
    0  1  2
0  1.0 2.0 3.0

dataframe.drop(how='all')(全てが欠損値の行を落とす)

dframe.dropna(how='all')

#引数にhow='all'を指定したことで、全てが欠損値の行だけなくなっていることがわかります

>>>
    0  1  2
0  1.0 2.0 3.0
1  NaN 5.0 6.0
2  7.0 NaN 9.0

dataframe.dropna(axis=1)(欠損値を含む列を落とす)

dframe.dropna(axis=1)

#どの列にも1つは欠損値があるので、すべての列がなくなっていることがわかります

>>>
0
1
2
3

dframe.dropna(thresh=n)(欠損値でない要素が決めた閾値数以上の行のみ表示する)

#別のdataframeをつくります

dframe2 = DataFrame([[1,2,3,np.nan],[2,np.nan,5,6],[np.nan,7,np.nan,9],[1,np.nan,np.nan,np.nan]])
dframe2

>>>

    0  1   2   3
0  1.0 2.0 3.0 NaN
1  2.0 NaN 5.0 6.0
2  NaN 7.0 NaN 9.0
3  1.0 NaN NaN NaN
#nullではない値が2個以上存在する行のみ表示していることがわかります
#つまり、index = 3の行がなくなっています

dframe2.dropna(thresh=2)

>>>
    0  1   2   3
0  1.0 2.0 3.0 NaN
1  2.0 NaN 5.0 6.0
2  NaN 7.0 NaN 9.0

dframe2.fillna(n)(欠損値を任意の数字で埋める)

#欠損値を1で埋めてみます

dframe2.fillna(1)


>>>
    0  1   2   3
0  1.0 2.0 3.0 1.0
1  2.0 1.0 5.0 6.0
2  1.0 7.0 1.0 9.0
3  1.0 1.0 1.0 1.0

列ごとに埋める値を決める

#0列目の欠損値には0を、1列目の欠損値には1を、というように埋めてみます

dframe2.fillna({0:0,1:1,2:2,3:3})

>>>
    0  1   2   3
0  1.0 2.0 3.0 3.0
1  2.0 1.0 5.0 6.0
2  0.0 7.0 2.0 9.0
3  1.0 1.0 2.0 3.0

終わりに

今回は、欠損値が含まれたデータに対して、様々な対応の方法について学びました。

お疲れ様でした!

次回はこちら

watarumon.hatenablog.com

それじゃー、また。

pandas入門6_「Dataframeの操作と統計量」

こんにちは、ワタルです。

さっと見て、「あぁそうだったそうだった」と確認できるハンドブックのような存在を目指して。

pandas入門第6回目、「Dataframeの操作と統計量」です。

今回の学習内容

今回は、dataframeの合計や累積、様々な統計量の調べ方について学んでいきます。

今回学ぶ関数

今回は、以下の関数について学びます。

dataframe.sum()(行方向の合計)
dataframe.sum(axis=1)(列方向の合計)
dataframe.min()(行方向の最小値を求める。)
dataframe.max()(行方向の最大値を求める。)
dataframe.idxmin()(最小値の要素を持つindexを調べる)
dataframe.idxmax()(最大値の要素を持つindexを調べる)
dataframe.cumsum()(累積を求める)
dataframe.describe()(DataFrameの様々な統計量をみる)

おまじない

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

dataframe.sum()(dataframeにおける行、列の合計)

#arrayからdataframeをつくります

arr = np.array([[1,2,np.nan],[np.nan,3,4]])
dframe = DataFrame(arr,index=['A','B'],columns = ['One','Two','Three'])
dframe

>>>
    One Two Three
A   1.0 2.0 NaN
B   NaN 3.0 4.0

dataframe.sum()(行方向の合計)

dframe.sum()


#行方向の合計が計算されていることがわかります

>>>
One      1.0
Two      5.0
Three    4.0
dtype: float64

dataframe.sum(axis=1)(列方向の合計)

#引数に(axis=1)を指定することで、列方向が対象になります

dframe.sum(axis=1)


>>>
A    3.0
B    7.0
dtype: float64

dataframe.min()(行方向の最小値を求める。)

dframe.min()

#行の中の最小値が出力されていることがわかります
#列方向に調べたいときは、引数に(axis=1)を指定します
>>>
One      1.0
Two      2.0
Three    4.0
dtype: float64

dataframe.idxmin()(最小値の要素を持つindexを調べる)

dframe1.idxmin()


>>>
One      A
Two      A
Three    B
dtype: object

dataframe.idxmax()(最小値の要素を持つindexを調べる)

dframe.idxmax()

>>>
One      A
Two      B
Three    B
dtype: object

dataframe.cumsum()(累積を求める)

dframe.cumsum()

>>>
    One Two Three
A   1.0 2.0 NaN
B   NaN 5.0 4.0

dataframe.describe()(DataFrameの様々な統計量をみる)

dframe.describe()

#上から順に意味は以下の様になっています
#count:columns方向の数
#mean:平均
#std:標準偏差
#min:最小値
#25%:第一四分位数
#50%:第二四分位数
#75%:第三四分位数
#max:最大値

>>>
      One  Two        Three
count 1.0  2.000000   1.0
mean  1.0  2.500000   4.0
std   NaN  0.707107   NaN
min   1.0  2.000000   4.0
25%   1.0  2.250000   4.0
50%   1.0  2.500000   4.0
75%   1.0  2.750000   4.0
max   1.0  3.000000   4.0

第一四分位数についての詳細はこちらがおすすめです。 https://qiita.com/chatrate/items/e95ba42cffd6565d8fbb

おわりに

今回は、dataframeの合計や累積、様々な統計量の調べ方について学びました。

お疲れ様でした!

次回はこちら

watarumon.hatenablog.com

それじゃー、また。