質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.39%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2678閲覧

Pythonによるグループ分け方法について (上位●●%など)

penguins

総合スコア5

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

2クリップ

投稿2020/03/10 07:34

Pythonによるグループ分け (上位●●%など)

ある試験の結果が入力されたcsvファイルを読み込み、
その点数によって上位30%, 中位40%, 下位30%にグループ分けを実施したいと考えています。

pandasを使用してのファイルの読み込みとランク付けまではできたのですが、
上位30%などで区切る方法がわかりません。

また、それぞれのグループ毎に表を作製し、Excelで出力したいのですが、
その方法についてもご教授いただけますと幸いです。

現在できているもの

氏名 点数
A    10
B    9
C   8
D   7
E   6
F   5

表のイメージ (excel出力)

上位グループ 中位グループ 下位グループ
A      C     E
B      D     F
・     ・     ・
・     ・     ・

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

上位30%, 中位40%, 下位30%にてグループ分けを行うのであれば、pandas.qcut() をお使いください

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.qcut.html

Python

1import pandas as pd 2import io 3 4data = """ 5氏名,点数 6A,10 7B,9 8C,8 9D,7 10E,6 11F,5 12G,4 13H,3 14I,2 15J,1 16""" 17 18df = pd.read_csv(io.StringIO(data)) 19 20df['グループ'] = pd.qcut(df['点数'], [0,0.3,0.7,1.0], labels=['下位','中位','上位']) 21print(df) 22# 氏名 点数 グループ 23#0 A 10 上位 24#1 B 9 上位 25#2 C 8 上位 26#3 D 7 中位 27#4 E 6 中位 28#5 F 5 中位 29#6 G 4 中位 30#7 H 3 下位 31#8 I 2 下位 32#9 J 1 下位

あとは適当にDataFrameを整形して、エクセルに吐き出すと良いかと思います。

Python

1ret = df.groupby('グループ')['氏名'].apply(lambda d: d.reset_index(drop=True)).unstack().T 2ret = ret.reindex(['上位', '中位', '下位'], axis=1) 3print(ret) 4#グループ 上位 中位 下位 5#0 A D H 6#1 B E I 7#2 C F J 8#3 NaN G NaN 9 10ret.to_excel('out.xlsx')

投稿2020/03/10 08:17

magichan

総合スコア15898

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

penguins

2020/03/11 10:35

非常に助かりました。 ご回答いただきまして誠にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.39%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問