yudonn
@yudonn (裕介 中浦)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

csvファイルの複数の行を、1枚に出力

解決したいこと

ここに解決したい内容を記載してください。
csvファイルの複数の行を、1つの場所に出力したいです
(pandasを使って、ファイルを読み込み、for文でそれぞれの行を出力させるつもりです。)

発生している問題・エラー

出ているエラーメッセージを入力
```IndexError: index 6 is out of bounds for axis 0 with size 6

または、問題・エラーが起きている画像をここにドラッグアンドドロップ

### 該当するソースコード
```python
import pandas as pd
import matplotlib.pyplot as plt
#%matplotlib inline
data = pd.read_csv('graph.csv')
data
data_col = data.columns
data_count = len(data.columns)
#print(data_count)


#グラフの作成
for i in range(1, data_count+1):
    plt.figure(i)
    plt.plot(data[data_col[0]], data[data_col[i]], marker="o")

    #グラフの軸
    plt.xlabel(data[data_col[i]].name)
    plt.ylabel(data[data_col[0]].name)

    #グラフ表示
    plt.show()


### 自分で試したこと
plt.plot()の位置を変えて出力の仕方をみましたが、解決には至りませんでした。
0

5Answer

出ているエラーが

IndexError: index 6 is out of bounds for axis 0 with size 6

であることから察するに,配列サイズをオーバーしたアクセスをしているものだと考えられます.

for i in range(1, data_count+1):

の部分では,データのカラムのサイズ+1未満までiを回すループになってしまいっているので,+1を消して

for i in range(1, data_count):

とすると解決すると考えられます.
個人的には @yudonn さんのfor i in range()を使った書き方ではなく @YottyPG さんのようにforeachの書式で扱うことで,こういったIndexErrorが起きる事態を避けるのがベストプラクティスのように思います.

1Like

やりたいことのイメージはこのような形でしょうか?
元のデータがどういった形になっているか記載があるともっと回答しやすいと思います。

import pandas as pd
import matplotlib.pyplot as plt

data = pd.read_csv('file:///content/graph.csv')
data_col = data.columns
plt.figure(i)

for index, row in data.iterrows():
    plt.plot(data_col[1:], row[1:])

#グラフ表示
plt.show()

image.png

余談ですが、タグに誤字がありますので修正いただければ幸いです。

0Like

ありがとうございます。
イメージは添付してくださった画像の通りです!!
しかし、上手くいきませんでした。。すみません。

ちなみに、下図がイメージの画像です。
スクリーンショット 2022-02-07 183221.png

お時間あれば、よろしくお願いします。

0Like

csvがどういったデータの形になっているか、教えていただくことは可能でしょうか?
実際のデータがあったほうが、齟齬なく説明ができると思いますので。

0Like

Your answer might help someone💌