众所周知,由于舍入和精度问题,比较浮点数是否相等.
例如:https: //randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/
在Python中处理这个问题的推荐方法是什么?
当然,这个地方有一个标准的库函数吗?
我使用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?有没有人经历过这个?
这是我遇到错误的方式:
df.loc[a_list][df.a_col.isnull()]
Run Code Online (Sandbox Code Playgroud)
类型a_list
为Int64Index
,它包含行索引列表.所有这些行索引都属于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索引
这个错误消息的含义是什么?它会影响它返回的结果吗?
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
我该如何解决 ?
我试图将我的轴的格式更改为在Python 2.7下运行的Matplotlib中以逗号分隔,但我无法这样做.
我怀疑我需要使用FuncFormatter,但我有点不知所措.
有人可以帮忙吗?
我有一个大型数据帧(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]
),但我通常很想知道是否可以创建数据帧的视图.
编辑:相关问题:
对于数据框中的给定数据集,当我应用该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
. …
我正在尝试研究如何使用groupby
pandas中的函数来计算每年使用给定的是/否标准的值的比例.
例如,我有一个名为的数据框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%.
任何人都可以建议如何做到这一点?
当我在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吗?谢谢 !
我有一个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 ×9
pandas ×7
dataframe ×1
group-by ×1
list ×1
matplotlib ×1
merge ×1
percentile ×1
pivot ×1
pytest ×1
unique ×1
unit-testing ×1