小编Ian*_*anS的帖子

在Python中比较浮点数几乎相等的最佳方法是什么?

众所周知,由于舍入和精度问题,比较浮点数是否相等.

例如:https: //randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/

在Python中处理这个问题的推荐方法是什么?

当然,这个地方有一个标准的库函数吗?

python floating-point

291
推荐指数
10
解决办法
19万
查看次数

pytest的问题'导入错误:没有名为YadaYadaYada的模块'

我使用easy_install在mac上安装pytest并开始为具有文件结构的项目编写测试,如下所示:

repo/
repo/app.py
repo/settings.py
repo/models.py
repo/tests/
repo/tests/test_app.py
Run Code Online (Sandbox Code Playgroud)

py.test在repo目录中运行时,一切都按预期运行

但是当我在linux或windows上尝试相同的东西时(两者都有pytest 2.2.3),每当它从我的应用程序路径首次导入某些东西时就会吠叫.比如说from app import some_def_in_app

我是否需要编辑我的PATH才能在这些系统上运行py.test?有没有人经历过这个?

python unit-testing pytest

194
推荐指数
12
解决办法
14万
查看次数

布尔系列键将重新编制索引以匹配DataFrame索引

这是我遇到错误的方式:

df.loc[a_list][df.a_col.isnull()]
Run Code Online (Sandbox Code Playgroud)

类型a_listInt64Index,它包含行索引列表.所有这些行索引都属于df.

df.a_col.isnull()部分是我需要过滤的条件.

如果我单独执行以下命令,我不会收到任何警告:

df.loc[a_list]
df[df.a_col.isnull()]
Run Code Online (Sandbox Code Playgroud)

但如果我把它们放在一起df.loc[a_list][df.a_col.isnull()],我会得到警告信息(但我可以看到结果):

布尔系列键将重新编制索引以匹配DataFrame索引

这个错误消息的含义是什么?它会影响它返回的结果吗?

python pandas

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

当NaN存在于数据帧中时使用astype时出错

df
     A     B  
0   a=10   b=20.10
1   a=20   NaN
2   NaN    b=30.10
3   a=40   b=40.10
Run Code Online (Sandbox Code Playgroud)

我试过了 :

df['A'] = df['A'].str.extract('(\d+)').astype(int)
df['B'] = df['B'].str.extract('(\d+)').astype(float)
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

ValueError:无法将float NaN转换为整数

和:

AttributeError:只能使用带有字符串值的.str访问器,它在pandas中使用np.object_ dtype

我该如何解决 ?

pandas

34
推荐指数
2
解决办法
5万
查看次数

Matplotlib:轴的逗号分隔数字格式

我试图将我的轴的格式更改为在Python 2.7下运行的Matplotlib中以逗号分隔,但我无法这样做.

我怀疑我需要使用FuncFormatter,但我有点不知所措.

有人可以帮忙吗?

python matplotlib

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

如何在pandas中创建数据框视图?

我有一个大型数据帧(10米行,40列,7GB内存).我想创建一个视图,以便为表达复杂的视图创建一个简写名称,而不向内存使用添加另外2-4 GB.换句话说,我宁愿输入:

df2
Run Code Online (Sandbox Code Playgroud)

比:

df.loc[complicated_condition, some_columns]
Run Code Online (Sandbox Code Playgroud)

文档指出,虽然使用.loc确保设置值修改原始数据帧,但仍无法保证返回的对象.loc是视图还是副本.

我知道我可以将条件和列列表分配给变量(例如df.loc[cond, cols]),但我通常很想知道是否可以创建数据帧的视图.


编辑:相关问题:

python pandas

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

Python Pandas - 如何通过describe函数计算25百分位数

对于数据框中的给定数据集,当我应用该describe函数时,我得到的基本统计数据包括min,max,25%,50%等.

例如:

data_1 = pd.DataFrame({'One':[4,6,8,10]},columns=['One'])
data_1.describe()
Run Code Online (Sandbox Code Playgroud)

输出是:

        One
count   4.000000
mean    7.000000
std     2.581989
min     4.000000
25%     5.500000
50%     7.000000
75%     8.500000
max     10.000000
Run Code Online (Sandbox Code Playgroud)

我的问题是:计算25%的数学公式什么?

1)根据我所知,它是:

formula = percentile * n (n is number of values)
Run Code Online (Sandbox Code Playgroud)

在这种情况下:

25/100 * 4 = 1
Run Code Online (Sandbox Code Playgroud)

所以第一个位置是4号,但根据描述功能5.5.

2)另一个例子说 - 如果你得到一个整数然后取4和6的平均值 - 这将是5 - 仍然与5.5描述给出的不匹配.

3)另一个教程说 - 你取两个数字之间的差异 - 乘以25%并加上较低的数字:

25/100 * (6-4) = 1/4*2 = 0.5
Run Code Online (Sandbox Code Playgroud)

将其添加到较低的数字: 4 + 0.5 = 4.5

仍然没有得到5.5. …

python percentile pandas

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

如何在pandas中使用groupby根据另一列中的条件计算百分比/比例总数

我正在尝试研究如何使用groupbypandas中的函数来计算每年使用给定的是/否标准的值的比例.

例如,我有一个名为的数据框names:

  Name  Number  Year   Sex Criteria
0  name1     789  1998  Male      N
1  name1     688  1999  Male      N
2  name1     639  2000  Male      N
3  name2     551  1998  Male      Y
4  name2     499  1999  Male      Y
Run Code Online (Sandbox Code Playgroud)

我可以用

namesgrouped = names.groupby(["Sex", "Year", "Criteria"]).sum()
Run Code Online (Sandbox Code Playgroud)

要得到:

                   Number
Sex    Year      Criteria
Male   1998 N        14507
            Y         2308
       1999 N        14119
            Y         2331
Run Code Online (Sandbox Code Playgroud)

等等.我希望"数字标准"列显示每个性别和年份总数的百分比 - 因此,除了1998年以上的N = 14507和Y = 2308,我有N = 86.27%和Y = 13.73%.

任何人都可以建议如何做到这一点?

python pivot group-by dataframe pandas

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

关于Pandas Dataframe的Kurtosis会起作用

当我在pandas datafame上应用kurtosis函数时,我总是得到以下错误:

AttributeError:无法访问'DataFrameGroupBy'对象的可调用属性'kurt',尝试使用'apply'方法

以下示例代码适用于所有其他统计函数(mean(),skew(),...),但不适用于峰度.

df = pd.DataFrame([[0,1,1,0,0,1],[0,1,2,4,5]]).T
df.columns = ['a','b']
df.groupby('a').kurt()
Run Code Online (Sandbox Code Playgroud)

知道如何在groupby之后应用kurtosis吗?谢谢 !

python pandas

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

Python Pandas:如何将列中的所有列表编译为一个唯一列表

我有一个pandas数据帧如下:

在此输入图像描述

如何将所有列表(在'val'列中)组合成一个唯一的列表(set),例如[val1, val2, val33, val9, val6, val7]

我可以使用以下代码解决这个问题.我想知道是否有更简单的方法从列中获取所有唯一值而不迭代数据帧行?

def_contributors=[]
for index, row in df.iterrows():
    contri = ast.literal_eval(row['val'])
    def_contributors.extend(contri)
def_contributors = list(set(def_contributors))
Run Code Online (Sandbox Code Playgroud)

python merge list unique pandas

7
推荐指数
2
解决办法
5247
查看次数