我试图创建一个简单的类,它将数据存储为一个数据帧并给出一定的结果。我试着写一篇如下:
import numpy as np
import pandas as pd
class logdata():
def __init__(self,size):
self.size = size
self.x = None
self.timestamp = None
self.confidence = 100
self.occurance = 1
def createdf(self):
self.df = pd.DataFrame(data = None, columns = ['Timestamp','Label','Occurance', 'Confidence'])
return self.df
def insertdf(self, x, timestamp):
self.occurance = self.get_occurance()
self.confidence = self.get_confidence()
self.df.loc[-1] = pd.Series({'Timestamp':timestamp, 'Label': x, 'Occurance':self.occurance, 'Confidence':self.confidence})
self.df.index = self.df.index + 1
self.df = self.df.sort_index()
self.df = self.del_row()
return self.df
def get_occurance(self):
return self.df.loc[self.df.Label == self.x, 'Label'].count()
def get_confidence(self):
y = self.df.shape[0]
if y:
conf = (self.occurance/self.df.shape[0])*100
else:
conf = 100
return conf
def del_row(self):
if self.df.shape[0] > int(self.size):
self.df = self.df.iloc[self.size:]
return self.df
def get_result(self):
return self.df.loc[self.createdf['Confidence'].idxmax()]
它的作用是当我传递一个像integer这样的数据时,它将创建一个新的空数据帧(如果没有),并通过调用ld = logdata()
}{我也可以将max size设置为ld.size = 10
},然后再设置{ld.insertdf(x,timestamp)
将第一个数据插入到数据框中,这将计算发生率(默认值=1)和置信度(平均值为百分比,默认值为100)。最后,我想通过调用ld.getresult()
来提取具有最高可信度的数据,我想使用pymongo将其发送到服务器(我知道这一部分)。在
我不是一个数据结构的人,只是一个python的傻瓜。我搜索了很多教程,但最终得到了数据帧子类的tut。这似乎行不通,如果可能的话,请帮我改正错误。你可以自由地建设性地批评这一点。这对我很有帮助,谢谢。在
下面是一个例子:
假设我有一个二进制标签1和大小为3的0,所以我首先设置ld.size = 3
那么我的输入将是ld.insertdf(0,1500)
这将产生:
然后我添加ld.insertdf(0,1530)
更新到:
Timestamp | Label | Occurance | Confidence
| 1530 | 0 | 2| 100
| 1500 | 0 | 2| 100
最后当我添加ld.insertdf(1,1600)
它应该更新为:
Timestamp | Label | Occurance | Confidence
| 1600 | 1 | 1| 33
| 1530 | 0 | 2| 66
| 1500 | 0 | 2| 66
当我添加另一个ld.insertdf(0,1630)
它将改变测向为:
Timestamp | Label | Occurance | Confidence
| 1630 | 0 | 2| 66
| 1600 | 1 | 1| 33
| 1530 | 0 | 2| 66
因为尺寸限制是3。 在注释中,我在解释时颠倒了索引,但方法是不言自明的。在
ld.get_result()
将只给我一个标签,该标签具有最高的数据集,也是最新的输入,即:1630,0,2,66
编辑:我编辑了代码,它允许我创建一个数据帧,但它不更新发生和信任。在
参见下面的修订代码。这会给你你想要的输出。如果您需要对任何代码进行澄清,请让我知道-但这是不言自明的。在
相关问题 更多 >
编程相关推荐