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

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

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

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

2回答

242閲覧

Pythonにおけるインデックスの集計方法

Ueryo

総合スコア4

Python

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2020/10/14 12:12

お世話になっております。

Pythonにおけるインデックスの集計方法についてお尋ねしたいことがございます。
二次元配列col.shape = (10,7)のようなものを想定し、その中身は以下のようになっていると仮定します。

イメージ説明

この表の0~1の各10行に入っている7つの値からそれぞれ最大値のインデックスを求めたいとすると、

Python

1Index_Num = np.argmax(col,axis=1) 2print('Index_Num = ',Index_Num) #Index_Num = [4 1 ,,, 1]

とするのは理解できるのですが、この10個のインデックス番号を1は何個、2は何個,,,といった具合で集計する方法はないのでしょうか。
Pandasなどを使ってそれらしきことをやっているような記事は見かけたのですが、自分の理解力不足もあり上手く呑み込ませんでした。
分かりにくくて申し訳ないですが、ご回答よろしくお願いします。

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

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

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

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

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

guest

回答2

0

numpyのbincount APIを使用する例です。
bins[n]の値は、数値nの出現回数です。
例では、bins[1]の値は3なので、1が3回出現したことを表します。

python

1import numpy as np 2 3Index_Num = [1, 0, 1, 2, 1, 4, 4] 4bins = np.bincount(Index_Num, minlength=7) 5print(bins) # -> [1 3 1 0 2 0 0]

投稿2020/10/14 13:03

copepoda

総合スコア324

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

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

Ueryo

2020/10/18 16:20

返信が遅れて申し訳ありません。 Numpyでの実装法があるとは知りませんでした。 今回、別の方をベストアンサーとさせていただきましたが、copepodaさんの意見も参考にさせていただきたいと思います。 ありがとうございました。
guest

0

ベストアンサー

3通りの集計方法を提示しますので、お好みのものを試してみてください。

Python

1import pandas as pd 2import io 3 4data = ''' 52, 5, 0, 6, 8, 1, 3 65, 9, 7, 9, 0, 2, 2 75, 9, 7, 9, 0, 2, 2 85, 9, 7, 9, 0, 2, 2 95, 9, 7, 9, 0, 2, 2 101, 6, 4, 3, 3, 2, 0 111, 6, 4, 3, 3, 2, 0 121, 6, 4, 3, 3, 2, 0 131, 6, 4, 3, 3, 2, 0 141, 6, 4, 3, 3, 2, 0 15''' 16 17df = pd.read_csv(io.StringIO(data), header=None) 18 19# 列ごとに値と数を集計する方法、例として第0列を示す 20sum_type1 = df[0].value_counts() 21print(sum_type1) 22#5 8 23#2 1 24#1 1 25#Name: 0, dtype: int64 26 27# 全ての列を対象に一気に値と数をカウント 28sum_type2 = df.apply(pd.value_counts).fillna(0).astype(int) 29print(sum_type2) 30# 対象となる数字(行ラベル)に対して、各列ごとの集計数を表にしている 31# 0 1 2 3 4 5 6 32#0 0 0 1 0 4 0 5 33#1 5 0 0 0 0 1 0 34#2 1 0 0 0 0 9 4 35#3 0 0 0 5 5 0 1 36#4 0 0 5 0 0 0 0 37#5 4 1 0 0 0 0 0 38#6 0 5 0 1 0 0 0 39#7 0 0 4 0 0 0 0 40#8 0 0 0 0 1 0 0 41#9 0 4 0 4 0 0 0 42 43# sub_type2の行ごとの集計を求める、すなわち元のDataFrame全体での集計となっている 44sum_type3 = sum_type2.sum(axis=1) 45print(sum_type3) 46#0 10 47#1 6 48#2 14 49#3 11 50#4 5 51#5 5 52#6 6 53#7 4 54#8 1 55#9 8 56

投稿2020/10/14 12:48

toast-uz

総合スコア3266

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

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

Ueryo

2020/10/18 16:18

返信が遅れて申し訳ありません。 おかげさまで意図していた結果を得ることができました。 3通りも提示していただきありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問