申し訳ありませんが個人情報が乗っていました。--------------------------------------------------------------------------------------------
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/03/23 03:25
2019/04/21 12:19
回答3件
0
ベストアンサー
とりあえず結果が、DataFrameになってしまう件は
elector = election_data.iloc[[i],[1]]
ではなくて
elector = election_data.iloc[i,1]
でしょうね。
ただ個人的にはColumn番号を使用するよりはClolumn名を使用して
elector = election_data.loc[i,'elector']
と書くほうが可読性が上がるのでよいかと思います。
更には1つの値を取得するのであれば
loc()
,ilic()
よりも at()
,iat()
を使って
elector= election_data.loc[i,'elector']
の方が高速になります。
更に書くと、今回のように特定の列同士の計算はループを行う必要がなく
election_data['elector']/election_data['winner']
のように行うことができますので、これを利用すると今回のコードは
Python
1import pandas as pd 2 3election_data = pd.read_csv('election.csv') 4election_data['disparity'] = election_data['elector']/election_data['winner'] 5print("一票の格差は:{}です".format(election_data['disparity'].max()/election_data['disparity'].min()))
のように書けるかと思います。
投稿2019/03/23 01:56
総合スコア15898
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/03/23 03:31
2019/03/23 06:33 編集
退会済みユーザー
2019/03/25 01:14
0
election_data.iloc[[i],[1]]
のようにスライスでlist
を渡す場合、たとえば[1,2]
のように複数の値を同時に取ることが意図されているというのが本来の用途で、結果の型はDataFrame
になります。また、disparity.append=float(elector)/float(winner)
はおかしいですね。
python
1for i in range(16): 2 elector= election_data.iloc[i,1] 3 winner = election_data.iloc[i,2] 4 disparity.append(float(elector)/float(winner))
ここだけ直せば動きましたが、結果が正しいかどうかは見ていないのであしからず。
いずれにせよ不慣れそうな感じがするので、pandasのチュートリアルを読むか、関連する話題などを扱ったpythonの入門書を探して読んでみると良いと思います。
投稿2019/03/23 00:45
編集2019/03/23 00:46総合スコア30933
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/03/23 03:32
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。