ИМХО, ваш код уменьшается до
df = pd.read_table(file, sep=" ")
fig, ax = plt.subplots()
grpd = df.groupby('id')
for i, g in grpd:
g.plot(x='x',y='y', marker='o', ax=ax, title="Evaluation")
Объяснение:
Я шаг за шагом расскажу код:
f = open(file,"r+")
можно удалить вам не нужно открывать файл перед тем, как открывать его в with
-блоке
Но , если вы открываете его таким образом, не забудьте закрыть после того, как он вам больше не нужен.
with open(file,"r+") as f1:
data10 = f1.read()
TESTDATA = StringIO(data11)
можно удалить
1. странное использование данных10,data11 (это не будет работать) и StringIO (слишком сложный)
2. см. следующую строку кода
df = pd.read_table(file, sep=" ")
OK , если вы замените TESTDATA
просто на file
, pandas очень мощен при импорте файлов разных вкусов ...
df.columns = ["x", "y", "id"]
OK , если у вашего файла уже нет собственного заголовка, который бы соответствовал вашим потребностям, что я 'рекомендую проверить, возможно ...
#Astype because i got the error TypeError: 'numpy.float64' object is not iterable
df.id = df.id.astype(int)
можно удалить , поскольку ваша ошибка не имеет к этому никакого отношения, как я уже говорил в своем комментарии вчера
#get unique values of column id
list1=df['id'].tolist()
list1=list(set(list1))
можно удалить если вам нужны уникальные значения столбца в пандах, используйте df['id'].unique()
, но вам не нужно делать все вручную здесь, поскольку для цели, которую вы хотите достичь, есть groupby
:
grpd = df.groupby('id')
Возвращает объект groupby, который действительно предоставляет вам групповые данные и групповых данных при итерации по нему, поэтому ваш цикл с двумя переменными будет работать здесь:
fig, ax = plt.subplots()
for i, g in grpd:
g.plot(x='x',y='x', marker='o', ax=ax, title="Evaluation")
и чтобы быть завершенным: ваши дополнительные
x = df[df.id==i]['x']
y = df[df.id==i]['y']
также могут быть удалены , потому что это также входит в идею группировки.(И, кстати, вы даже не использовали его в своем коде ...)
В конце Я бы порекомендовал вам прочитать самые основы Python и панд, особенно файлio https://docs.python.org/3/tutorial/inputoutput.html#reading-and-writing-files и группировка панд https://pandas.pydata.org/pandas-docs/stable/groupby.html