小编ire*_*ene的帖子

如何将计数数据框转换为概率密度函数

假设我对整数有以下观察结果:

df = pd.DataFrame({'observed_scores': [100, 100, 90, 85, 100, ...]})
Run Code Online (Sandbox Code Playgroud)

我知道这可以用作制作密度图的输入:

df['observed_scores'].plot.density()
Run Code Online (Sandbox Code Playgroud)

但假设我拥有的是一个计数表:

df = pd.DataFrame({'observed_scores': [100, 95, 90, 85, ...], 'counts': [1534, 1399, 3421, 8764, ...})
Run Code Online (Sandbox Code Playgroud)

这比完整observed_scores系列更便宜(我有很多观察)。

我知道可以使用计数绘制直方图,但如何绘制密度图?如果可能,是否可以在不必将计数表拆开/拆开成数千行的情况下完成?

python pandas scikit-learn

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

Matplotlib 注释在对数刻度上不起作用?

我正在为不同的数据集制作对数图,并且需要包含最佳拟合线方程。我知道应该在图中的哪个位置放置方程,但是由于数据集具有非常不同的值,我想在注释中使用相对坐标。(否则,注释将针对每个数据集移动。)

我知道 matplotlib 的 annotate() 函数,我知道我可以使用 textcoords='axes fraction' 来启用相对坐标。当我按常规比例绘制数据时,它会起作用。但随后我将至少一个比例更改为记录,并且注释消失了。我没有收到错误消息。

这是我的代码:

plt.clf()
samplevalues = [100,1000,5000,10^4]
ax = plt.subplot(111)
ax.plot(samplevalues,samplevalues,'o',color='black')
ax.annotate('hi',(0.5,0.5), textcoords='axes fraction')
ax.set_xscale('log')
ax.set_yscale('log')
plt.show()
Run Code Online (Sandbox Code Playgroud)

如果我注释掉ax.set_xcale('log')and ax.set_ycale('log'),注释就会出现在图的中间(它应该在的地方)。否则,它不会出现。

在此先感谢您的帮助!

annotate matplotlib

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

Welch在Python中的方差分析

我不确定stackoverflow是否是最好的论坛,但是无论如何...

Scipy使用stats.f_oneway假设均等方差来实现ANOVA 。它在文档中说,如果方差不相等,则可以考虑使用Kruskal-Wallis检验。

但是,我想要的是Welch的ANOVA。Scipy有Welch t检验,但是如果我有两个以上的小组,那么这当然不起作用。

我发现有趣的是,scipy曾经具有stats.oneway允许相等方差设置的功能。但是,它已被弃用

有没有一种简单的方法可以在Python中实现Welch的ANOVA?

python scipy

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

如何在pandas中进行左外连接排除

我有两个数据帧,A和B,我希望得到A中但不是B中的数据帧,就像左下角的那个.

左上角的那个

Dataframe A有列['a','b' + others],B有列['a','b' + others].没有NaN值.我尝试了以下方法:

1.

dfm = dfA.merge(dfB, on=['a','b'])
dfe = dfA[(~dfA['a'].isin(dfm['a']) | (~dfA['b'].isin(dfm['b'])
Run Code Online (Sandbox Code Playgroud)

2.

dfm = dfA.merge(dfB, on=['a','b'])
dfe = dfA[(~dfA['a'].isin(dfm['a']) & (~dfA['b'].isin(dfm['b'])
Run Code Online (Sandbox Code Playgroud)

3.

dfe = dfA[(~dfA['a'].isin(dfB['a']) | (~dfA['b'].isin(dfB['b'])
Run Code Online (Sandbox Code Playgroud)

4.

dfe = dfA[(~dfA['a'].isin(dfB['a']) & (~dfA['b'].isin(dfB['b'])
Run Code Online (Sandbox Code Playgroud)

但是当我len(dfm)len(dfe)他们不总结到dfA(它由几个数字是关闭).我试过在虚拟案例和#1工作中这样做,所以也许我的数据集可能有一些我无法重现的特性.

这样做的正确方法是什么?

python pandas

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

使用python从beta分发中获取分位数

我需要获得β分布的第N个分位数,或者相当于95%或99%的百分位数.这在Maple中更容易,它允许符号输入 - 但是如何在Python中完成?

我搜索了stackoverflow,似乎人们常常只关注正态分布.

谢谢!

python numpy scipy percentile quantile

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

pandas比argsort更快的方式在数据帧子集中排名

我有这个数据帧:

user1    user2   quantity
--------------------------
Alice    Carol     10
Alice    Bob       5
Bob      Dan       2
Carol    Eve       7
Carol    Dan      100
Run Code Online (Sandbox Code Playgroud)

我想按用户1的数量降序对每一行按降序排列.例如:

user1    user2   quantity   order
----------------------------------
Alice    Carol     10       1
Alice    Bob       5        2
Bob      Dan       2        1
Carol    Eve       7        2
Carol    Dan      100       1
Run Code Online (Sandbox Code Playgroud)

目前,我的代码是这样的:

users = df['user1'].unique()
for user in users:
    cond = (df['user1'] == user)
    sort_ser = df[cond]['quantity'].values.argsort()[::-1] # descending
    df.loc[cond, 'order'] = sort_ser + 1
Run Code Online (Sandbox Code Playgroud)

它适用于小型数据帧.但如果它适用于大型的那么它会很慢.我认为这是因为(1)我基本上按用户运行它,(2)正在发生几种情况.有更快的方法吗?

python sorting pandas

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

将 groupby 值转换为数组列表

这是一个示例数据框:

label  data
a      1.09
b      2.1
a      5.0
b      2.0
c      1.9
Run Code Online (Sandbox Code Playgroud)

我想要的是

arr = [[1.09, 5.0], [2.1, 2.0],[1.9]]
Run Code Online (Sandbox Code Playgroud)

最好是一个 numpy 数组列表。

我知道这df.groupby.groups.keys()给了我列表['a','b','c'],并df.groupby.groups.values()给了我类似的东西arr,但作为一个Int64Index对象。但是,我试过了df.loc[df.groupby.groups.values()]['label'],并没有得到想要的结果。

我该如何实现?谢谢!

python pandas

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

在 Python 的“with”语句中使用 if-else

我想打开一个可能已压缩或未压缩的文件。要打开文件,我使用

with open(myfile, 'r') as f:
    some_func(f) # arbitrary function
Run Code Online (Sandbox Code Playgroud)

或者

import gzip
with gzip.open(myfile, 'r') as f:
    some_func(f)
Run Code Online (Sandbox Code Playgroud)

我想检查是否myfilegz扩展名,然后从那里决定with使用哪个语句。这是我所拥有的:

# myfile_gzipped is a Boolean variable that tells me whether it's gzipped or not
if myfile_gzipped:
    with gzip.open(myfile, 'rb') as f:
       some_func(f)
else:
    with open(myfile, 'r') as f:
       some_func(f)
Run Code Online (Sandbox Code Playgroud)

我应该如何处理而不需要重复some_func(f)

python

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

箱线图中组之间的自定义间距

stackoverflow 上有一个线程有完全相同的问题,但它是针对 Matlab 的。但是,我正在使用 matplotlib,但我不知道如何继续。基本上,我有很多箱线图,但我想像这样将它们分开(从上面的线程中无耻地复制):

在此输入图像描述

我该怎么办?有人建议在两组之间放置一个不可见的箱线图,但我不知道如何使刻度(不仅仅是标签)仅针对该值消失。

python matplotlib

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

提取熊猫中特定列名的值,如另一列中所列

标题不太清楚,但这里有一个例子。假设我有:

person  apple  orange  type
Alice   11     23      apple
Bob     14     20      orange
Run Code Online (Sandbox Code Playgroud)

我想得到这个专栏

person new_col
Alice  11
Bob    20
Run Code Online (Sandbox Code Playgroud)

所以我们得到“爱丽丝”行的“苹果”列和“鲍勃”行的“橙色”列。

我在想 iterrows,但这会很慢。有没有更快的方法来做到这一点?

python indexing dataframe pandas

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