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

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

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

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Q&A

解決済

2回答

1317閲覧

CSVファイルの値を読み込み、算術に使用する

hide09090909

総合スコア68

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

0グッド

0クリップ

投稿2019/07/30 15:14

csvの2列目に記載された値を読み込み、平均を取得する単純な処理を実装したいです。
下記のように記載して、実行したのですがエラーになってしまいます。

import csv from pandas import series dataframe from statistics import mean df = pd.read_csv('sample.csv', encoding='utf_8', usecols=[1]) df_list = df.values.tolist() mean = sum(df_list) / len(df_list)

■エラー内容
unsupported operand type(s) for / 'int' and 'list'

型か文字コードの問題かと思っておりますが、原因がわかりません。
どなたかわかる方どのように修正すれば良いか教えていただきたいです。

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

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

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

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

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

nouken

2019/07/30 15:30

df_listをprintしてもらっても良いですか?
hide09090909

2019/07/30 15:54

[[4.3543],[6.4543],[5.4321],[7.5654],[5.6765]] と出力されます。
guest

回答2

0

下記でも取得できます。

python

1import pandas 2 3df = pandas.read_csv('sample.csv', usecols=[1]) 4df_list = df.iloc[:,0].tolist() 5print(sum(df_list)/len(df_list))

投稿2019/07/31 15:03

meg_

総合スコア10577

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

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

0

ベストアンサー

df_listの中にさらにlistが入っているような形なのでsumがうまくいってません。
いくらでもやりようはあると思いますが、内側のlistの値を取り出してやればsumができるようになります。

python

1>>> df_list = [[4.3543],[6.4543],[5.4321],[7.5654],[5.6765]] 2>>> type(df_list) 3<class 'list'> 4>>> type(df_list[0]) 5<class 'list'> 6>>> df_list = [li[0] for li in df_list] 7>>> mean = sum(df_list) / len(df_list) 8>>> print(mean) 95.896520000000001

またはnumpyを使えばそのままいけます。

>>> import numpy as np >>> lis = [[4.3543],[6.4543],[5.4321],[7.5654],[5.6765]] >>> mean = np.mean(lis) >>> print(mean) 5.896520000000001

投稿2019/07/30 16:03

編集2019/07/30 23:07
nouken

総合スコア369

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

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

hide09090909

2019/07/30 17:30

ご回答ありがとうございます。 ちょっとイメージがついていないのですが、csvから抜き出す値が不定の時に私が質問で記載したものをベースに直すとどのようになりますでしょうか?
nouken

2019/07/30 23:07

追記しました。
hide09090909

2019/07/30 23:57

これはcsvから取り出した値をハードコートしないといけないのでしょうか? 可能ならハードコートしないのですが、そのやり方はありますでしょうか? 何度も申し訳ありません
nouken

2019/07/31 00:00

する必要ないですが、私の手元で確認するためにハードコードしているだけです。確認してみてください。
nouken

2019/07/31 00:02

ちなみにdf[columns].mean()でもいけます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問