searborn入門第3回目、「ヒートマップとクラスターマップ」
こんにちは、ワタルです。
さっと見て、「あぁそうだったそうだった」と確認できるハンドブックのような存在を目指して。
searborn入門第3回目、「ヒートマップとクラスターマップ」です。
はじめに
このエントリでは、seabornのサンプルデータを用いてヒートマップとクラスターマップを描く手法について学びます。 以下の関数を学習することができます。
sns.load_dataset("flight_dframe")(サンプルデータの取得) dataframe.pivot('a','b','c')(ピボットテーブルに形成) seaborn.heatmap()(ヒートマップを描く) seaborn.clustermap()(クラスターマップを描く)
- はじめに
- おまじない
- サンプルデータの取得
- 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') >>>
中心を指定して、色を変える
ここでは、April,1955を中心に描いてみます。
sns.heatmap(flight_dframe, center=flight_dframe.loc['April ',1955],cmap='bwr') >>>
seaborn.clustermap()(クラスターマップを描く)
ここでは、データを規格化した結果を描画します。 これは、似たものを分類するクラスター分析を行った結果になります。
sns.clustermap(flight_dframe,cmap='OrRd', standard_scale=1)
今回は、少し短いですが、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)(複数のグラフを同時にプロットする)
- はじめに
- おまじない
- サンプルデータの取得
- seaborn.lmplot("x","y",dataframe)(単回帰曲線の可視化)
- 引数order(多項式回帰の可視化)
- 引数fit_reg(散布図の可視化)
- 引数x_estimator(特定の推定量とその回帰を可視化)
- 引数hue(色合いを変える)
- グラフの分割表示
おまじない
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")
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) >>>
グラフの様々な引数
プロット点や線の色などを指定することもできます。
sns.lmplot("total_bill","tip",tips, scatter_kws={'marker':'o', 'color':'indianred'}, line_kws={'linewidth':1, 'color':'blue'}) >>>
引数order(多項式回帰の可視化)
seabornでは、多項式回帰も簡単に描くことが出来ます。
sns.lmplot("total_bill", "tip", tips, order=4, scatter_kws={"marker": "o", "color": "indianred"}, line_kws={"linewidth": 1, "color": "blue"})
引数fit_reg(散布図の可視化)
fit_reg=Falseを指定することで、散布図のみを描画することができます。
sns.lmplot("total_bill", "tip", tips,fit_reg=False) >>>
離散的な値の散布図の可視化
lmplotでは、離散的な値でも問題なく可視化することができます。
#チップの割合を表す、tip_pectを計算した後、描画します tips["tip_pect"]=100*(tips['tip']/tips['total_bill']) sns.lmplot("size", "tip_pect", tips) >>>
引数x_estimator(特定の推定量とその回帰を可視化)
引数x_estimatorでは、x 軸の各値に指定された関数を実行し、その返り値をプロットします。 そのプロットに対する回帰を可視化することができます。
#関数に平均を指定してみます sns.lmplot("size", "tip_pect", tips, x_estimator=np.mean); >>>
引数hue(色合いを変える)
hueとは、色合い/色調という意味の英単語で、hueを指定することで、うまく色分けして可視化することができます。
sns.lmplot("total_bill", "tip_pect", tips, hue="sex",markers=["x","o"]) >>>
グラフの分割表示
複数のグラフを同時に表示することも簡単にできます。 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)
今回は、seabornのサンプルデータを用いて様々な回帰曲線を中心としたデータ可視化手法について学びました。
お疲れ様でした! 次回はこちら
それじゃー、また。
seaborn入門_「様々なデータの可視化手法」
こんにちは、ワタルです。
さっと見て、「あぁそうだったそうだった」と確認できるハンドブックのような存在を目指して。
pandas入門第1回目、「様々なデータの可視化手法」です。
はじめに
このエントリでは、以下の関数を学習することができます。
pyplot.hist(data) seaborn.jointplot(data1,data2) seaborn.distplot(data) seaborn.boxplot(data) seaborn.violinplot(data)
- はじめに
- おまじない
- ヒストグラムをプロットする
- 2つのヒストグラムを同時にプロットする
- sns.jointplot(data1,data2)結合分布表示
- カーネル密度推定のプロット
- 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]),
引数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 ]),
引数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>)
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>)
sns.jointplot(data1,data2)結合分布表示
先ほどよりデータ点を増やして、それぞれをx軸、y軸におき、同時にプロットすることもできます。 これによって、データの粗密を感じることができます。
data1 = randn(1000) data2 = randn(1000) # 同時分布(結合分布) sns.jointplot(data1,data2) >>> <seaborn.axisgrid.JointGrid at 0x1a1d155cc0>
引数kind
引数にkind='hex'を与えると、六角形で表示されます。
sns.jointplot(data1,data2,kind='hex')
>>>
カーネル密度推定のプロット
ここでは、ヒストグラムとカーネル密度推定を同時にプロットしてみます。 引数で色やラベルを指定することもできます。
sns.distplot(data1, kde_kws={'color':'indianred','label':'KDE PLOT'}, hist_kws={'color':'blue','label':"HISTOGRAM"}) >>>
seaborn.boxplot(data)箱ひげ図のプロット
boxplotというメソッドでは、日本語でいう箱ひげ図を描くことができます。
sns.boxplot(data1) >>>
seaborn.violinplot(data)バイオリン図を描く
violinplotは、boxplotの様な外形をしつつ、カーネル密度推定の情報量を兼ね備えたものになります。
sns.violinplot(data1) >>>
終わりに
今回は、様々なデータの可視化方法について学びました。
お疲れ様でした!
次回はこちら
それじゃー、また。
多重回帰分析の実装、そして儚さ。
こんにちは、ワタルです。
はじめに
今回は、多重回帰分析について、理論的な仕組みを理解できるよう解説しつつ、実装してみようと思います。 さらに、その実装がseabornであれば1行で終わってしまう儚さを体験しつつ、seabornにおける多重回帰分析のメソッドを学びたいと思います。
数学的に厳密には正しくない説明になっている箇所もあるかと思います。説明に違和感を覚える方がいましたら是非勉強させていただきますので、コメントを頂けましたらと思います。
目的
今回は、以下のデータ群に対して、基底関数として3次項までの多項式基底を用い、推定モデルを算出することが目的になります。
線形回帰とは
計算に入る前に簡単に線形回帰について解説してみたいと思います。
まず、回帰とは、与えられたデータに適した関数を求める手法のことで、線形回帰とは、回帰分析の中の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)
天下り的ですが、ここで、3次関数っぽいなという感覚から今回は、3次多項式基底を用いることを思いつきます。 簡単のため、正規化項や過学習については、他のwebページに譲ることとします。
思いついたモデルは、係数が4×1の行列とすると、その解の行列を用いて、このように記述することができます。
ここで、Xの要素を求めるを求めます。
def phi(x): return [1, x, x**2, x**3] PHI = np.array([phi(x) for x in X])
次に、二乗誤差を算出するために、の転置行列で左から積を取り、 さらに左からその逆行列の積を取ることで、を求めます。
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')
ここまでで、よくできた重回帰モデルができました。
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)
終わってしまいました。。。
このように、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)(欠損値を任意の数字で埋める)
- 今回の学習内容
- 今回学ぶ関数
- おまじない
- series.isnull()(欠損値を見つける)
- series.dropna()(欠損値を取り除く)
- dataframe.dropna()(dataframeの欠損値を取り除く)
- 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
終わりに
今回は、欠損値が含まれたデータに対して、様々な対応の方法について学びました。
お疲れ様でした!
次回はこちら
それじゃー、また。
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の様々な統計量をみる)
- 今回の学習内容
- 今回学ぶ関数
- おまじない
- dataframe.sum()(dataframeにおける行、列の合計)
- dataframe.min()(行方向の最小値を求める。)
- 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の合計や累積、様々な統計量の調べ方について学びました。
お疲れ様でした!
次回はこちら
それじゃー、また。