小编Tch*_*hke的帖子

创建一个pandas计数数据框

我想创建一个包含两列的pandas数据帧,第一列是我的一列的唯一值,第二列是唯一值的计数.

我已经看到很多帖子(例如这里)描述了如何获取计数,但我遇到的问题是当我尝试创建数据帧时,列值成为我的索引.

样本数据:df = pd.DataFrame({'Color': ['Red', 'Red', 'Blue'], 'State': ['MA', 'PA', 'PA']}).我想最终得到一个数据帧,如:

   Color Count
0   Red  2
1  Blue  1
Run Code Online (Sandbox Code Playgroud)

我尝试过以下操作,但在所有情况下,索引最终都是Color,而Count是数据框中唯一的列.

尝试1:

df2 = pd.DataFrame(data=df['Color'].value_counts())
# And resetting the index just gets rid of Color, which I want to keep
df2 = df2.reset_index(drop=True)
Run Code Online (Sandbox Code Playgroud)

尝试2:

df3 = df['Color'].value_counts()
df3 = pd.DataFrame(data=df3, index=range(df3.shape[0]))
Run Code Online (Sandbox Code Playgroud)

尝试3:

df4 = df.groupby('Color')
df4 = pd.DataFrame(df4['Color'].count())
Run Code Online (Sandbox Code Playgroud)

python pandas

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

什么是最大熵?

有人可以给我一个清晰,简单的最大熵分类的定义吗?如果有人可以提供一个清晰的类比,这将非常有帮助,因为我正努力理解。

classification machine-learning entropy

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

在 Mac 上安装 numpy 以在 AWS Lambda 上工作

有没有办法numpy在 Mac上安装,以便在上传到 AWS Lambda 时可以正常工作?我尝试了各种不同的方法,包括使用不同的pip版本、使用easy_install和关注这篇文章,但它们似乎都不起作用。我也尝试克隆 git repo 并从那里构建,但我也无法让它工作(尽管我不确定这样做后是否复制了正确的文件)

我得到的错误是:

无法导入模块“lambda_function”:导入多阵列 numpy 扩展模块失败。很可能您正在尝试导入失败的 numpy 构建。如果您正在使用 numpy git repo,请尝试 git clean -xdf(删除所有不受版本控制的文件)。否则重新安装numpy。

这篇文章的启发,我能够pip install numpy在 Linux 环境中运行 Lambda。

所以我的问题是:是否可以numpy在 Mac上安装以便它在 AWS Lambda 上运行?

环境:MacBook Pro,MacOS 10.12.2,默认python版本2.7.10

我一直在hello-world-python对 Lambda上的示例稍作修改:

from __future__ import print_function
import numpy

def lambda_handler(event, context):
    #print("Received event: " + json.dumps(event, indent=2))
    print("value1 = " + event['key1'])
Run Code Online (Sandbox Code Playgroud)

(更新)扩展问题:为什么有些包可以工作而有些则不行?

python amazon-web-services aws-lambda

6
推荐指数
2
解决办法
3357
查看次数

Pandas:按组汇总前 N 行

我想对每个组的前 N ​​期数据求和。我已经看到了如何单独执行每个操作(按组求和,或对前 N 个周期求和),但无法找到一种将两者一起执行的干净方法。

我目前正在做以下事情:

import pandas as pd

sample_data = {'user': ['a', 'a', 'a', 'a', 'a', 'b', 'b', 'b', 'b', 'b'],\
                'clicks': [0,1,2,3,4,5,6,7,8,9]}
df = pd.DataFrame(sample_data)
df['clicks.1'] = df.groupby(['user'])['clicks'].shift(1)
df['clicks.2'] = df.groupby(['user'])['clicks'].shift(2)
df['clicks.3'] = df.groupby(['user'])['clicks'].shift(3)
df['total_clicks_prior3'] = df[['clicks.1','clicks.2', 'clicks.3']].sum(axis=1)
Run Code Online (Sandbox Code Playgroud)

我不想要 3 个中间滞后列,我只想要它们的总和,所以我想要的输出是:

>>> df[['clicks','user','total_clicks_prior3']]
   clicks user  total_clicks_prior3
0       0    a                  NaN
1       1    a                  0.0
2       2    a                  1.0
3       3    a                  3.0
4       4    a                  6.0
5       5    b                  NaN
6       6    b                  5.0
7 …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

在R中:当条件匹配时,用另一个数据帧的值替换数据帧列的值

我有两个数据帧:

set.seed(343)
testDF <- data.frame(Score = sample(50, size=50, replace=TRUE), number = rep(letters[1:25],2), Rev = rep(0,50))
sourceDF <- data.frame(min = c(1,10,20,30,40), max = c(9, 19, 29, 39, 50), rev = 1:5)
Run Code Online (Sandbox Code Playgroud)

对于testDF的每一行,其中testDF $得分在sourceDF $ min和sourceDF的sourceDF $ max之间,请将testDF $ Rev的值替换为相应的sourceDF $ rev.

我有它使用两个for循环和一个if条件,但它是......慢(我的数据集有接近100万行).我尝试使用findInterval但没有成功.

有没有更好/更有效的方法来做到这一点?

r dataframe

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

data.table:group-by,sum,name new column和slice列

这似乎应该很容易,但我从来没有弄清楚如何做到这一点.使用data.table我想C通过另一列对一列进行求和A,并保留这两列.同时,我希望能够命名新列.我的尝试和期望的输出:

library(data.table)
dt <- data.table(A= c('a', 'b', 'b', 'c', 'c'), B=c('19', '20', '21', '22', '23'),
C=c(150,250,20,220,130))

# Desired Output - is there a way to do this in one step using data.table? #
new.data <- dt[, sum(C), by=A]
setnames(new.data,'V1', 'C.total')
new.data
   A C.total
1: a     150
2: b     270
3: c     350

# Attempt 1: Problem is that columns B and C kept, extra rows kept #
new.data <- dt[, 'C.total' := sum(C), by=A] …
Run Code Online (Sandbox Code Playgroud)

group-by r rename data.table

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

在igraph数据框中查找与最大度数关联的节点名称

我使用igraph包来查找每个节点的程度(内置degree(g)函数),它返回一个数字向量.如何判断哪个节点具有最大程度(不是值而是节点名称)?

r igraph

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

在R上的csv文件中获取平均值

我是R的初学者.我正在参加Coursera R编程课程,我被困在一个作业(污染物意味着家庭作业).作业的目的是从csv文件中的列中获取方法.这些文件有四列.我们有300多个文件,每个文件有1000多个观察结果.他们中的大多数都是NA.在我正在使用的csv文件中,只有117个数字观察.我一直在尝试这样的东西:

cmydata1 <- read.csv("/Users/joshuavincent/Documents/specdata/001.csv")
Run Code Online (Sandbox Code Playgroud)

一旦我有cmydata1,我试图得到其中一个列的平均值,"硝酸盐",但我得到了这个:

> mean(cmydata1, "nitrate")
[1] NA
Warning message:
In mean.default(cmydata1, "nitrate") :
  argument is not numeric or logical: returning NA
Run Code Online (Sandbox Code Playgroud)

为了解决这个问题,我创建了一个这样的新列表:

> cmydata2 <- list(na.omit(cmydata1))
> cmydata2[[1]]
Run Code Online (Sandbox Code Playgroud)

结果是清洁的矩阵,不再是NA

列名称为:"Date""sulfate""nitrate"和ID.

但是,我仍然无法得到平均值

> mean(cmydata2, "nitrate")
[1] NA
Warning message:
In mean.default(cmydata2, "nitrate") :
  argument is not numeric or logical: returning NA
Run Code Online (Sandbox Code Playgroud)

我尝试修复它,所以我输入...并获得null

> colnames(cmydata2)
NULL
Run Code Online (Sandbox Code Playgroud)

那么,我可以修复什么来获得该列的平均值?(之后我觉得必须尝试循环和东西才能完成作业,但我会迈向宝贝的步骤)

请注意,这可能有所帮助:我在自动填充中有一个带有表格图标的cmydata1,而cmydata2有一些形状,看起来像一个organigram图标.

谢谢

r

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

R中的逆矩阵乘法不给出单位矩阵

我用%*%来表示矩阵及其反函数.我没有得到单位矩阵.我错过了什么?

D 

    [,1] [,2] [,3]
[1,] 1 2 3

[2,] 4 2 1

[3,] 2 2 0

solve(D)

       [,1]       [,2]       [,3]
[1,] -0.1428571 0.4285714 -0.2857143

[2,] 0.1428571 -0.4285714 0.7857143

[3,] 0.2857143 0.1428571 -0.4285714

D %*% solve(D)

          [,1]          [,2]          [,3]
[1,] 1.000000e+00 0.000000e+00 -2.220446e-16

[2,] -5.551115e-17 1.000000e+00 0.000000e+00

[3,] -1.110223e-16 -1.110223e-16 1.000000e+00
Run Code Online (Sandbox Code Playgroud)

r

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