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

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

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

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

Q&A

解決済

3回答

5505閲覧

CSV 最大値・最小値読み取り

raspypy

総合スコア247

Python 2.7

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

0グッド

0クリップ

投稿2019/10/30 07:32

編集2019/10/30 08:55

##やりたいこと

Raspberry Pi内に保存されているcsvファイルのデータを読み取り、最大値・最小値をprintで表示させたい。

##教えてほしいこと
次のプログラムを参考にしています。
このプログラムの場合、csvファイルの1行目に'学生番号'、'点数'の記述があるので、
listA = filename['学生番号']
listB = filename['点数']
のように指定していますが、

私の参照するデータは、1行目からデータとなるため、このような指定ができません。
この場合、どのようにすれば良いのかが分からず困っています。
(csvファイルの1行目にタイトル行を含めることは極力避けたいです。)

python

1import pandas as pd 2filename = pd.read_csv('sample.csv',encoding="SHIFT-JIS") 3 4listA = [] 5listB = [] 6 7listA = filename['学生番号'] 8listB = filename['点数'] 9max=0 10leng = len(listA) 11 12for n in range(leng): 13 if listB[n]>max: 14 max=listB[n] 15 num = n 16print ('最高得点をとった学生番号は'+str(listA[num]))

##csvファイルの中身
データは50個あります。
5列目に温度データが保存されています。

csv

12019,10,30,15,15,23.233754307 22019,10,30,15,16,23.2037066132 32019,10,30,15,18,23.2037066132

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

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

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

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

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

y_waiwai

2019/10/30 07:36

残念ながら、コード作成依頼は受け付けていません
dodox86

2019/10/30 07:45

ヒントだけ:言語は awk, perl, python, ruby...なんでだってできます。(回答はしませんが)
raspypy

2019/10/30 08:07

ご指摘ありがとうございます。 安易な質問ですみません。 質問内容を修正させていただきました。いま考えているコードで、分からない部分を教えていただければと思っています。
Y.H.

2019/10/30 08:47

タグは[Python]に変更お願いします。 [Raspberry Pi]は関係なさそうなので削除ください。
dodox86

2019/10/30 09:33

Python2.7のタグが新たに付いていますが、pandasモジュールを使った提示のコードは、print()を使っていることから、Python3 のように思います。
dodox86

2019/10/30 09:41

幸いと言うべきか、seastar3さんより回答いただいたサイトの記事は、Python2.xのもののようです。
guest

回答3

0

回答も既にいただいていますし、コメントで「awk, perl, ... 何ででもできます」と書いた手前、比較程度の意味でawkスクリプトで。

awk

1#!/usr/bin/awk -f 2 3BEGIN { minv = 0; maxv = 0 } 4 5{ 6 n = split($0, array, ",") 7 if (n == 6) { 8 if (NR == 1) { 9 minv = array[5] 10 maxv = array[5] 11 } else { 12 if (array[5] < minv) { 13 minv = array[5] 14 } 15 16 if (maxv < array[5]) { 17 maxv = array[5] 18 } 19 } 20 } 21} 22 23END { printf("min=%d, max=%d\n", minv, maxv) }

bash

1$ cat data.txt 22019,10,30,15,15,23.233754307 32019,10,30,15,16,23.2037066132 42019,10,30,15,18,23.2037066132 5 6$ awk -f t1.awk data.txt 7min=15, max=18 8

コードの可読性の点では「python + csvモジュール」、更には「python3 + pandasモジュール」に敵いそうにありませんね。

投稿2019/10/30 19:06

編集2019/10/30 19:07
dodox86

総合スコア9183

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

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

0

ベストアンサー

python

1df = pd.read_csv('sample.csv', names=['year', 'month', 'day', 'hour', 'minute', 'temperature'])

とすれば1行目にヘッダを追加することなく列名付きでCSVを読み込めます。
それを以下のようにすれば最大・最小を出力できます。

python

1print(df['temperature'].max()) 2print(df['temperature'].min())

投稿2019/10/30 17:15

yuba

総合スコア5568

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

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

raspypy

2019/10/31 03:49

回答ありがとうございます。 csvファイルから、最大、最小、そして平均も求めることができました。
guest

0

ピーハイさんの「Pythonの基礎 ファイル(CSV)を読み込む編」の記事のように各行のリストを取り出せます。
全リストをリスト化し、3番目の項を数値化して、最大値と最小値の各データを取り出せば、処理できるでしょう。

投稿2019/10/30 09:02

seastar3

総合スコア2285

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問