ちゃぱブログ / エンジニアリング / マネジメント

とあるプロダクトの運用組織のマネジメントしてる人の雑記。主にエンジニアリングやマネジメントのことを書きます。ときおりプチ情報も

(Python)特定列の最大値取得や並び替えの実装例

概要

ファイルを読み取り特定列だけで最大値を取得したり、特定列で並び替えをする実装のサンプル。 大きく2つを試した。

  • Python組み込みの「sort関数」「max関数」を利用

  • 外部ライブラリのpandasを利用

実装例

sort関数、max関数

Python公式のリンクは以下。

組み込み型 — Python 3.9.1 ドキュメント

組み込み関数 — Python 3.9.1 ドキュメント

クラスを作っておき、ファイルから取得した情報をインスタンス化してリストに突っ込む実装とした。 そのリストをグルグル回しながらソートや最大値を取得する。 ここでの個人的な学びとしては、csvファイルから読み取った内容をそのままアンパックしてクラスに突っ込むところと、sortやmaxのkeyにlambda式で指定するところ。 具体的なコードは以下(全体のコードはこちらにあります)

print(max(resourcelists, key=lambda x: x.cpu))

## CPUの降順に並べなおす
resourcelists.sort(key=lambda x: -x.cpu)
print(resourcelists)

以前に同様のことをやりたいなと思いつつ、実装の仕方がわからなかったのだけど、「Effective Python」を読んでてなるほど。と思った。

pandasの利用

同じことはpandasを使っても実現可能。どうしても追加でpipでインストールしてはいけない環境(どんだけだ)の場合は利用できない。 存在は知りつつもいまいち利用シーンがなかったので、いまさらpandasをちゃんと触った。便利で驚いた。 実際のコードはこちら。

print(df['cpu'].max())
print(df.sort_values('cpu', ascending=False))

こっちのほうが圧倒的に簡単。絞り込みとかも簡単にできるので、特に制限ないならpandas使うのがいいのではないか、と思った。

参考リンク

pandasの利用については、以下のページを参考にさせていただきました。

データ分析で頻出のPandas基本操作 - Qiita