小编Col*_*in9的帖子

如何使用Pytest测试生成随机样本的函数?

假设我在使用 pytest 的 test_func.py 脚本中使用 np.random.normal() 生成一些输入 numpy 数组数据。

现在我想调用我正在测试的 func.py 函数。我怎样才能获得可测试的结果?如果我在 test_func.py 脚本中设置种子,它不会对应于 func.py 函数中生成的随机数据,对吗?

我希望能够在 test_func.py 中创建一些参考数据,然后测试 func.py 脚本中生成的随机性是否与我创建的参考数据相当(因此,测试 func.py 函数的随机性和功能) 。

谢谢你!

编辑:这是一些示例代码来描述我的过程:

# func.py
import numpy as np
# I send in a numpy array signal, generate noise, and append noise to signal
def generate_random_noise(signal):
    noise = np.random.normal(0, 5, signal.shape)
    signal_w_noise = signal + noise
    return signal_w_noise


# test_func.py
import pytest
import numpy as np
import func
def test_generate_random_noise():
    # create reference signal
    # ...
    np.random.seed(5) …
Run Code Online (Sandbox Code Playgroud)

random numpy pytest python-3.x random-seed

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

使用 Pandas Group By 和 .sum() 获得 % Rate

我想根据.groupby()in获得一些百分比率pandas。我的目标是取一个指标列Ind,得到当年 A(分子)的比率除以总数(A+B)

示例数据:

import pandas as pd
import numpy as np
df: pd.DataFrame = pd.DataFrame([['2011','A',1,2,3], ['2011','B',4,5,6],['2012','A',15,20,4],['2012','B',17,12,12]], columns=["Year","Ind","X", "Y", "Z"])
print(df)
   Year Ind   X   Y   Z
0  2011   A   1   2   3
1  2011   B   4   5   6
2  2012   A  15  20   4
3  2012   B  17  12  12
Run Code Online (Sandbox Code Playgroud)

2011 年的示例:XRate将总结 X 的 A 指标(即 1)并除以总数 (A+B),即 5,因此我将得到 0.20 的 Xrate。

我想对所有 X、Y、Z 列执行此操作以获得费率。我试过做 lambda 应用,但不能完全得到想要的结果。

预期结果:

   Year XRate YRate  ZRate
0 …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas pandas-groupby

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

Plotly:将自定义文本添加到 px.Treemap 视觉对象

我正在使用plotlyexpress 来制作树形图。我想用标签以及父级的百分比和色阶中使用的值来注释我的数据扇区。

如何添加注释来显示color树形图参数中使用的实际值?在下面的示例代码中,我想为每个部门注释“薪水”。我还想添加一些额外的文字来描述每个部门的数字。例如,“总计百分比:”附加到百分比值以获取更多文本描述将非常适合帮助对树形图进行更多注释。任何添加自定义文本的方法都是有益的。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import plotly.express as px

d = {'count': [1,1,1,2,2,3,3,3,4], 
     'name': ['bob','bob','bob','shelby','shelby','jordan','jordan','jordan','jeff'],
     'type': ['type1','type2','type4','type1','type6','type5','type8','type2',None],
     'salary':[1000,2000,3000,10000,15000,30000,100000,50000,25000]}
df = pd.DataFrame(data=d)

# group data and aggregate
df_plot = df.groupby(['name','type'])[['salary','count']].sum().reset_index()

avg_salary = df_plot['salary'].sum()/df_plot['count'].sum()

# plot treemap
fig = px.treemap(df_plot,
                 values='count',
                 color='salary',
                 color_continuous_scale='balance',
                 color_continuous_midpoint=avg_salary,
                 path=['type','name'])
fig.data[0].textinfo = 'label+value+percent parent'
fig.show()
Run Code Online (Sandbox Code Playgroud)

python treemap pandas plotly

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

确定 Golang 中 CSV 行有多少字节

我有一个test.csv可以逐行读取并确定每行有多少字节的方法。

这应该低于 37 个字节,因为我在 Windows 上,前两行\r\n总共添加了 4 个字节。

foo,bar,baz
100,200,300
400,500,600
Run Code Online (Sandbox Code Playgroud)

我想简单地使用 确定每行有多少字节csv.NewReader()\n但是,我知道 csv.Reader在下面的代码中进行字节计数时不会计算每行中的逗号和。

我是否应该为每行中的逗号数 + 行数添加一些数学运算,为 -1 添加 2 个字节,\r\n为最后一行添加一个字节,因为它没有 \r\n?这感觉有点老套,所以我宁愿看看是否有更好的解决方案来解决我的字节计数问题。

我的代码:

package main

import (
    "encoding/csv"
    "fmt"
    "io"
    "log"
    "os"
)

func main() {
    file, err := os.Open("test.csv")
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()

    fileInfo, err := file.Stat()
    if err != nil {
        log.Fatal(err)
    }
    fmt.Printf("file total bytes is %d\n", fileInfo.Size())

    // init reader
    reader …
Run Code Online (Sandbox Code Playgroud)

csv byte go

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

在用户定义的函数中使用Dplyr汇总数据然后绘制它

我试图在函数中使用dplyr创建一个用户定义的函数,我可以传递多个参数来使用dplyr汇总数据,然后用ggplot绘制它.

这是一些示例数据以及我正在尝试使用dplyr然后绘制的内容

df <-data.frame(Year = c("2006", "2006", "2006", "2007", "2007", "2007", "2008", "2009", "2010", "2010", "2009", "2009"), JudicialOrientation = c("Defense", "Plaintiff", "Plaintiff", "Neutral", "Defense", "Plaintiff", "Defense", "Plaintiff", "Neutral", "Neutral", "Plaintiff","Defense"), Loss = c(100000, 100, 2500, 100000, 25000, 0, 7500, 5200, 900, 100, 0, 50))

df1 <- df %>%
  group_by(Year, JudicialOrientation) %>%
  summarise(MeanLoss =mean(Loss))

ggplot(df1, aes(x = JudicialOrientation, y = MeanLoss, color = Year, group  =Year)) + 
  geom_line() +
  geom_point()
Run Code Online (Sandbox Code Playgroud)

我现在正在尝试将其复制到用户函数中,以便我可以传递不同的变量来获得类似的结果.

这是我到目前为止的尝试:

ConsistencyPlot <- function(df,var1,timevar,lossvar){

  df1 <- df %>%
    group_by_(df[timevar], df[var1]) …
Run Code Online (Sandbox Code Playgroud)

aggregate r ggplot2 dplyr

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

对按公共键分组的 n 行数据使用 string_agg()

我想string_agg(column_name,',')在 SQL 结果集中的列中使用一些 ID。我将按单个键进行分组,但也想确保每个分组集都会导致 n 行被输入到函数string_agg(column_name,',')

例子:

create table #temp (first_name varchar(20), data_id char(3))
insert into #temp (first_name, data_id) values('jeff', 'XX1')
insert into #temp (first_name, data_id) values('jeff', 'X23')
insert into #temp (first_name, data_id) values('jeff', 'X87')
insert into #temp (first_name, data_id) values('jeff', 'X09')
insert into #temp (first_name, data_id) values('jeff', 'X15')

insert into #temp (first_name, data_id) values('bob', 'X76')
insert into #temp (first_name, data_id) values('bob', 'X17')
insert into #temp (first_name, data_id) values('bob', 'X98')
insert into #temp (first_name, data_id) values('bob', …
Run Code Online (Sandbox Code Playgroud)

sql sql-server common-table-expression recursive-cte

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

如何在SQL Server中使用FOR XML PATH删除前导空间

我正在尝试对一些数据进行字符串汇总,并遇到了问题。此数据将用于邮件合并。

在将数据聚合到单个列中,然后通过邮件合并将其复制到电子邮件中之后,结果看起来像

Owner: Me, Pet: Dog, Other Pet: Cat, Pet2: Dog2, OtherPet2: Cat2
 Owner: Me, Pet: Dog, Other Pet: Cat, Pet2: Dog2, OtherPet2: Cat2
 Owner: Me, Pet: Dog, Other Pet: Cat, Pet2: Dog2, OtherPet2: Cat2
 Owner: Me, Pet: Dog, Other Pet: Cat, Pet2: Dog2, OtherPet2: Cat2
Run Code Online (Sandbox Code Playgroud)

我希望每一行都有相同的缩进,但是我目前无法通过尝试许多操作来实现。

我的可复制代码在这里:

DROP TABLE #Temp1
DROP TABLE #temp2
CREATE TABLE #Temp1 (Owner varchar(10), val1 varchar(10), val2 varchar(10), val3 varchar(10), val4 varchar(10))

INSERT INTO #Temp1 values('Me','Dog','Cat', 'Dog2', 'Cat2')
INSERT INTO #Temp1 values('You','Dog','Cat', 'Dog2', 'Cat2')
INSERT …
Run Code Online (Sandbox Code Playgroud)

xml sql t-sql sql-server string-concatenation

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