小编Bog*_*anC的帖子

为什么R的data.table比熊猫快得多?

我有一个1200万行数据集,其中3列作为唯一标识符,另外2列具有值.我正在尝试做一个相当简单的任务:
- 按三个标识符分组.这产生了大约260万个唯一组合
- 任务1:计算列的中位数Val1
- 任务2:计算Val1给定某些条件的列的平均值Val2

以下是我的结果,使用pandasdata.table(目前最新版本,在同一台机器上):

+-----------------+-----------------+------------+
|                 |      pandas     | data.table |
+-----------------+-----------------+------------+
| TASK 1          | 150 seconds     | 4 seconds  |
| TASK 1 + TASK 2 |  doesn't finish | 5 seconds  |
+-----------------+-----------------+------------+
Run Code Online (Sandbox Code Playgroud)

我想我可能在做大熊猫的事情 - 转换Grp1Grp2分类并没有多大帮助,也没有切换到.agg.apply.有任何想法吗?

以下是可重现的代码.
数据帧生成:

import numpy as np
import pandas as pd
from collections import OrderedDict
import time

np.random.seed(123)
list1 = list(pd.util.testing.rands_array(10, 750)) …
Run Code Online (Sandbox Code Playgroud)

r pandas data.table

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

从dict创建数据框,其中键是元组

我有以下dict,键为元组:

d = {('first', 'row'): 3, ('second', 'row'): 1}
Run Code Online (Sandbox Code Playgroud)

我想创建一个包含3列的数据框:Col1,Col2和Col3,它们应如下所示:

Col1   Col2  Col3
first  row   3
second row   4
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何拆分元组,而不是按对解析dict对.

python pandas

12
推荐指数
3
解决办法
3954
查看次数

将 Pandas 数据帧导出为 SAS sas7bdat 格式

我想到的流程是:
1. 从 SAS 导出 sas7bdat
2. 在 python 中导入该文件pd.read_sas并在
3. 将 Pandas 数据帧导出到 sas7bdat(或其他一些 SAS 二进制文件格式)。我认为这pd.to_sas会存在,但它不存在
4. 在 SAS 中打开新文件并对其进行进一步操作

上面第 3 点有解决方案吗?在我看来,我唯一的选择是 csv 或一些 SQL 数据库。
这不是一个真正的编程问题。希望这不会成为问题。

sas pandas

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

plotly:x轴上的范围滑块(日期),带有自定义开始/结束日期

是否可以选择使用包中的rangeslider选项,plotly以便添加滑块并指定哪个范围是默认值.现在,以下代码添加了滑块,但默认情况下会选择整个日期范围.

library(plotly)

df <- data.frame(Date = seq(as.Date("2016-01-01"), as.Date("2016-08-31"), by="days"),
                 Value = sample(100:200, size = 244, replace = T))

p <- plot_ly(data = df, x = Date, y = Value, type = "line") %>%
  layout(xaxis = list(rangeslider = list(type = "date")  ))
p
Run Code Online (Sandbox Code Playgroud)

我希望能够指定初始范围 - 例如,仅显示上个月,并允许用户根据需要扩展范围.文档似乎表明没有这样的选项,我宁愿不去自定义的JavaScript方式.

有任何想法吗?

r plotly

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

控制哪些刻度线/标签出现在x轴上?

我希望控制x轴上出现的刻度线.以下代码以5的顺序(5,10,15 ... 30)放置刻度线

library(plotly)

df <- data.frame(x =  1:30,
                 y = sample(100:300, size = 30, replace = T))

p <- plot_ly(data = df, x = x, y = y, type = 'line') %>%
      layout(title = 'Example plot')
p
Run Code Online (Sandbox Code Playgroud)

我需要按照6,12,18,24,30的顺序放置它们.我一直在浏览文档,但我似乎无法找到我需要的东西.在ggplot2这可以通过scale_x_continuous(breaks=c(6,12,18,24,30).

r plotly r-plotly

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

matplotlib 中并排饼图的标题

以下代码生成两个并排的饼图。有没有办法为两个饼图添加一个标题 - 最好在图表本身上方?

labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'
fracs = [15, 30, 45, 10]

fig = plt.figure()

ax1 = fig.add_axes([0, 0, .5, .5], aspect=1)
ax1.pie(fracs, labels=labels, radius = 1.2)
ax2 = fig.add_axes([.5, .0, .5, .5], aspect=1)
ax2.pie(fracs, labels=labels, radius = 1.2)
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

python matplotlib

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

Data.table - group by期间组内的子集很慢

我正在尝试生成多个聚合统计信息,其中一些需要在每个组的子集上生成.data.table非常大,有1000万行,但是使用by没有列子集的情况非常快(不到一秒钟).只需要在每个组的子集上添加一个额外的列,就可以将运行时间增加12倍.
这样做的速度更快吗?以下是我的完整代码.

library(data.table)
library(microbenchmark)

N = 10^7

DT = data.table(id1 = sample(1:400, size = N, replace = TRUE),
                id2 = sample(1:100, size = N, replace = TRUE),
                id3 = sample(1:50, size = N, replace = TRUE),
                filter_var = sample(1:10, size = N, replace = TRUE),
                x1 = sample(1:1000, size = N, replace = TRUE),
                x2 = sample(1:1000, size = N, replace = TRUE),
                x3 = sample(1:1000, size = N, replace = TRUE),
                x4 = sample(1:1000, size = N, …
Run Code Online (Sandbox Code Playgroud)

r data.table

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

标签 统计

r ×4

pandas ×3

data.table ×2

plotly ×2

python ×2

matplotlib ×1

r-plotly ×1

sas ×1