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

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

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

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

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

Q&A

解決済

1回答

1567閲覧

pandasシリーズ:絶対値の大きい順にインデックス名を取得したい

ak_miyamoto

総合スコア31

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

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

0グッド

2クリップ

投稿2018/01/15 08:22

環境:python3,win10,jupyter

初学者です。あるシリーズに対し以下の作業をしたいと考えております。
具体的には、以下の作業(目視での確認を含んでいる)の不明点を補って、すべてコードで行いたいと考えています。

python3

1data1 = pd.Series(np.random.randn(10),index = ["a","b","c","d","e","f","g","h","i","k"]) 2data1

data1

a 1.808993
b -0.319535
c -0.222112
d 2.291761
e 1.026843
f -1.515471
g -1.372635
h 2.351193
i 1.657847
k -0.984960
dtype: float64

というdata1に対して、

  1. 値の絶対値の大きいほうから3つ探し出して、そのインデックス名を取得したい。

python3

1data1 = np.abs(data1) 2data1 = data1.sort_values(ascending=False) 3data1

h 2.351193
d 2.291761
a 1.808993
i 1.657847
f 1.515471
g 1.372635
e 1.026843
k 0.984960
b 0.319535
c 0.222112

より、抽出されるのは“h”,”d”,”a”のはず
[不明点1:このインデックス名の抽出方法]

  1. 上で取り出したの3つの値の符号も抽出したい。

うえ2つのシリーズを目視で見比べると、順に”+”,”+”,”+”のはず
[不明点2:この符号の判定・抽出方法]

  1. 最後に、これらを並べて以下のような別のシリーズにしたい。

python3

1result1 = pd.Series([“h”,”+”,”d”,”+”,”a”,”+”])

[不明点3:このresult1の作り方]

3つの不明点にお答えくだされば幸いです。result1が出来ればそれでよいので、以上の流れに沿わなくでもよい方法があれば教えていただきたいです。
よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

Python

1import pandas as pd 2import numpy as np 3 4data1 = pd.Series(np.random.randn(10),index = ["a","b","c","d","e","f","g","h","i","k"]) 5print(data1) 6#a -0.711687 7#b 0.319610 8#c 1.419330 9#d 2.460078 10#e 0.642044 11#f 0.152124 12#g 0.026336 13#h 1.377677 14#i 0.332577 15#k 1.082544 16#dtype: float64 17 18# TOP3のINDEXの収得 19top3_index = data1.abs().nlargest(3).index 20print(top3_index) 21 22# TOP3のデータの取得 23top3= data1[top3_index] 24print(top3) 25 26# TOP3の符号を取得 27sign = pd.Series(np.where(top3 >= 0, '+', '-'), index=top3.index) 28print(sign) 29 30# 上記のデータと符号をまとめてDataFrameにする 31top3_df = pd.concat([top3,sign], axis=1).reset_index() 32print(top3_df) 33 34# データと符号をまとめたSeriesを導く 35result1 = top3_df.iloc[:,[0,2]].stack().reset_index(drop=True) 36print(result1) 37#0 d 38#1 + 39#2 c 40#3 + 41#4 h 42#5 + 43#dtype: object

投稿2018/01/15 12:05

magichan

総合スコア15898

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

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

ak_miyamoto

2018/01/18 07:51

うまくいきました!ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問