对于使用哪种程序包来绘制我的数据,我有些困惑,该程序通常由10个不同的类别(例如温度)组成,每个类别有3或4个并行测量值。在这里,我尝试仅使用熊猫(Trial1 + 2)和seaborn(Trial3)。
最后,我想要的是一个散点图,显示每个类别的三个度量,并另外绘制一条通过我所有数据的平均线(请参见下面的示例A和B)。
我知道我可以将数据放在CSV文件中,可以使用jupyter笔记本中的PANDAS包导入。 然后我解决了问题;我认为现在可能与索引或数据类型有关?我收到很多错误,即x必须等于y,或者未定义索引“ Degrees” ...下面将展示最成功的试验。
到目前为止,我已经使用此组成的数据集“ 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)
这将提供漂亮的线条图,但也会产生UserWarning: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:使用seaborn并尝试获取散点图
我只是开始制作一个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)
因子图对于一个数据集工作正常,但是,在绘制之前或在图中尝试添加更多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)中,我想绘制平均值不仅显示每个类别,还显示标准差,并另外在每个类别上绘制滚动平均值,如下所示:
我不想手动写入数据值,我想导入然后使用.csv文件(因为数据集可能变得非常大)。
组织csv文件的方式有问题吗?
感谢所有帮助。