あなたのループのためにタイプミスがあります:
for steps in range [group]:
は
for steps in range(group):
あなたのためのループがrange
に__getitem__
を呼び出そうとしますが、このメソッドが定義されていないので、あるべきrange
の場合はTypeError: 'type' object is not subscriptable
になります。詳細については、python documentation for getitem()を確認してください。それは、入力だとrange
は整数を期待するので
しかし、あなたは、その内のすべての項目をループにパンダSeries
にrange
を使用することはできません。代わりに、次のものを使用する必要があります。
for steps in group:
これは、csvファイルのすべての行をループし、各行にまったく同じプロットを出力します。私はこれがあなたが実際にやりたいことではないと確信しています。
あなたの質問がうまく理解できれば、あなたのcsvにある実験的/制御値の各グループをプロットしたいと思います。
次にあなたが(未テスト)試してみてください:グループ列のデータのすべての部分の上に
import pandas as pd
import numpy as np
import matplotlib as plt
df = pd.read_csv('C:\\Users\\User\\Desktop\\Ubiome samples\\samples.csv')
for group in df['Group'].unique():
group_data = df[df['Group'] == group]
plt.plot(group_data['Time'], group_data['Count'], 'bs')
plt.show()
for group in df['Group'].unique()
意志ループ、無視して重複。 たとえば、列に1000文字列が含まれていても、これらの文字列のすべてが「実験的」または「制御」の場合、['experimental', 'control']
をループします(実際にはnumpy配列、またunique()
はソートされませんしたがって、出力の順序は入力の順序に依存します)。
df[df['Group'] == group]
は、 'Group'列がgroupと等しいすべての行を選択します。 詳細については、pandas documentation for where method and maskingを確認してください。
このエラーは 'range [group]'のエラーです。範囲を呼び出す適切な方法は 'range(n)'です。ここで 'n'は整数です。 [ドキュメントを参照してください。](https://docs.python.org/3.6/library/stdtypes.html#range)おそらく他の問題もあります。詳細については、使用するデータフレームを与える数行のコードを提供することを検討してください。 – saintsfan342000