使用pandas处理实时传入数据的最佳/ pythonic方法是哪种?
每隔几秒钟我就会收到以下格式的数据点:
{'time' :'2013-01-01 00:00:00', 'stock' : 'BLAH',
'high' : 4.0, 'low' : 3.0, 'open' : 2.0, 'close' : 1.0}
Run Code Online (Sandbox Code Playgroud)
我想将它附加到现有的DataFrame,然后对其进行一些分析.
问题是,只是使用DataFrame.append追加行可能导致所有复制的性能问题.
一些人建议预先分配一个大的DataFrame并在数据进入时更新它:
In [1]: index = pd.DatetimeIndex(start='2013-01-01 00:00:00', freq='S', periods=5)
In [2]: columns = ['high', 'low', 'open', 'close']
In [3]: df = pd.DataFrame(index=t, columns=columns)
In [4]: df
Out[4]:
high low open close
2013-01-01 00:00:00 NaN NaN NaN NaN
2013-01-01 00:00:01 NaN NaN NaN NaN
2013-01-01 00:00:02 NaN NaN NaN NaN
2013-01-01 00:00:03 NaN NaN NaN NaN
2013-01-01 …Run Code Online (Sandbox Code Playgroud) 有没有理由将零用作"默认"函数返回值?我注意到stdlib和几乎所有其他地方的几个函数,当没有返回正确的数字(例如pow(),strcpy())或错误(负数)时,只返回零.
在看到几个用否定逻辑进行的测试后,我感到很好奇.很混乱.
为什么不返回1,或0xff,或任何正数?
我正在尝试多路访问linux上的串口.我正在使用只有一个串口的嵌入式系统,如果有多个进程与它通信就很不错.
常见用例是:
首先,我创建了一个简单的python脚本来打开n个伪终端对(加上串口)并使用poll语句将输入/输出定向到正确的位置:
# Removed boiler plate and error checking for clarity
##### Serial port setup
ttyS = serial.Serial(device, baudrate, width, parity, stopbits, 1, xon, rtc)
ttyS.setTimeout(0) # Non-blocking
##### PTYs setup
pts = []
for n in range(number_of_slave_terminals):
master, slave = os.openpty()
# Print slave names so others know where to connect
print >>sys.stderr, 'MUX > fd: %d pty: %s' % (slave, os.ttyname(slave))
pts.append(master)
##### Poller setup
poller = select.poll()
poller.register(ttyS.fd, select.POLLIN | select.POLLPRI)
for pt …Run Code Online (Sandbox Code Playgroud) 我正在编写这段代码作为面向对象编程的练习.
在这里,我试图将房屋定义为房间列表,并将每个房间定义为设备列表(例如灯具).
首先,我创建了所有对象,并将两个房间附加到房屋,并为每个房间添加了不同的设备.很基本的.
问题是,似乎设备被附加到两个房间.这是为什么?
代码:
#! /usr/bin/python
class House:
def __init__(self, rooms = list()):
self.rooms = rooms
print('house created')
class Room:
def __init__(self, name = 'a room', devs = list()):
self.name = name
self.devs = devs
print('room ' + self.name + ' created')
class Device:
def __init__(self, name = 'a device'):
self.name = name
print('device ' + self.name + ' created')
def main():
#1
h = House()
r1 = Room(name = 'R1')
r2 = Room(name = 'R2')
d1 = Device(name …Run Code Online (Sandbox Code Playgroud)