我在mongodb的集合中有大量数据需要分析.如何将数据导入熊猫?
我是熊猫和numpy的新手.
编辑:mongodb集合包含标记有日期和时间的传感器值.传感器值为float数据类型.
样本数据:
{
"_cls" : "SensorReport",
"_id" : ObjectId("515a963b78f6a035d9fa531b"),
"_types" : [
"SensorReport"
],
"Readings" : [
{
"a" : 0.958069536790466,
"_types" : [
"Reading"
],
"ReadingUpdatedDate" : ISODate("2013-04-02T08:26:35.297Z"),
"b" : 6.296118156595,
"_cls" : "Reading"
},
{
"a" : 0.95574014778624,
"_types" : [
"Reading"
],
"ReadingUpdatedDate" : ISODate("2013-04-02T08:27:09.963Z"),
"b" : 6.29651468650064,
"_cls" : "Reading"
},
{
"a" : 0.953648289182713,
"_types" : [
"Reading"
],
"ReadingUpdatedDate" : ISODate("2013-04-02T08:27:37.545Z"),
"b" : 7.29679823731148,
"_cls" : "Reading"
},
{
"a" : 0.955931884300997, …
Run Code Online (Sandbox Code Playgroud) 在mongodb文档中,它说:
从2.2版本开始,MongoDB在每个数据库的基础上实现了大多数读写操作的锁.一些全局操作(通常是涉及多个数据库的短期操作)仍然需要全局"实例"广泛锁定.在2.2之前,每个mongod实例只有一个"全局"锁.
这是否意味着在我拥有3个与mongodb:// localhost/test的连接的情况下来自网络上运行的不同应用程序 - 一次只能写一个?或者只是每个连接?
IOW:它是每个连接,还是整个/测试数据库在写入时被锁定?
如果以前曾经问过这个问题,我会道歉,但我无法在任何地方看到它.
基本上我遇到过一个场景,我需要在lambda函数中使用if语句.困难之处在于理想情况下它需要在一行代码中(如果可能的话甚至可能?)
通常,我会这样写:
T = 250
if (T > 200):
rate = 200*exp(-T)
else:
rate = 400*exp(-T)
return (rate)
Run Code Online (Sandbox Code Playgroud)
但是我需要它看起来像这样:
rate = lambda(T) : if (T>200): return(200*exp(-T)); else: return(400*exp(-T))
Run Code Online (Sandbox Code Playgroud)
我意识到更容易做的事情是在lambda函数之外做出决策,然后为每个case都有一个单独的lambda函数,但它不适合这里.lambda函数存储在一个数组中,并在需要时访问,每个数组元素对应一个特定的"速率",因此对于相同的"速率"有两个单独的行会弄乱.任何帮助将不胜感激,或如果它不可能,其他人的一些确认将是不错的:)
python lambda if-statement ternary-operator conditional-operator
我在两个不同的目录中有两个文件,一个是'/home/test/first/first.pdf'
,另一个是'/home/text/second/second.pdf'
.我使用以下代码来压缩它们:
import zipfile, StringIO
buffer = StringIO.StringIO()
first_path = '/home/test/first/first.pdf'
second_path = '/home/text/second/second.pdf'
zip = zipfile.ZipFile(buffer, 'w')
zip.write(first_path)
zip.write(second_path)
zip.close()
Run Code Online (Sandbox Code Playgroud)
我打开我创建的zip文件后,我有一个home
在它的文件夹,然后有两个子文件夹在里面,first
和second
,则PDF文件.我不知道如何只包含两个pdf文件,而不是将完整路径压缩到zip存档中.我希望我的问题清楚,请帮忙.谢谢.
我们有这个代码:
def big_function():
def little_function():
.......
.........
Run Code Online (Sandbox Code Playgroud)
Python文档说明了def
声明:
函数定义是可执行语句.它的执行绑定了函数名...
所以,问题是:def little_function()
每次big_function
调用时都会执行吗?问题是关于def
陈述的确切,而不是little_function()
身体.
我从url传递的值为:
user_data = {}
if (request.args.get('title')) :
user_data['title'] =request.args.get('title')
if(request.args.get('limit')) :
user_data['limit'] = request.args.get('limit')
Run Code Online (Sandbox Code Playgroud)
然后用它作为
if 'limit' in user_data :
limit = user_data['limit']
conditions['id'] = {'id':1}
int(limit)
print type(limit)
data = db.entry.find(conditions).limit(limit)
Run Code Online (Sandbox Code Playgroud)
它打印: <type 'unicode'>
但我不断收到type
的limit
是unicode
,从查询产生一个错误!我正在将unicode转换为int,但为什么不转换?请帮忙!!!
我想初始化并填充一个numpy
数组.什么是最好的方法?
这符合我的预期:
>>> import numpy as np
>>> np.empty(3)
array([ -1.28822975e-231, -1.73060252e-077, 2.23946712e-314])
Run Code Online (Sandbox Code Playgroud)
但这不是:
>>> np.empty(3).fill(np.nan)
>>>
Run Code Online (Sandbox Code Playgroud)
没有?
>>> type(np.empty(3))
<type 'numpy.ndarray'>
Run Code Online (Sandbox Code Playgroud)
在我看来,np.empty()
调用返回正确类型的对象,所以我不明白为什么.fill()
不工作?
分配np.empty()
第一个工作结果正常:
>>> a = np.empty(3)
>>> a.fill(np.nan)
>>> a
array([ nan, nan, nan])
Run Code Online (Sandbox Code Playgroud)
为什么我需要分配给变量才能使用np.fill()
?我错过了一个更好的选择吗?
假设我有两个不同的类实现
class ParentA:
def initialize(self):
pass
def some_event(self):
pass
def order(self, value):
# handle order in some way for Parent A
class ParentB:
def initialize(self):
pass
def some_event(self):
pass
def order(self, value):
# handle order in another for Parent B
Run Code Online (Sandbox Code Playgroud)
我怎样才能动态地让一些第三类继承ParentA
或ParentB
基于这样的东西?
class MyCode:
def initialize(self):
self.initial_value = 1
def some_event(self):
# handle event
order(self.initial_value)
# let MyCode inherit from ParentA and run
run(my_code, ParentA)
Run Code Online (Sandbox Code Playgroud) 这个问题意味着更多的是__dir__
关于numpy
.
我有一个子类numpy.recarray
(在python 2.7,numpy 1.6.2),我注意到在对象recarray
时没有列出字段名称dir
(因此ipython的自动完成功能不起作用).
试图修复它,我尝试覆盖__dir__
我的子类,像这样:
def __dir__(self):
return sorted(set(
super(MyRecArray, self).__dir__() + \
self.__dict__.keys() + self.dtype.fields.keys()))
Run Code Online (Sandbox Code Playgroud)
结果是:AttributeError: 'super' object has no attribute '__dir__'
.(我发现这里实际上应该在python 3.3中工作......)
作为解决方法,我试过:
def __dir__(self):
return sorted(set(
dir(type(self)) + \
self.__dict__.keys() + self.dtype.fields.keys()))
Run Code Online (Sandbox Code Playgroud)
据我所知,这个有用,但当然不是那么优雅.
问题:
recarray
?super
-call链),当然,对于没有__dict__
...的对象recarray
不支持列出其字段名称开头?仅仅是疏忽?我无法创建随机选择数组,其中选择是一个元组.
我收到错误: a must be 1-dimensional
这是一个例子:
choices = ((0,0,0),(255,255,255))
numpy.random.choice(choices,4)
Run Code Online (Sandbox Code Playgroud)
有没有其他方法可以做到这一点?
预期结果:
一个numpy数组,由从选择元组中随机选取的4个元素组成.
((0,0,0),(0,0,0),(255,255,255),(255,255,255))
Run Code Online (Sandbox Code Playgroud) python ×9
inheritance ×2
mongodb ×2
numpy ×2
python-2.7 ×2
arrays ×1
casting ×1
closures ×1
concurrency ×1
if-statement ×1
lambda ×1
locking ×1
pandas ×1
performance ×1
pymongo ×1
random ×1
unicode ×1
zip ×1
zipfile ×1