小编tho*_*hor的帖子

在csv导入pandas期间跳过行

我正在尝试使用导入.csv文件pandas.read_csv(),但我不想导入数据文件的第二行(索引= 1的行用于0索引).

我无法看到如何导入它,因为与命令一起使用的参数似乎不明确:

来自熊猫网站:

skiprows :列表式或整数

要在文件开头跳过(0索引)或要跳过的行数(int)的行号."

如果我skiprows=1输入参数,它如何知道是跳过第一行还是跳过索引为1的行?

python csv pandas

78
推荐指数
4
解决办法
16万
查看次数

Matplotlib:更改所有子图的线宽

我正在使用 matplotlib(版本 1.3.1)和 Python 2.7 绘制子图(6x2)网格。我设置了我的图形并在子图中绘制如下所示的内容:

fig, axes = plt.subplots(ncols=6, nrows=2, 
                         sharex=True, sharey=True, figsize=(30,5))

axes[0,0].plot(x, y)
axes[1,5].plot(z, a)
Run Code Online (Sandbox Code Playgroud)

等等。

我的问题是:有没有办法一次更改所有这些图上的线属性?我可以axes[0,0].plot(x,y,'k',linewidth=2.0)在每个轴上手动指定,但我认为必须有一种方法可以同时为所有 12 个图执行此操作。

干杯。

plot matplotlib python-2.7 subplot

6
推荐指数
1
解决办法
9089
查看次数

用子图调整图周围的空间

我正在使用Matplotlib并努力在我正在绘制的包含一个子图网格的图形周围获得恰当数量的空白.

要求:能够选择所有子图的纵横比(它们都是相同的),准确定义子图与(保存的)图边缘的顶部,底部和左侧之间有多少空白.我右边不需要任何额外的空间.

我到目前为止的代码包含以下内容:

import matplotlib.pyplot as plt
fig, axes = plt.subplots(ncols=6, nrows=2, sharex=True, 
                         sharey=True, figsize=(16,8))

axes[0,0].plot(x,y)
etc...

plt.subplots_adjust(hspace=1.0, wspace=0.02, bottom=0.17, left=0.075, top=0.18)

plt.savefig('Fig1_matplot.pdf', bbox_inches='tight')
Run Code Online (Sandbox Code Playgroud)

实际上,如果我没有指定子图figsize=()的宽高比是错误的.如果我这样做,那么只要我更改参数,宽高比就会改变subplots_adjust().显然left cannot be >= rightbottom cannot be >= top.如果我将top定义为除0以外的任何值,它会将所有子图完全压缩到图底部的一条线.

如果我指定bbox_inches='tight'然后它会在底部和左侧切断我定义的空格,但如果我没有指定它,那么我在右边留下了多余的空格,因为我无法摆脱它(右边是<=剩下).

我有点卡住,任何帮助都会非常感激.

干杯.

python matplotlib figure python-2.7 subplot

6
推荐指数
1
解决办法
6570
查看次数

分离一些次要情节,但不分离其他次要情节;Python、Matplotlib

我正在 python (v 2.7.9) 中使用 matplotlib (v 1.4.2) 绘制子图网格。我可以手动调整子图之间的间距,但我希望仅某些子图具有不同的间距。我希望的最终图形是左侧有一个 2x5 子图网格,右侧有一个 2x5 子图网格,中间有一个空格。

我用来控制图形布局的代码如下:

figw, figh = 16.5, 15.0 #18.5, 15.0
fig, axes = plt.subplots(ncols=4, nrows=5, sharex=False, 
                         sharey=True, figsize=(figw, figh))

plt.subplots_adjust(hspace=0.0, wspace=0.2, left=1/figw,
                    right=1-2./figw, bottom=1/figh, top=1-2./figh)
Run Code Online (Sandbox Code Playgroud)

当我改变时wspace,我得到 4 列均等间距。有没有办法wspace以这样的方式进行更改:第 0 列和第 1 列之间为 0,第 1 列和第 2 列之间为 x,第 2 列和第 3 列之间为 0?

谢谢。

python matplotlib python-2.7 subplot

6
推荐指数
1
解决办法
2208
查看次数

在 matplotlib savefig 之后 close() 不释放内存

我正在运行一个 python 程序,它每隔几分钟重新绘制一个图形,但每次它运行时,它使用的内存都会增加一点,很快我使用的树莓派就会变慢。

这是相关的一段代码:

import matplotlib.pyplot as plt
import matplotlib.dates as md
from memory_profiler import profile

@profile
def plotter(file_name, plot_name):
    with open(filen_name, 'r') as readings:
        reader = csv.reader(readings, delimiter=',')
        data = [row for row in reader]

    plt.plot(data[2], data[0])
    ax = gca()
    xfmt = md.DateFormatter('%H:%M') # xaxis is datetimes
    ax.xaxis.set_major_formatter(xfmt)
    plt.legend()

    plt.savefig(plot_name, transparent=True)
    plt.clf()
    plt.cla()
    plt.close()
Run Code Online (Sandbox Code Playgroud)

该函数的调用方式如下:

 while True:
     plotter(file_name, plot_name)
     sleep(100)
Run Code Online (Sandbox Code Playgroud)

memory_profiler 输出很好的输出,但它总是看起来像这样:

Line #    Mem usage    Increment   Line Contents
================================================
38     36.2 MiB      0.6 MiB       plt.savefig(plot_name, transparent=True)
39     36.2 …
Run Code Online (Sandbox Code Playgroud)

python memory matplotlib

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

将对象转换为float会丢失太多精度 - 熊猫

我正在尝试绘制一个DataFrame使用pandas但它不起作用(有关详细信息,请参阅此类似的线程).我认为问题的一部分可能是我的DataFrame似乎是objects:

>>> df.dtypes
Field          object
Moment         object
Temperature    object
Run Code Online (Sandbox Code Playgroud)

但是,如果我要将所有值转换为类型float,我会失去很多精度.列Moment中的所有值都是表单-132.2036E-06并转换为将floatdf1 = df.astype(float)更改为-0.000132.

有谁知道如何保持精度?

python floating-point-precision pandas

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

返回单个皮尤记录作为dict

如果我从带有peewee的数据库中获取多条记录,则可以将它们转换为如下所示的字典:

users = User.select().where(User.attribute == some_value).dicts()
Run Code Online (Sandbox Code Playgroud)

但是,通常我只想要一条记录(或者知道只返回一条记录),所以我可以这样做:

one_user = User.get(User.name == some_value)
Run Code Online (Sandbox Code Playgroud)

但是我无法调用.dicts()该对象返回的对象。
有没有办法以dict形式获取该get查询的结果?

目前,我唯一能想到的就是非Python语言

one_user = User.select().where(User.name == some_value).dicts()[0]
Run Code Online (Sandbox Code Playgroud)

python peewee

4
推荐指数
2
解决办法
892
查看次数

将数组传递给函数:数组必须具有"大小"类型

我构建了一个这样的数组数组:

let mut my_array = [[false; WIDTH]; HEIGHT];
Run Code Online (Sandbox Code Playgroud)

where WIDTHHEIGHT之前定义的常量.

我想将整个数组传递给一个函数,并更改数组中的值,尽管不是数组的大小/长度.

我试过了:

array_func(&my_array);  // (in main function)

fn array_func(arr: &mut [[bool]]) {
    println!("{:?}", arr);
}
Run Code Online (Sandbox Code Playgroud)

我收到错误:

the trait 'std::marker::Sized' is not implemented for '[bool]'
note: `[bool]` does not have a constant size known at compile-time
note: slice and array elements must have `Sized` type
Run Code Online (Sandbox Code Playgroud)

我的数组的大小应该在编译时知道 - 我不能改变数组的大小.至少,我认为这let mut my_array意味着我可以更改数组中的值,但不能更改数组的大小.

rust

2
推荐指数
1
解决办法
880
查看次数

matplotlib图上的不同背景颜色区域

我正在绘制一个随时间变化的变量,我想以交通灯样式指示该变量的严重性。

 |
 |
 |           red
 |
 |
y|              /
 |             /   yellow
 |      ___   /
 |     /   \_/
 |    /           green
 |   /
 |_____________________________
             x
Run Code Online (Sandbox Code Playgroud)

因此,对于低y值,背景为绿色,对于中间y值为黄色/琥珀色,对于高y值为红色。最终看起来有点像三条纹标志。

由于我经常重新绘制图形,并且y比例可能会改变,因此情况变得更加复杂,因此我不能只在图形上放置固定框,除非每次绘制图形时都要计算框的大小。

有没有办法用matplotlib做到这一点?

我目前的绘图代码:

import matplotlib.pyplot as plt

plt.plot(x, y, 'k')
plt.grid(b=True)
ax = plt.gca()
ax.set_facecolor("some colour")
Run Code Online (Sandbox Code Playgroud)

python plot matplotlib

2
推荐指数
1
解决办法
3766
查看次数

索引检查超出范围时分配返回值

在伪代码中,我正在尝试以下操作:

for i in len(array):
    try:
        a = array[i-1]
    except(out_of_bounds_error):
        a = false
Run Code Online (Sandbox Code Playgroud)

其中array仅由布尔值组成。

在书中(第9.2章)中,您可以使用以下内容检查函数是否返回结果:

let a: u32 = array[i-1]
Run Code Online (Sandbox Code Playgroud)

告诉我a确实是个笨蛋。没有Result类型,如何attempt to subtract with overflow在运行时处理不可避免的(和预期的)错误?

rust

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

多个HoverTools用于不同的线路(散景)

我在散景图上有多行,我希望HoverTool显示每行的值,但使用前一个stackoverflow答案的方法不起作用:

/sf/answers/1928447041/

以下是该答案的相关代码段:

fig = bp.figure(tools="reset,hover")
s1 = fig.scatter(x=x,y=y1,color='#0000ff',size=10,legend='sine')
s1.select(dict(type=HoverTool)).tooltips = {"x":"$x", "y":"$y"}
s2 = fig.scatter(x=x,y=y2,color='#ff0000',size=10,legend='cosine')
fig.select(dict(type=HoverTool)).tooltips = {"x":"$x", "y":"$y"}
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

from bokeh.models import HoverTool
from bokeh.plotting import figure

source = ColumnDataSource(data=dict(
    x = [list of datetimes]
    wind = [some list]
    coal = [some other list]
    )
)

hover = HoverTool(mode = "vline")

plot = figure(tools=[hover], toolbar_location=None,
    x_axis_type='datetime')

plot.line('x', 'wind')
plot.select(dict(type=HoverTool)).tooltips = {"y":"@wind"}
plot.line('x', 'coal')
plot.select(dict(type=HoverTool)).tooltips = {"y":"@coal"}
Run Code Online (Sandbox Code Playgroud)

据我所知,它相当于我链接的答案中的代码,但当我将鼠标悬停在图上时,两个悬停工具框都显示相同的值,即wind.

python hover python-3.x bokeh

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