Я немного озадачен тем, какой пакет использовать для построения моих данных, которые обычно состоят из 10 различных категорий (например, температуры) с 3 или 4 параллельными измерениями в каждой. Здесь я попробовал использовать только панд (Trial1 + 2) и морского волка (Trial3).
В конце концов, я хотел бы получить диаграмму рассеяния, показывающую три измерения из каждой категории и дополнительно вычерчивающую среднюю линию по всем моим данным (см. Примеры A и B ниже на рисунке).
Я знаю, что могу поместить свои данные в файл CSV, который я могу импортировать, используя пакет PANDAS в блокноте jupyter. Тогда я перехожу к своей проблеме; , которая, на мой взгляд, может быть связана с индексированием или типами данных? Я получаю много ошибок, что x должен равняться y, или что индекс «Степени» не определен ... Я покажу наиболее успешные испытания ниже.
До сих пор я пробовал несколько вещей, используя этот составной набор данных 'Dummydata', который очень типичен для того, что я буду делать с моими реальными данными.
Мой тестовый файл CSV:
Это файл .CSV с четырьмя столбцами, где первый - это температура, затем три следующих столбца - это первое, второе и третье измерения от соответствующей температуры (y1, y2, y3).
in[]: Dummydata.to_dict()
Out[]:
{'Degrees': {0: 0,
1: 10,
2: 20,
3: 30,
4: 40,
5: 50,
6: 60,
7: 70,
8: 80,
9: 90},
'y1': {0: 20, 1: 25, 2: 34, 3: 35, 4: 45, 5: 70, 6: 46, 7: 20, 8: 10, 9: 15},
'y2': {0: 20, 1: 24, 2: 32, 3: 36, 4: 41, 5: 77, 6: 48, 7: 23, 8: 19, 9: 16},
'y3': {0: 18, 1: 26, 2: 36, 3: 37, 4: 42, 5: 75, 6: 46, 7: 21, 8: 15, 9: 16}}
Испытание 1: попытка получить график рассеяния
import pandas as pd
import matplotlib.pyplot as plt
Dummydata = pd.read_csv('DummyData.csv','r',delimiter=(';'), header=0)
y = ['y1','y2','y3']
x = ['Degrees']
Dummydata.plot(x,y)
Это даст хороший линейный график, но также приведет к предупреждению пользователя: Pandas не позволяет создавать столбцы с помощью нового имени атрибута (??).
Если я изменю график на Dummydata.plot.scatter (x, y), то получу ошибку: x и y должны быть одинакового размера ... Так что я знаю, что форма моих данных (10,4) из-за 10 строк и 4 столбца, как я могу переопределить это, чтобы быть в порядке для панд?
Пробная версия 2: то же самое, небольшие корректировки
import pandas as pd
import matplotlib.pyplot as plt
#import the .csv file, and set deliminator to ; and set the header as the first line(0)
Dummydata = pd.read_csv('DummyData.csv','r',delimiter=(';'), header = 0)
x =('Degrees')
y1 =('y1')
y2 =('y2')
y3 =('y3')
Dummydata.plot([x,y3]) #works fine for one value, but prints y1 and y2 ?? why?
Dummydata.plot([x,y1]) # also works, but print out y2 and y3 ??? why? # also works but prints out y2 and y3 ?? why?
Dummydata.plot([x,y]) # get error all arrays must be same length?
Dummydata.plot.scatter([x,y]) # many error, no plot
Каким-то образом я должен сказать пандам, что форма данных (10,4) в порядке? Не уверен, что я здесь делаю не так.
Пробная версия 3: используйте морского рожка и попробуйте получить диаграмму рассеяния
Я просто начал составлять Factorplot, где я снова столкнулся с той же проблемой - иметь возможность получить более одного значения y на моем графике. Я не думаю, что преобразовать это в разброс было бы сложно, если бы я просто знал, как добавить больше данных на один график.
import seaborn as sns
import matplotlib.pyplot as plt
#import the .csv file using pandas
Dummydata = pd.read_csv('DummyData.csv', 'r', delimiter=(';'))
#Checking what the file looks like
#Dummydata.head(2)
x =('Degrees')
y1 =('y1')
y2 =('y2')
y3 =('y3')
y =(['y1','y2','y3'])
Factorplot =sns.factorplot(x='Degrees',y='y1',data=Dummydata)
График Factor отлично работает для одного набора данных, однако, пытаясь добавить больше значения y (либо определяя y = (['y1', 'y2', 'y3']) до или при построении, я получаю такие ошибки, как : Не удалось интерпретировать ввод 'y'. Например, для этого ввода:
Factorplot =sns.factorplot(x='Degrees',y='y',data=Dummydata)
или
Factorplot =sns.factorplot(x='Degrees',y=(['y1','y2','y3']),data=Dummydata)
#Error: cannot copy sequence with size 3 to array axis with dimension 10
То, чего я хотел бы достичь, это что-то вроде этого: , где в (A) я хотел бы получить диаграмму рассеяния со скользящим средним средним значением, а в (B) я хотел бы построить только среднее для каждой категории, но также с указанием стандартного отклонения, и дополнительно нарисуйте скользящее среднее по каждой категории следующим образом:
![enter image description here](https://i.stack.imgur.com/Z932h.jpg)
Я не хочу записывать свои значения данных вручную, я хочу импортировать их, используя файл .csv (потому что наборы данных могут стать очень большими).
Что-то не так с тем, как я организую свой CSV-файл?
Вся помощь приветствуется.