小编sac*_*cuL的帖子

python中的分位数函数是否忽略NaN?

我有一个 dfAB

import pandas as pd
import random

A = [ random.randint(0,100) for i in range(10) ]
B = [ random.randint(0,100) for i in range(10) ]

dfAB = pd.DataFrame({ 'A': A, 'B': B })
dfAB
Run Code Online (Sandbox Code Playgroud)

我们可以采用分位数函数,因为我想知道列的第 75 个百分位数:

dfAB.quantile(0.75)
Run Code Online (Sandbox Code Playgroud)

但是现在说我在 dfAB 中放入了一些 NaN 并重新执行该函数,显然它是不同的:

dfAB.loc[5:8]=np.nan
dfAB.quantile(0.75)
Run Code Online (Sandbox Code Playgroud)

基本上,当我计算dfAB的平均值时,我通过skipna忽略Na,因为我不希望它们影响我的统计数据(我的代码中有很多,故意的,obv使它们为零没有帮助)

dfAB.mean(skipna=True)
Run Code Online (Sandbox Code Playgroud)

因此,我得到的是分位数函数是否/如何解决 NaN?

python quantile pandas

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

使用融化后,分类dtype会发生变化

在回答这个问题时,我发现在使用meltpandas数据帧之后,以前是有序分类dtype的列变为了object.这是预期的行为吗?

注意:不寻找解决方案,只是想知道这种行为是否有任何原因,或者它是否不是预期的行为.

例:

使用以下数据框df:

  Cat  L_1  L_2  L_3
0   A    1    2    3
1   B    4    5    6
2   C    7    8    9

df['Cat'] = pd.Categorical(df['Cat'], categories = ['C','A','B'], ordered=True)

# As you can see `Cat` is a category
>>> df.dtypes
Cat    category
L_1       int64
L_2       int64
L_3       int64
dtype: object

melted = df.melt('Cat')

>>> melted
  Cat variable  value
0   A      L_1      1
1   B      L_1      4
2   C      L_1      7
3 …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

如何告诉flake8忽略评论

我在emacs中使用flake8来清理我的python代码。我的评论被标记为错误(E501 line too long (x > 79 characters)),这很烦人。我想知道是否有人知道请flake8忽略单行和多行注释,但是当我的非注释行太长时仍让我知道吗?

提前致谢!

python pep8 flake8

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

np.lexsort 背后的排序逻辑是什么?

这个功能如何运作?

import numpy as np
first_names = (5,5,5)
last_names = (3,1,2)
x = np.lexsort((first_names, last_names))
print(x)
Run Code Online (Sandbox Code Playgroud)

它给出输出 [1 2 0] 。我假设这两个列表是按变量last_names 排序的。如果是这样,数字2怎么会有索引0。2在1和3之间,所以我不明白这种排序是如何工作的。请解释。

python numpy

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

无法根据规则“安全”将数组数据从 dtype('float64') 转换为 dtype('int32')

我有一个像

result = np.array([[[289, 354, 331],
                    [291, 206,  66],
                    [242,  70, 256]],

                   [[210, 389, 342],
                    [273, 454, 218],
                    [255,  87, 256]],

                   [[127, 342, 173],
                    [450, 395, 147],
                    [223, 228, 401]]])
Run Code Online (Sandbox Code Playgroud)

如果一个元素大于 255,我试图屏蔽数组。即我假设它的范围是 0-1024 并将我的值除以 4

result = np.putmask(result, result > 255, result/4)
Run Code Online (Sandbox Code Playgroud)

注意:结果是之前的 3D 数组。我收到此错误

TypeError: Cannot cast array data from dtype('float64') to dtype('int32') according to the rule 'safe'
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?提前致谢

python numpy

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

如何从我创建的函数创建循环和新数据集?

我有这个房地产数据:

neighborhood  type_property  type_negotiation  price
Smallville       house           rent        2000
Oakville       apartment       for sale      100000
King Bay         house         for sale      250000
...
Run Code Online (Sandbox Code Playgroud)

我创建了一个函数,通过您输入的邻域对这个大数据集进行排序,如果它是一个待售房屋,然后返回这些房屋的第10和第90百分位数和数量.我在下面有这个:

def foo(string):
    a = df[(df.type_negotiation == 'forsale')&(df.type_property == 'house')&(df.neighborhood == string)]
    b = pd.DataFrame([[a.price.quantile(0.1), a.price.quantile(0.9), len(a.index)]],
                     columns=('tenthpercentile', 'ninetiethpercentile', 'Quantity'))
    return b

print(foo('KingBay'))



  tenthpercentile  ninetiethpercentile  Quantity
0         250000.0             250000.0         1
Run Code Online (Sandbox Code Playgroud)

我想编写一个循环来为我所拥有的邻域列表执行此操作,然后在一个帧中编译新数据中的每个返回.看起来像这样:

          tenthpercentile  ninetiethpercentile  Quantity
King Bay         250000.0             250000.0         1
Smallville        99000.0             120000.0         8
Oakville          45000.0             160000.0         6
Run Code Online (Sandbox Code Playgroud)

先感谢您.

python loops function dataframe pandas

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

使用 Pandas .groupby 时,为什么使用 .agg 而不是直接使用函数,例如 .sum()

在 Python 中,为了按组获取摘要,我使用groupby().agg(fx()); 例如groupby('variable').agg('sum')。这和直接使用该函数有什么区别,例如;groupby('variable').sum()

python pandas pandas-groupby

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

Spark 数据框不添加具有空值的列

我正在尝试通过在我的数据框中添加两个现有列来创建一个新列。

原始数据框

???????????????
? cola ? colb ?
???????????????
? 1    ? 1    ?
? null ? 3    ?
? 2    ? null ?
? 4    ? 2    ?
???????????????
Run Code Online (Sandbox Code Playgroud)

派生列的预期输出

??????????????????????
? cola ? colb ? colc ?
??????????????????????
? 1    ? 1    ?    2 ?
? null ? 3    ?    3 ?
? 2    ? null ?    2 ?
? 4    ? 2    ?    6 ?
??????????????????????
Run Code Online (Sandbox Code Playgroud)

当我使用 df = df.withColumn('colc',df.cola+df.colb) 时,它不会添加具有空值的列。

我得到的输出是:

??????????????????????
? cola ? colb …
Run Code Online (Sandbox Code Playgroud)

python apache-spark pyspark

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

Python 3.x 在矩阵上获取奇数列

我正在使用 python 3.7,我想获取矩阵的所有奇数列。

举个例子,我现在有一个这种风格的 4x4 矩阵。

[[0, 9, 1, 6], [0, 3, 1, 5], [0, 2, 1, 7], [0, 6, 1, 2]]
Run Code Online (Sandbox Code Playgroud)

那是...

0 9 1 6
0 3 1 5
0 2 1 7
0 6 1 2
Run Code Online (Sandbox Code Playgroud)

我想得到:

9 6
3 5
2 7
6 2
Run Code Online (Sandbox Code Playgroud)

矩阵的数量和大小会发生变化,但结构将始终不变

[[0, (int), 1, (int), 2...], [0, (int), 1, (int), 2 ...], [0, (int), 1, (int), 2...], [0, (int), 1, (int), 2...], ...]
Run Code Online (Sandbox Code Playgroud)

要获得我可以做的行[:: 2],但是这个绝妙的解决方案现在对我不起作用。我尝试使用以下方法访问矩阵:

for i in matrix:
    for …
Run Code Online (Sandbox Code Playgroud)

python list python-3.x

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

如何计算数组python中连续出现的值的次数?

我有一个元素数组x=[9,2,2,2,2,3,4,4,55,55,6,2,2,2,7,0,0],我想知道一个值在这个数组中连续显示多少次,使用python语言.预期结果应该是:a=[1,4,1,2,2,1,3,1,2]

以下代码显示了x中的重复数字

x=[9,2,2,2,2,3,4,4,55,55,6,2,2,2,7,0,0]
def times_so_far(ls):
    out = [0]*len(ls)
    for i in range(len(ls)):
        out[i] = ls[:i].count(ls[i]) 
    return out
print(times_so_far(x))
Run Code Online (Sandbox Code Playgroud)

python list duplicates

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