我有一个1200万行数据集,其中3列作为唯一标识符,另外2列具有值.我正在尝试做一个相当简单的任务:
- 按三个标识符分组.这产生了大约260万个唯一组合
- 任务1:计算列的中位数Val1
- 任务2:计算Val1给定某些条件的列的平均值Val2
以下是我的结果,使用pandas和data.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)
我想我可能在做大熊猫的事情 - 转换Grp1和Grp2分类并没有多大帮助,也没有切换到.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) 我有以下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对.
我想到的流程是:
1. 从 SAS 导出 sas7bdat
2. 在 python 中导入该文件pd.read_sas并在
3. 将 Pandas 数据帧导出到 sas7bdat(或其他一些 SAS 二进制文件格式)。我认为这pd.to_sas会存在,但它不存在
4. 在 SAS 中打开新文件并对其进行进一步操作
上面第 3 点有解决方案吗?在我看来,我唯一的选择是 csv 或一些 SQL 数据库。
这不是一个真正的编程问题。希望这不会成为问题。
是否可以选择使用包中的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方式.
有任何想法吗?
我希望控制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).
以下代码生成两个并排的饼图。有没有办法为两个饼图添加一个标题 - 最好在图表本身上方?
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)
我正在尝试生成多个聚合统计信息,其中一些需要在每个组的子集上生成.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)