Pandasの記事をシリーズで書いています。
今回は14回目になります。
今回の記事では、読み込んだCSVファイルのデータを
- アルファベット順に並べたり
- 数の若い順に並べたり
- 順番を逆にしてみたり
- ランク付けをしたり
してみようと思います。
CSVデータは、第12回目の記事で使った『National Football Leagueの選手のデータ』を今回も使います。
実際にPandasで当データを読み込んだ結果は下のようになります
こちらのデータを並べ替えることによって、一番背の高い選手や一番体重の重い選手、アルファベット順に並べた時の名前の順が分かります。
ではさっそく始めていきますね。
sort_values()メソッド
値を数の若い順、もしくはアルファベット順に並び替えるにはsort_values() メソッドを使います。
引用元:Pandasドキュメント
Pandasドキュメントを見てみると、sort_valuesに渡せるパラメーターが色々と書いています。
そのパラメーターのなかで、『by』というパラメーターは必ず書かなければいけません。
その他のパラメーターはオプションですので、書いても書かなくても良いです。
パラメーターby を使う時は
『何によって』ソートするか
ということを引数で明示しなければいけません。
Pandas のドキュメントに
Parameters: by : str or list of str
と書いているのが読めると思いますが
ある1つのコラムを使ってソートしたい時は str(string) コラム名を文字列で書き引数とし
2つ以上のコラム名を使ってソートしたい時は string のリストとしてコラム名を指定して引数とします
では実際に『height_in_inches』(インチ表示の体重)を並べ変えてみます
height_in_inches コラムの値が小さい物から順に並べ替えられました。
インチ表示じゃ、分かりにくい。
センチメートル表示にしたい
という方は、こちらを参考にしてみてください。
新しいコラムが既存のコラムの左側につき、数の若い順に並べ変えられました。
同様に、体重もキログラム表示に変えた後、数の小さい順に並び変えました。
もし、数の大きい物から順番に並べたい時は
パラメーターascending を False に変えます。
2つ以上のコラムを一気に並べ替える
先ほど少し触れましたが、順番に並べるコラムを2つ以上指定したい時は、引数をリスト型にします
nfl.sort_values( [ "コラム名A", "コラム名B"] )
height が小さい物順に並べられ、height が同じ値だった場合、その同じheight のなかでweightが小さい順に並べ替えられます。
文字列はアルファベット順がデフォルト値
文字列にsort_values()を使うと、アルファベット順に並べられます。
さらに深堀して、もし、ある文字列のコラムはアルファベット順に、もう一つの文字列のコラムはアルファベット順とは逆の順番で並べたい時は
DataFrame名.sort_values( by= ["A","b"], ascending = [True, False])
と書くと
Aコラムが数の若い順から並べ替えられ、
Bコラムが数が大きい物から順番に並べ替えられます。
では、その実験をするために、"team" "full_name" というコラムのみを取り出して、新しい変数、『nfl_team_name』に代入して新たなDataFrame を作りました。
このDataFrameを
team 名は アルファベット順に
full_name はアルファベットと反対の順番に
並べ替えてみたいと思います。
実行結果は下のようになりました。
では最後にランク付けの方法を書いて終わりにします。
rank()メソッド
誰が一番背が高いか、誰が15番目に高いかという順位を返してくれます。
センチメートル表示に変えた身長のコラムを付けたしました。
ランク付けをする時に、同じ値があるとその順位を足して2で割った値が割り当てられます。
下記のような結果になります。
また、rank()メソッドで返された値をよく見ると、177.80センチの人より187.96センチの人の方がランクが低く評価されているのが分かります。
rank()はデフォルトでは、数の若いものほどランキングを高く評価されますから、
ascending = False
にして調整してくださいね。
小数点の値を整数値に変える
また少数点のついた順位はおかしいので、小数点(float) を 整数(integer) に変えます。
背の高い順に調整して、順位を整数にしたランキングで新しいコラムを作りたいので、rank()メソッドで出した結果を
DataFrame["新しいコラム名"]
に代入しました。
センチメートルの身長を大きい物順に並べて確かめてみました。
まとめ
今回の記事はこれくらいで終わりにします
長い記事を最後まで読んでくださりありがとうございました。
次回もまた、Pandasについての記事を引き続き書いていきますね。