小编JAG*_*024的帖子

删除python中小于某个值的行

我觉得这个问题以前一定是有人回答的,但我找不到堆栈溢出的答案!

我有一个result看起来像这样的数据框,我想删除所有小于或等于 10 的值

>>> result
                       Name              Value      Date
189                   Sall                19.0  11/14/15
191                     Sam               10.0  11/14/15
192                 Richard               21.0  11/14/15
193                  Ingrid                4.0  11/14/15 
Run Code Online (Sandbox Code Playgroud)

此命令有效并删除10的所有值:

df2 = result[result['Value'] != 10]
Run Code Online (Sandbox Code Playgroud)

但是当我尝试添加<=限定符时,我收到错误消息 SyntaxError: invalid syntax

df3 = result[result['Value'] ! <= 10]  
Run Code Online (Sandbox Code Playgroud)

我觉得可能有一个非常简单的解决方案.提前致谢!

python row multiple-columns pandas

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

如何在seaborn分布图中填充曲线下面积

我有两个变量

x = [1.883830, 7.692308,8.791209, 9.262166]
y = [5.337520, 4.866562, 2.825746, 6.122449]
Run Code Online (Sandbox Code Playgroud)

而且我想使用包裹在matplotlib中的seaborn来拟合高斯分布.看起来这个sns.distplot函数是最好的方法,但我无法弄清楚如何填充曲线下的区域.救命?

fig, ax = plt.subplots(1)
sns.distplot(x,kde_kws={"shade":True}, kde=False, fit=stats.gamma, hist=None, color="red", label="2016", fit_kws={'color':'red'});
sns.distplot(y,kde_kws={"shade":True}, kde=False, fit=stats.gamma, hist=None, color="blue", label="2017", fit_kws={'color':'blue'})
Run Code Online (Sandbox Code Playgroud)

我认为"阴影"论点可能是争论的一部分,fit_kws但我还没有得到这个.

另一种选择是使用ax.fill()

python plot matplotlib python-3.x seaborn

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

使用groupby和pandas dataframe中的多个列从字符串数据创建条形图

我想在python中创建一个条形图,其中包含多个x类别,数据计数为"是"或"否".我已经开始使用一些代码,但我相信我正在以一种缓慢的方式获得我想要的解决方案.我可以使用seaborn,Matplotlib或pandas但不是 Bokeh 的解决方案,因为我想制作可扩展的出版品质数字.

最终我想要的是:

  • 在x轴上标有"独木舟","巡航","皮划艇"和"船"类别的条形图
  • 分组 - "颜色",所以绿色或红色
  • 显示"是"响应的比例:所以是行的数量除以"红色"和"绿色"的数量,在这种情况下是4红色和4绿色,但这可能会改变.

这是我正在使用的数据集:

import pandas as pd
data = [{'ship': 'Yes','canoe': 'Yes', 'cruise': 'Yes', 'kayak': 'No','color': 'Red'},{'ship': 'Yes', 'cruise': 'Yes', 'kayak': 'Yes','canoe': 'No','color': 'Green'},{'ship': 'Yes', 'cruise': 'Yes', 'kayak': 'No','canoe': 'No','color': 'Green'},{'ship': 'Yes', 'cruise': 'Yes', 'kayak': 'No','canoe': 'No','color': 'Red'},{'ship': 'Yes', 'cruise': 'Yes', 'kayak': 'Yes','canoe': 'No','color': 'Red'},{'ship': 'No', 'cruise': 'Yes', 'kayak': 'No','canoe': 'Yes','color': 'Green'},{'ship': 'No', 'cruise': 'No', 'kayak': 'No','canoe': 'No','color': 'Green'},{'ship': 'No', 'cruise': 'No', 'kayak': 'No','canoe': 'No','color': 'Red'}]
df = pd.DataFrame(data)
Run Code Online (Sandbox Code Playgroud)

这是我开始的:

print(df['color'].value_counts())

red …
Run Code Online (Sandbox Code Playgroud)

python plot group-by dataframe pandas

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

使用来自包 `modifiedmk` 的统计信息在 R 中创建汇总表

我正在尝试从modifiedmkR 中的包运行一个函数。

install.packages('modifiedmk')
library(modifiedmk)
Run Code Online (Sandbox Code Playgroud)

我有一个数据框 data,我使用以下内容生成:

Station <- c('APT','APT', 'APT','APT', 'APT', 'APT', 'APT','APT', 'APT','APT','APT','APT',
              'AF','AF', 'AF','AF','AF','AF','AF','AF','AF',
             'EL', 'EL', 'EL', 'EL', 'EL', 'EL', 'EL', 'EL', 'EL', 'EL', 'EL', 'EL', 'EL', 'EL', 'EL',
             'GFS', 'GFS', 'GFS', 'GFS', 'GFS', 'GFS', 'GFS', 'GFS', 'GFS', 'GFS', 'GFS', 'GFS', 'GFS', 'GFS', 'GFS', 'GFS'
              )
Rainfall <- c(375.3, 263.3, 399.2, 242.6, 847.6, 276.5, 712.8, 366.3, 188.6, 478.4, 539, 682.5,
            520.7, 1337.8, 524, 908.4,748.5,411.8, 772.4,978.5,983,
            732.4, 788.6, 567.1, 576, 931.6, 727.2, 1079.3, 902.8,493.4,  630.7, 784.1,660.2, …
Run Code Online (Sandbox Code Playgroud)

statistics pivot group-by r summary

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

将日期时间字符串转换为 Pandas 数据框中的日、月、年的新列

我是 python 新手,有一个非常简单(希望很简单!)的问题。

假设我有一个包含 3 列的数据框:时间(格式为 YYYY-MM-DDTHH:MM:SSZ)、device_id 和rain,但我需要第一列“时间”成为“的三列”日”、“月”和“年”以及时间戳中的值。

所以原始数据框看起来像这样:

     time                  device_id                              rain
     2016-12-27T00:00:00Z  9b839362-b06d-4217-96f5-f261c1ada8d6   NaN
     2016-12-28T00:00:00Z  9b839362-b06d-4217-96f5-f261c1ada8d6   0.2
     2016-12-29T00:00:00Z  9b839362-b06d-4217-96f5-f261c1ada8d6   NaN
     2016-12-30T00:00:00Z  9b839362-b06d-4217-96f5-f261c1ada8d6   NaN
     2016-12-31T00:00:00Z  9b839362-b06d-4217-96f5-f261c1ada8d6   NaN
Run Code Online (Sandbox Code Playgroud)

但我试图让数据框看起来像这样:

     day  month  year  device_id                              rain
     27   12     2016  9b839362-b06d-4217-96f5-f261c1ada8d6   NaN
     28   12     2016  9b839362-b06d-4217-96f5-f261c1ada8d6   0.2
     29   12     2016  9b839362-b06d-4217-96f5-f261c1ada8d6   NaN
     30   12     2016  9b839362-b06d-4217-96f5-f261c1ada8d6   NaN
     31   12     2016  9b839362-b06d-4217-96f5-f261c1ada8d6   NaN
Run Code Online (Sandbox Code Playgroud)

我不关心小时/秒/分钟,但需要原始时间戳中的这些值,我什至不知道从哪里开始。请帮忙!

以下是一些可重现的代码以开始使用:

>> import pandas as pd 
>> df = pd.DataFrame([['2016-12-27T00:00:00Z', '9b839362-b06d-4217-96f5-f261c1ada8d6', 'NaN']], columns=['time', 'device_id', 'rain'])
>> print df
2016-12-27T00:00:00Z  9b849362-b06d-4217-96f5-f261c1ada8d6  NaN
Run Code Online (Sandbox Code Playgroud)

python datetime multiple-columns dataframe pandas

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

如何在R中的完整数据集上创建最小边界矩形

假设我有一组这样的坐标,例如:

m <- data.frame(replicate(2,sample(0:9,20,rep=TRUE)))
Run Code Online (Sandbox Code Playgroud)

我想在所有点周围绘制一个框,以便创建一个最小边界矩形。

a <- bounding.box.xy(m)
plot(m)
par(new=T)
plot(a, main="Minimum bounding rectangle")
Run Code Online (Sandbox Code Playgroud)

但是盒子并不能解决所有问题。

我也有兴趣在这些点周围绘制标准偏差圆/椭圆,但是我不知道该功能。

在此处输入图片说明

r spatial ellipse geospatial

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

如何在python中绘制同一图形上的多个密度图

我知道这最终会成为一个非常混乱的情节,但我很想知道最有效的方法是什么.我在csv文件中有一些看起来像这样的数据:

    ROI          Band   Min         Max         Mean        Stdev
1   red_2        Band 1 0.032262    0.124425    0.078073    0.028031
2   red_2        Band 2 0.021072    0.064156    0.037923    0.012178
3   red_2        Band 3 0.013404    0.066043    0.036316    0.014787
4   red_2        Band 4 0.005162    0.055781    0.015526    0.013255
5   red_3        Band 1 0.037488    0.10783     0.057892    0.018964
6   red_3        Band 2 0.02814     0.07237     0.04534     0.014507
7   red_3        Band 3 0.01496     0.112973    0.032751    0.026575
8   red_3        Band 4 0.006566    0.029133    0.018201    0.006897
9   red_4        Band 1 0.022841    0.148666    0.065844    0.0336
10 …
Run Code Online (Sandbox Code Playgroud)

python plot matplotlib pandas probability-density

3
推荐指数
2
解决办法
8293
查看次数

使用python从指数分布和模型生成随机数

我的目标是创建一个随机点数据集,其直方图看起来像一个指数衰减函数,然后通过这些点绘制指数衰减函数.

首先,我试图从指数分布中创建一系列随机数(但是没有成功,因为这些应该是点,而不是数字).

from pylab import *
from scipy.optimize import curve_fit
import random
import numpy as np
import pandas as pd

testx = pd.DataFrame(range(10)).astype(float)
testx = testx[0]

for i in range(1,11):
   x = random.expovariate(15) # rate = 15 arrivals per second
   data[i] = [x]

testy = pd.DataFrame(data).T.astype(float)
testy = testy[0]; testy

plot(testx, testy, 'ko')
Run Code Online (Sandbox Code Playgroud)

结果看起来像这样.

在此输入图像描述

然后我定义了一个函数来绘制一条直线:

def func(x, a, e):
return a*np.exp(-a*x)+e

popt, pcov = curve_fit(f=func, xdata=testx, ydata=testy, p0 = None, sigma = None) 

print popt # parameters
print pcov # …
Run Code Online (Sandbox Code Playgroud)

python random numpy curve-fitting pandas

3
推荐指数
2
解决办法
6588
查看次数

使用 pandas 融化列中不均匀的数据并忽略 NaN

一定有一种优雅的方法来做到这一点,但我还没有找到。我有一个大数据框,看起来像这样:

df
    Name    0           1           2        3      4   
1   apple   2016 W1     NaN         NaN      NaN    NaN 
2   orange  2016 W1     2017 W2     NaN      NaN    NaN 
3   banana  2016 W2     2017 W3     NaN      NaN    NaN  
4   pear    2016 W3     2016 W4     2016 W5  NaN    NaN
6   melon   2016 W2     2016 W4     2017 W5  2017 W6 2017 W7
Run Code Online (Sandbox Code Playgroud)

我想融合数据,使得只有两列nameweek。所以结果应该是这样的:

df_result

    Name    week       
    apple   2016 W1     
    orange  2016 W1
    orange  2017 W2     
    banana  2016 W2 
    banana  2017 W3
    pear …
Run Code Online (Sandbox Code Playgroud)

python dataframe melt pandas

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

在单个Pandas Dataframe列中将字符串与数字分开,并创建两个新列

我很震惊,以前没有人在SO上问过这个问题。因为这看起来像是一个简单的问题。

我在pandas Dataframe中只有一列,看起来像这样:

df = pd.DataFrame(data=[['APPLEGATE WINERY    455.292049'],['AMAND FARM  849.827192'],['COBB FARM ST    1039.49357'],['DIRIGIA 2048.947284']], columns = ['Col1'])

    Col1
0   APPLEGATE WINERY 455.292049
1   AMAND FARM 849.827192
2   COBB FARM ST 1039.49357
3   DIRIGIA 2048.947284
Run Code Online (Sandbox Code Playgroud)

我只想将字符串字符与数字分开,所以结果应如下所示

Name                Area
APPLEGATE WINERY    455.292049
AMAND FARM          849.827192
COBB FARM ST        1039.49357
DIRIGIA             2048.947284
Run Code Online (Sandbox Code Playgroud)

我知道我可以在python中使用正则表达式,但是这似乎有点矫kill过,因为a)只是数据类型的分离,b)字符串的长度不同,数字的位数不同。

因此,一个结果将开始如下所示:

df['Name'] = df.Col1.str.extract('([A-Z]\w{0,})', expand=True)
df['Area'] = df.Col1.str.extract('(\d)', expand=True)
Run Code Online (Sandbox Code Playgroud)

但是,有没有一种不错的,干净的解决方案可以解决此问题,而又不必经历使用RegEx并将代码中的字符串与数字分成两列的麻烦?

python extract dataframe pandas

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