小编Zel*_*ong的帖子

如何通过不同的列名合并两个data.table?

我有两个data.table Xÿ.

X:area, id, value
在列ÿ:ID, price, sales

创建两个data.tables:

X = data.table(area=c('US', 'UK', 'EU'),
               id=c('c001', 'c002', 'c003'),
               value=c(100, 200, 300)
              )

Y = data.table(ID=c('c001', 'c002', 'c003'),
               price=c(500, 200, 400),
               sales=c(20, 30, 15)
              )
Run Code Online (Sandbox Code Playgroud)

我为XY设置了键:

setkey(X, id)
setkey(Y, ID)
Run Code Online (Sandbox Code Playgroud)

现在,我尝试加入XŸ通过idXIDÿ:

merge(X, Y)
merge(X, Y, by=c('id', 'ID'))
merge(X, Y, by.x='id', by.y='ID')
Run Code Online (Sandbox Code Playgroud)

所有引发的错误都说明by参数中的列名无效.

我参考了data.table手册,发现merge函数不支持 …

merge r data.table

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

Python 2.7中"绝对导入"的正确方法

  • Python 2.7.10
  • 在virtualenv
  • from __future__ import absolute_import在每个模块中启用

目录树看起来像:

Project/
    prjt/
        __init__.py
        pkg1/
            __init__.py
            module1.py
            tests/
                __init__.py
                test_module1.py
        pkg2/
            __init__.py
            module2.py
            tests/
                __init__.py
                test_module2.py
        pkg3/
            __init__.py
            module3.py
            tests/
                __init__.py
                test_module3.py
    data/
    log/
Run Code Online (Sandbox Code Playgroud)

我试图用功能compute()pkg2/module2.pypkg1/module1.py写,如:

# In module1.py
import sys
sys.path.append('/path/to/Project/prjt')

from prjt.pkg2.module2 import compute
Run Code Online (Sandbox Code Playgroud)

但是当我跑步时python module1.py,解释器引发了一个ImportError No module named prjt.pkg2.module2.

  1. 什么是"绝对导入"的正确方法?我一定要添加路径到Projectsys.path
  2. 我怎么能test_module1.py在交互式翻译中运行?通过python prjt/pkg1/tests/test_module1.pypython -m prjt/pkg1/tests/test_module1.py

python python-import python-2.7

27
推荐指数
3
解决办法
6889
查看次数

如何在IPython Notebook中缓存?

环境:

  • Python 3
  • IPython 3.2

每当我关闭一个IPython笔记本并重新打开它时,我必须重新运行所有单元格.但是一些细胞涉及密集计算.

相比之下,knitr在R中默认将结果保存在缓存目录中,因此只有新代码和新设置才会调用计算.

我看了一下,ipycache但似乎缓存了一个单元而不是笔记本.knitr在IPython中有缓存的对应物吗?

python r ipython knitr ipython-notebook

16
推荐指数
3
解决办法
5966
查看次数

由并发INSERT和SELECT引起的MySQL死锁

  • MySQL版本:5.6
  • 存储引擎:InnoDB

当两个任务尝试select然后insert同一个表时发生死锁.程序如下:

          Task_1       Task_2
          ------      ------
Phase 1 | SELECT      SELECT
Phase 2 | INSERT      INSERT

SELECT count(id) from mytbl where name = 'someValue' and timestampdiff(hour, ts, now()) < 1;
INSERT mytbl (id, name, ts) values ('newId', 'anotherValue', now());
Run Code Online (Sandbox Code Playgroud)

死锁日志如下(部分细节被截断):

------------------------
LATEST DETECTED DEADLOCK
------------------------
151225  8:22:17
*** (1) TRANSACTION:
TRANSACTION 0 746402, ACTIVE 0 sec, process no 4690, OS thread id 140411390486272 inserting
mysql tables in use 1, locked 1
LOCK WAIT 1172 lock …
Run Code Online (Sandbox Code Playgroud)

mysql deadlock

15
推荐指数
3
解决办法
5900
查看次数

如何在Gson JsonObject中检查"isEmpty()"?

我使用Google Gson API构建JSON.当我使用以下命令初始化JsonObject时:

JsonObject json = new JsonObject();
Run Code Online (Sandbox Code Playgroud)

事实上是打印出来的{}.

我试图排除"空"JSON,即{}没有添加任何属性的JSON .但我找不到类似于isEmpty()Gson API的方法.

如何使用Gson API找出"空"JSON?

java json gson

12
推荐指数
2
解决办法
7745
查看次数

如何一个热编码变体长度功能?

给出变体长度特征列表:

features = [
    ['f1', 'f2', 'f3'],
    ['f2', 'f4', 'f5', 'f6'],
    ['f1', 'f2']
]
Run Code Online (Sandbox Code Playgroud)

其中,每个样品具有特征的变体数量和特征dtypestr和已经一热.

为了使用sklearn的特征选择实用程序,我必须将其转换features为2D数组,如下所示:

    f1  f2  f3  f4  f5  f6
s1   1   1   1   0   0   0
s2   0   1   0   1   1   1
s3   1   1   0   0   0   0
Run Code Online (Sandbox Code Playgroud)

我怎么能通过sklearn或numpy实现它?

python numpy pandas scikit-learn

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

如何在R中按组排序列

我有一个data.frame(比如说"df")如下所示:

Hospital.Name | State | Mortality.Rate
'hospital_1'   | 'AA'  | 0.2
'hospital_2'   | 'AA'   | 0.3
'hospital_3'   | 'BB'  | 0.3
'hospital_4'   | 'CC'  | 0.5
Run Code Online (Sandbox Code Playgroud)

(Hospital.Name是唯一的)

现在我想通过"State"命令"Mortality.Rate"组,即将速率命令在某个状态.如果费率存在平局,那么"Hospital.Name"用于解决平局.

我想到了"order()"和"tapply()"函数.我这样编码:

tapply(df$Mortality.Rate, df$State, order, df$Hospital.Name, na.last=NA)
Run Code Online (Sandbox Code Playgroud)

但是,弹出了"参数长度不同"的错误.当"订单"功能应用于切片"费率"时,订单的第二个参数(即df $ Hospital.Name)不会被切片.

我如何将第二个参数(用于解决排序中的关系)传递给tapply()或者是否还有其他方法?

r

7
推荐指数
2
解决办法
2万
查看次数

无法在Macvim中设置字体

我在Mac OS X Mavericks上配置macvim.我在〜/ .vimrc和〜/ .gvimrc中输入"set guifont = Menlo\14",但编辑器仍然以快递方式显示.

我插入":set guifont?" 它揭示了"guifont = Menlo\14".我概述了.vimrc和.gvimrc的内容,但发现没有其他行覆盖guifont设置.

我已经检查了堆栈溢出中的几个帖子,但还是找不到解决方案.希望得到一些帮助,感谢您的期待.

vim macvim

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

如何用ggplot2制作帕累托图(又名排序图)

我发现"使用开源工具进行数据分析"一书中的排序图表(也称为Pareto图表)非常有用.所以我试着用ggplot2绘制书中的例子.

书中给出了下图,注意坐标被翻转,使得国家的名称显示在Y轴上,更具可读性.虚线是数据的CDF(累积分布函数).

排名顺序图 (来源:使用开源工具进行数据分析)

要制作部分模拟数据:

country = c('US', 'Brazil', 'Japan', 'India', 'Germany', 'UK', 'Russia', 'France')

sales = c(40, 14, 7, 6, 2.8, 2, 1.8, 1)

# The data is already sorted
df = data.table(country=country, sales=sales)
Run Code Online (Sandbox Code Playgroud)

然后我用stat_ecdfggplot2来绘制CDF:

ggplot(data=df) + stat_ecdf(aes(x=sales))
Run Code Online (Sandbox Code Playgroud)

但这个数字看起来像:

在此输入图像描述

X轴显示销售量但不显示国家/地区.


我发现了另一种实现方式在这里.但它是通过折线图和明确的累积和实现的,这看起来与书中的例子完全不同.

是否有方法将帕累托图绘制为第一个数字?


编辑

我对虚线的内涵犯了一个错误.它不是CDF,而是累积比例.

在一个CDF,它的值映射到其百分等级,的百分等级US为100但秩顺序图表中,所述percentageUS是约45%,这表明在销售US占用总销售额的45%.

因此,我不应该使用stat_ecdf绘制排序图表.

r ggplot2

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

如何在matplotlib中按不同组绘制直方图?

我有一张像:

value    type
10       0
12       1
13       1
14       2
Run Code Online (Sandbox Code Playgroud)

生成虚拟数据:

import numpy as np

value = np.random.randint(1, 20, 10)
type = np.random.choice([0, 1, 2], 10)
Run Code Online (Sandbox Code Playgroud)

我想用 matplotlib (v1.4) 在 Python 3 中完成一项任务:

  • 绘制直方图 value
  • group by type,即使用不同的颜色来区分类型
  • “酒吧”的位置应该是“躲避”,即并排
  • 由于值的范围很小,我将identity用于垃圾箱,即垃圾箱的宽度为 1

问题是:

  • 如何根据type颜色图(例如Accent或 matplotlib 中的其他 cmap)的值和绘制颜色为条形分配颜色?我不想使用命名颜色(即'b', 'k', 'r'
  • 我的直方图中的条形相互重叠,如何“躲避”条形?

笔记

  1. 我已经尝试了 Seaborn、matplotlib 和pandas.plot两个小时,但未能获得所需的直方图。
  2. 我阅读了 matplotlib 的示例和用户指南。令人惊讶的是,我没有找到关于如何从颜色图中分配颜色的教程。
  3. 我在谷歌上搜索过,但没有找到一个简洁的例子。
  4. 我想人们可以使用 完成任务matplotlib.pyplot,而无需导入一堆模块,例如matplotlib.cm, matplotlib.colors …

python plot matplotlib histogram pandas

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