アルバイト募集2018-08-15Pandasで最大値、最小値を抜き出すmax、min関数の使い方Tweetdescribe関数を用いた最大値、最小値の取得max関数APIドキュメントparams:returns:サンプルコードmin関数APIドキュメントparams:returns:サンプルコードまとめ参考PandasにはNumPyと同様に最大値、最小値を抜き出す関数max関数とmin関数があります。属性(attribute)を使った最大値、最小値の取得max関数の使い方min関数の使い方について解説します。max関数もmin関数もDataFrameとSeriesのどちらにも適用可能ですが、今回はDataFrameに適用されるものを中心に解説していきます。describe関数を用いた最大値、最小値の取得もっとも手軽で、他の情報も簡単に取得できる方法として、DataFrameやSeriesのdescribe属性を使うものがあります。平均値や標準偏差、データ数、四分位数などを表示してくれます。詳しい使い方は以下の記事で解説しています。/features/pandas-describe.html簡単なDataFrameを作成してdescribe関数でデータの概要を取得します。float64このように、最大値と最小値を一度に獲得してくれるのでかなり便利です。カラムごとのデータを知りたいときで特別な条件設定がいらない場合はdescribe関数を使うことをおすすめします。次は最大値を取得してくれるmax関数です。APIドキュメントから見ていきます。(省略可能)初期値None列データ(0または’index’)の中での最大値を取得するか、行データ(1または’columns’)の中での最大値を取得するかを指定します。デフォルトでNoneとなっていますが列データから取得しています。(省略可能)初期値TrueNaN値を飛ばして最大値を返すかどうかを指定します。(省略可能)初期値NoneラベルがMultiIndexだった場合、指定された階層のラベルに沿って最大値を返します。このときSeries形式で分割されて返されます。(省略可能)初期値None数値データのみのデータの最大値を抜き出すかどうかを指定します。Noneの場合、数値データ以外のデータも利用しようと試みます。Series形式のデータに対してはこの引数は無効です。returns:最大値を含んだSeriesかDataFrame(MultiIndexでlevelを指定した場合)axis引数で列データと行データ、どちらの最大値を返すかを指定します。残念ながらこの関数でDataFrame全体での最大値を返すようにすることはできません。MultiIndexがラベルのとき、扱いが少し難しくなりますがそれ以外の場合に対しては素直に引数を指定していけば問題ないでしょう。サンプルコード先ほどのデータを使って最大値を求めていきます。bまずは特に引数を指定せずに使ってみます。object文字列データだけのC列でも最大値なるものを返しています。最大値はデータを昇順に並べ替えたときに最後にくる値を抜き出していると読み換えると'c'が最大値として返された理由が分かります。文字にsort関数を適用したときの挙動と同様になります。実際に要素を並べ替えてみます。object先ほどのmax関数の出力と見比べてみると、ソートした値の最後尾にあたる値が返ってきてることがわかります。sort_values関数の詳しい使い方はこちら。/features/pandas-sort-values.htmlaxis=0かaxis='index'にしても同じ結果が得られます。axis=1かaxis='columns'にすると挙動が変わります。1で指定すると行ごとの最大値を返すことになります。このとき、今回使ったデータには数値データと文字データの両方が含まれることになります。すると、文字データは無視され、数値データにおける最大値が返されます。次にskipnaを指定します。bまずはデフォルトであるskipna=Trueで最大値を取得すると、先ほどまで文字データだった’C’列に数値データが入り込み、最大値を返されなくなります。float64skipna=FalseにしてみるとNaN値が最大値となってしまいます。float64次にnumeric_only引数を使っていきます。文字列データに統一するためにfillna関数を使ってNaN値のところを”missing”という文字列に変換します。object次にMultiIndexのラベルを持つDataFrameについて扱っていきます。bデータの中身は以下のようになっています。bではこれの最大値を行ごとに取得します。float64では次にlevelを指定します。2このように、levelを指定するとlevelにおけるラベルごとに最大値が返されるようになります。使い方などはmax関数と一致しており、返す値だけが異なる関数となります。ここではAPIドキュメントとサンプルコードを載せておきます。(省略可能)初期値None列データ(0または’index’)の中での最小値を取得するか、行データ(1または’columns’)の中での最小値を取得するかを指定します。デフォルトでNoneとなっていますが列データから取得しています。(省略可能)初期値TrueNaN値を飛ばして最小値を返すかどうかを指定します。(省略可能)初期値NoneラベルがMultiIndexだった場合、指定された階層のラベルに沿って最小値を返します。このときSeries形式で分割されて返されます。(省略可能)初期値None数値データのみのデータの最小値を抜き出すかどうかを指定します。Noneの場合、数値データ以外のデータも利用しようと試みます。Series形式のデータに対してはこの引数は無効です。returns:最小値を含んだSeriesかDataFrame(MultiIndexでlevelを指定した場合)サンプルコードmax関数で扱った内容をそのままmin関数に置き換えて実行しています。objectaxisを指定します。int64次にskipnaです。float64numeric_onlyの値をいじります。objectMultiIndexでlevelを指定します。2まとめ今回は、最大値と最小値とを抜き出す方法をまとめました。min関数が便利なので、特にMultiIndexのときはmax関数やmin関数を使うとよいでしょう。documentationTweetDeepAgeではAIに関する厳選した内容を記事にしてお届けします。