小编den*_*var的帖子

如何在Pandas数据帧(python)中查找哪些列包含任何NaN值

给定一个pandas数据帧,其中包含(可能)NaN值分散在这里和那里:

问题:如何确定哪些列包含NaN值?特别是,我可以获得包含NaN的列名列表吗?

谢谢

python numpy nan dataframe pandas

110
推荐指数
7
解决办法
12万
查看次数

如何在Python的plt中获得最新绘制线的颜色

我绘制一条线而没有指定颜色(想想:plt.plot(x,y)).说颜色是蓝色的.

问题:如何从plt对象获取此颜色,以便将其放入变量中?

似乎这很接近(可能是解决方案):

p = plt.plot(x,y)
color = p[0].get_color()
Run Code Online (Sandbox Code Playgroud)

更新的问题: 我不确定我理解"0"索引:p [0]是否总是访问最近的绘制线?

python matplotlib

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

加载速度更快:python中的pickle或hdf5

给出了1.5 Gb的pandas数据帧列表.

我想知道哪个是更好的方法来处理加载这些数据:pickle(通过cPickle),hdf5,或python中的其他东西?

首先,"倾销"数据可以花很长时间,我只做一次.

也不关心磁盘上的文件大小.

问: 我关心的是尽快将数据加载到内存中的速度.

python numpy hdf5 dataframe pandas

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

将单个元素的列表或numpy数组转换为在python中浮动

我有一个函数,可以接受列表或numpy数组.

在任何一种情况下,列表/数组都有一个元素(总是).我只需要返回一个浮点数.

所以,例如,我可以收到:

list_ = [4]
Run Code Online (Sandbox Code Playgroud)

或numpy数组:

array_ = array([4])
Run Code Online (Sandbox Code Playgroud)

我应该回来

 4.0
Run Code Online (Sandbox Code Playgroud)

所以,自然(我会说),我在list_上使用float(...)并得到:

TypeError: float() argument must be a string or a number
Run Code Online (Sandbox Code Playgroud)

我对array_做同样的事情,这次它通过响应"4.0"来工作.由此,我了解到Python的列表无法以这种方式转换为float.

基于numpy数组转换为float的成功,这引出了我的方法:

float(np.asarray(list_))
Run Code Online (Sandbox Code Playgroud)

当list_既是Python列表又是numpy数组时,这种方法也适用.

但似乎这种方法有一个开销,首先将列表转换为numpy数组然后浮动.基本上:有更好的方法吗?

python arrays floating-point numpy list

22
推荐指数
3
解决办法
7万
查看次数

更改Python的Spyder编辑器中的缩进设置

我正在使用Python的Spyder编辑器.我需要更改缩进设置(例如,让"tab"表示"4个空格").

我该如何做到这一点?

python indentation spyder

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

如何在列表推导中向列表中添加任何内容?

我正在用Python编写列表理解:

[2 * x if x > 2 else add_nothing_to_list for x in some_list]
Run Code Online (Sandbox Code Playgroud)

我需要"add_nothing_to_list"部分(逻辑的else部分)实际上什么都不是.

Python有办法做到这一点吗?特别是,有没有办法说a.append(nothing)哪个会a保持不变.这可以是编写通用代码的有用功能.

python list-comprehension list

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

在Python中比较数字的一般方法

我一直在寻找一种比较Python中两个数字的通用方法.特别是,我想弄清楚它们是否相同.

Python中的数字类型是:

int, long, float & complex
Run Code Online (Sandbox Code Playgroud)

例如,我可以简单地说:2比较2个整数(一种数字):

a == b
Run Code Online (Sandbox Code Playgroud)

对于浮子,由于舍入精度,我们必须更加小心,但我可以在一定容差范围内对它们进行比较.

我们得到2个一般数字ab:我们如何比较它们?我正在考虑将两者都转换为复数(如果类型是,那么它将具有0个虚部int)并在该域中进行比较?

这个问题比直接比较浮点数更普遍.当然,它与这个问题有关,但它不一样.

python floating-point int type-conversion numerics

9
推荐指数
2
解决办法
1048
查看次数

如何在 Python 3 中将 --prefer-binary 与 pip 一起使用?

在 Python 2 中,我可以通过pip优先使用二进制包而不是源包来安装一组包(意思是:如果没有找到二进制则回退到源代码):

(1) pip install --prefer-binary -r requirements.txt

在 Python 3 中,我可以这样做:

(2) pip3 install --only-binary=:all: -r requirements.txt

但是(1)并不完全等于(2),因为前者说:

安装时首选二进制文件;但如果我找不到二进制选项,那么我会使用源代码。

后者说:

如果找不到二进制文件,我将失败;甚至不要从源头上尝试。

因此,从文档看来,一种解决方案可能是手动输入应考虑进行源安装的每个包 - 意思是:可以在命令行上多次提供“仅二进制”标志,因此可以处理特殊的 -像这样的情况(通过清空它,或为二进制包提供特定的包名)。这个答案在某种程度上详细说明了这种方法:Make pip download prefer to download source-distributions (not wheel)

但是,我有大量的两种类型的包,所以我需要一种像 (1) 方法这样的自动化方式。

问题:如何在 Python/pip 3 中获得与 (1) 类似的自动化行为?

解决方案:Pip 不是 Python - 将 pip 升级到 20.X 并使用--prefer-binary.

python pip python-3.x

9
推荐指数
2
解决办法
3188
查看次数

Pandas 数据框:allclose

更新:要比较“关闭”而不是“相等”,请在对“assert_frame_equal”的调用中使用“check_exact=False”,详情如下:https ://pandas.pydata.org/pandas-docs/stable/generated/pandas.testing .assert_frame_equal.html

原始问题: Pandas 数据框包含N列浮点数。

我想检查每对可能的列中的元素是否相等(因此检查 i 列中的所有元素是否与 j 列中的所有元素在某个容差范围内接近)。

我可以迭代和使用np.allclose(...),但我想知道在 Pandas 中是否有更好的(阅读:内置)方式来做到这一点,理想情况下我可以使用列标签?

我在想:df.allclose(['a', 'b', 'c'])某种东西......

python numpy dataframe pandas

6
推荐指数
0
解决办法
1104
查看次数

两个数据帧的快速减法忽略索引(Python)

如何以最快的方式减去2个忽略索引的数据帧.

例如,我想减去:

d1=
      x1
0 -3.141593
0 -3.141593
0 -3.141593
1 -2.443461
1 -2.443461
Run Code Online (Sandbox Code Playgroud)

d2 = 
      x2
1 -2.443461
2 -1.745329
3 -1.047198
4 -0.349066
2 0.349066
Run Code Online (Sandbox Code Playgroud)

我尝试过的:

我可以这样做,例如:

dsub = d1.reset_index(drop=True) - d2.reset_index(drop=True)
Run Code Online (Sandbox Code Playgroud)

但是,我想以最有效的方式进行减法.我一直在寻找答案,但我只看到了不考虑速度的解决方案.

我该如何做到这一点?


编辑根据一些答案,这里有一些时间在我的机器上运行:

对于较小的数据帧:

方法1(a和b):

a: d1.reset_index(drop=True) - d2.reset_index(drop=True)
b: d1.reset_index(drop=True).sub(d2.reset_index(drop=True))
~1024.91 usec/pass
Run Code Online (Sandbox Code Playgroud)

方法2:

d1 - d2.values
~784.79 usec/pass
Run Code Online (Sandbox Code Playgroud)

方法3:

pd.DataFrame(d1.values - d2.values, d1.index, ['x1-x2'])
~653.82 usec/pass
Run Code Online (Sandbox Code Playgroud)

对于非常大的数据帧,请参阅下面的@ MaxU答案.

python performance dataframe pandas

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