小编peu*_*ing的帖子

Matplotlib PDF 后端慢?

我正在使用 matplotlib 将一千个绘图写入 PDF。我已经优化了绘图代码,即。重用图形/轴/线并仅更改 y 数据。

剩余的大部分时间都花在了 save_figure 上。

相比之下,R 似乎将绘图输出到 PDF 的速度快了大约 2 倍。所有零数据的绘图在 R 中似乎更快,而在 Python 中速度相同。

我设置了 pdf.compression = 0,这做了一个小小的改进。

尝试光栅化数据,它对绘图速度没有影响(尽管它使用了大量的 RAM)。

还有什么我可以尝试用 PDF 后端加速 matplotlib 的速度,或者我应该考虑任何替代后端吗?我正在努力打败R。

谢谢!

python pdf-generation matplotlib

5
推荐指数
1
解决办法
1807
查看次数

Python - Pandas - DataFrame 减少行

我有一个像这样的数据帧:

ind  col1 col2
1    12   string1  ...
2    23   string2 ...
3    34   string1 ...
4    13   string2 ...
5    17   string3 ...
...  ...  ...     ...
Run Code Online (Sandbox Code Playgroud)

我想折叠 DataFrame 以便 col2 是唯一的。在 col1(以及所有其他数字列)中,我想放置 col2 相等的所有值的中位数。

我知道我可以提取 df[df["col2"] == "stringN"],计算中位数并构建一个新的 DataFrame,但是有没有更优雅/pythonic 的方法来做到这一点?

python dataframe pandas

4
推荐指数
1
解决办法
7276
查看次数

Python - 记录器字符串格式

据我了解,

 'hello {0}'.format("world")
Run Code Online (Sandbox Code Playgroud)

慢于:

"hello %s" % "world"
Run Code Online (Sandbox Code Playgroud)

我的问题是,当传递时,logger如何格式化字符串:

logger.debug("hello %s", "world")
Run Code Online (Sandbox Code Playgroud)

并且假设日志永远不会被关闭,那么最好这样做:

logger.debug("hello %s" % "world")
Run Code Online (Sandbox Code Playgroud)

python logging string-formatting

3
推荐指数
3
解决办法
6299
查看次数

在SQLite数据库中存储bool

在我的表架构中:

... disabled BOOLEAN, ...
Run Code Online (Sandbox Code Playgroud)

连接到db时:

db = sqlite3.connect(f, detect_types=sqlite3.PARSE_DECLTYPES)
sqlite3.register_converter("BOOLEAN", myfunc)
Run Code Online (Sandbox Code Playgroud)

我插入一条记录如下:

INSERT INTO mytable (disabled, ...) VALUES (:disabled, ...)
Run Code Online (Sandbox Code Playgroud)

与包含disabled的参数dict一起使用:False.

当我读回该记录时,调用myfunc来转换BOOLEAN类型:

def myfunc(x):
    print x, type(x)
Run Code Online (Sandbox Code Playgroud)

结果:( 0, <type 'str'> 当我想要假时,当然评估为True)

我希望bool存储为1字节INTEGER,我只是想在读取记录时将它们转换为Python bool(代码的其他部分期望bool不是int).SQLite是否将它们存储为字符串,或者在调用myfunc之前将它们转换为字符串?为什么?

PS - 我试过用sqlite3.register_adapter(bool, int),但无济于事.

python sqlite

3
推荐指数
1
解决办法
6081
查看次数