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

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

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

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Python

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

Q&A

0回答

484閲覧

変数 i に1,2,3,…と値を入れてデータを抽出したい。

giagany

総合スコア3

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Python

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

0グッド

1クリップ

投稿2023/01/29 07:44

変数 i に1,2,3,…と値を入れてデータの抽出しを行い、そのデータを活用したい。

実現したいこと

df.iloc[[0, 1, 2],[i]].mean().valuesから
row_1st = df.iloc[[0, 1, 2],[1]].mean().values
row_2st = df.iloc[[0, 1, 2],[2]].mean().values
row_3st = df.iloc[[0, 1, 2],[3]].mean().values
のようにデータを大量に作りたい

発生している問題・エラーメッセージ

iを利用し、row_2stというデータの作り方がわからない。

該当のソースコード

import csv import numpy as np import pandas as pd df = pd.read_csv('data.csv',encoding='cp932') pd.set_option('display.max_rows', 150) pd.set_option('display.max_columns', None) pd.set_option('display.max_colwidth', None) pd.read_csv('data.csv',encoding='cp932') i = 0 for i in range(0,2): row_1st = df.iloc[[0, 1, 2],[i]].mean().values num = float(input()) if row_1st - 1 <= num <= row_1st + 1: print(f'{row_1st-1}以上かつ{row_1st+1}以下です。') else: print(f'{row_1st-1}以上かつ{row_1st+1}以下ではありません。') num = float(input()) if row_2st - 1 <= num <= row_2st + 1: print(f'{row_2st-1}以上かつ{row_2st+1}以下です。') else: print(f'{row_2st-1}以上かつ{row_2st+1}以下ではありません。')

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

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

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

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

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

meg_

2023/01/29 07:59

> 変数 i に1,2,3,…と値を入れてデータの抽出しを行い、そのデータを活用したい。 コードを見るとforループでの実装が書かれているので、「変数 i に1,2,3,…と値を入れて」の部分は理解されているように見えます。そうすると分からないことは何でしょうか? pandas.DataFrameではなくもっと簡単な例で課題を示されると回答できるかもしれません。
giagany

2023/01/29 08:05

わかりずらく申し訳ありません。 変数 i に1,2,3…と入れれたとしても df.iloc[[0, 1, 2],[i]].mean().valuesから変数 i に1,2,3…と値を入れ、それぞれ row_1st = df.iloc[[0, 1, 2],[1]].mean().values row_2st = df.iloc[[0, 1, 2],[2]].mean().values row_3st = df.iloc[[0, 1, 2],[3]].mean().values という風に、row_2st、row_3stを作ってその後の式に使いたいと思っています。
melian

2023/01/29 08:08

numpy.ndarray に格納した方がよいかと思いますが、 means = df.iloc[0:3,1:4].mean().values 別個の変数に割り当てる場合は以下の様になるでしょう。 row_1st, row_2nd, row_3rd = df.iloc[0:3,1:4].mean().values
giagany

2023/01/29 08:14

df.iloc[0:3,1:4].mean().valuesの[0:3,1:4]はどういう内容でしょうか 初心者でご迷惑おかけします。
melian

2023/01/29 08:16

df.iloc[[0,1,2],[1,2,3]] と同じ意味(インデックス)になります。
giagany

2023/01/29 08:20

変数 i は使わないということですか?
melian

2023/01/29 08:21

そうです。
giagany

2023/01/29 08:58 編集

row_1st, row_2nd= df.iloc[0:3,1:4].mean().valuesに変えたところ 'numpy.float64' object is not callableというエラーになってしまいました。
melian

2023/01/29 09:00

row_1st, row_2nd, row_3rd = df.iloc[0:3,1:4].mean().values です。
giagany

2023/01/29 09:02

二つまでの場合でしたら上記のでダメですか?
melian

2023/01/29 09:04

2つの場合は以下です。 row_1st, row_2nd = df.iloc[0:3,1:3].mean().values
giagany

2023/01/29 09:07

いけました。ありがとうございます。 df.iloc[0:3,1:3]についてさらに詳しく教えていただけませんか? 値の意味やどこを指定しているか
melian

2023/01/29 09:12

df.iloc[0:3,1:3] 最初の 0:3 は 1行目、2行目、3行目を指しています。これは [0, 1, 2] と同じ意味です。 次の 1:3 は2列目、3列目を指しています。[1, 2] と同じです。 0:3 や 1:3 は「スライス」と呼ばれていて、"Python スライス" で検索すれば大量に結果が出てきます。
giagany

2023/01/29 09:27

ありがとうございます。とても助かりました。
giagany

2023/01/29 11:33

別のCSVデータでも試そうと思いましたらこんなエラーが出てしまいました。 not enough values to unpack (expected 12, got 11)
melian

2023/01/29 11:48

右辺で指定した列数と左辺の変数の個数が合っていないのでしょう。先にも述べましたが、ndarray にする方がよいですよ。
giagany

2023/01/29 11:50

詳しいndarrayの使い方ご教示いただいてもよろしいでしょうか? まだまだ、初心者なので
melian

2023/01/29 11:55

means = df.iloc[0:3,1:4].mean().values とすると、mean[0] に2列目の平均値、mean[1] に3列目の平均値、mean[2] に4列目の平均値が入ります。
giagany

2023/01/29 12:12

特定の行と列から平均値を求めることは可能でしょうか? 例えば、2行目の1,2列の平均値、または、1,3行目の2列目の平均値など
melian

2023/01/29 12:22

2行目の1,2列の平均値 => df.iloc[1, [0,1]].mean() 1,3行目の2列目の平均値 => df.iloc[[0,2], 1].mean()
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問