import sys
x = 'ñ'
print(sys.getsizeof(x))
int(x) #throws an error
print(sys.getsizeof(x))
Run Code Online (Sandbox Code Playgroud)
我们得到74,然后是两个getsizeof调用的77个字节.
看起来我们正在从失败的int调用中向对象添加3个字节.
来自twitter的更多示例(您可能需要重新启动python以将大小重置为74):
x = 'ñ'
y = 'ñ'
int(x)
print(sys.getsizeof(y))
Run Code Online (Sandbox Code Playgroud)
77!
print(sys.getsizeof('ñ'))
int('ñ')
print(sys.getsizeof('ñ'))
Run Code Online (Sandbox Code Playgroud)
74,然后77.
我正在使用dask(替换SQL查询)从s3读取一些gzip压缩数据.但是,看起来有一些数据文件的缓存,或者在系统内存中保留的解压缩文件.NB这应该是可运行的,这里的测试数据是在公共s3存储桶中的pandas测试套件中使用的.
import dask.dataframe as dd
import pandas as pd
import psutil as ps
import os
#for easier vis
mb = 1048576
def mytestfunc(file):
process = ps.Process(os.getpid())
print('initial memory: {0}'.format(process.memory_info().rss/mb))
data = dd.read_csv(file, compression = 'gzip', blocksize = None, storage_options = {'anon':True})
print('dask plan memory: {0}'.format(process.memory_info().rss/mb))
data = data.compute()
print('data in memory: {0}'.format(process.memory_info().rss/mb))
print('data frame usage: {0}'.format(data.memory_usage(deep=True).sum()/mb))
return data
process = ps.Process(os.getpid())
print('before function call: {0}'.format(process.memory_info().rss/mb))
out = mytestfunc('s3://pandas-test/large_random.csv.gz')
print('After function call: {0}'.format(process.memory_info().rss/mb))
# out = mytestfunc('s3://pandas-test/tips.csv.gz')
# print('After smaller function …Run Code Online (Sandbox Code Playgroud) 是否可以在附录中获取所有代码.假设我在文档中有两个块,然后是一些文本.
```{r, echo=TRUE}
x <- 4+5
x
```
Above is X output.
```{r, echo=TRUE}
y <- 22+325
y
```
Above is Y output.
Run Code Online (Sandbox Code Playgroud)
然后我想要一个附录中的所有代码,但显示好像我放入eval=FALSE了大块.
像这样的东西
```{r, SHOW_ALL_CODE=TRUE}
```
Run Code Online (Sandbox Code Playgroud)
预期产量:
Chunk_1
y <- 22+325
y
Chunk_2
x <- 4+5
x
Run Code Online (Sandbox Code Playgroud) 我有一个包含局部变量的大数据框(~130000 行)和另一个包含物种密度的大数据框(~7000 行)。两者都有 x 和 y 坐标,但这些坐标并不总是匹配。例如:
df1 <- data.frame(X = c(2,4,1,2,5), Y = c(6,7,8,9,8), V1 = c("A", "B", "C", "D", "E"), V2 = c("G", "H", "I", "J", "K"))
Run Code Online (Sandbox Code Playgroud)
和:
df2 <- data.frame(X = c(2,4,6), Y = c(5,9,7), Dens = c(12, 17, 10))
Run Code Online (Sandbox Code Playgroud)
如果附近有一个点,我想向 df1 添加一列,其中包含来自 df2 的密度(Dens)。如果附近没有点,我希望它显示为 NA。例如:
X Y V1 V2 Dens
2 6 A G 12
4 7 B H NA
1 8 C I 17
2 9 D J NA
5 8 E K 10
Run Code Online (Sandbox Code Playgroud) 我试图从1月到12月3次创建一个月的序列.即.1月2月3月 ...12月1月2月3月....12月1月2月3月....十二月
我试过这段代码
rep(c("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sept","Oct","Nov","Dec"),each=3)
Run Code Online (Sandbox Code Playgroud)
但它会产生这样的结果
[1] "Jan" "Jan" "Jan" "Feb" "Feb" "Feb" "Mar" "Mar" "Mar" "Apr" "Apr" "Apr"
[13] "May" "May" "May" "Jun" "Jun" "Jun" "Jul" "Jul" "Jul" "Aug" "Aug" "Aug"
[25] "Sept" "Sept" "Sept" "Oct" "Oct" "Oct" "Nov" "Nov" "Nov" "Dec" "Dec" "Dec"
Run Code Online (Sandbox Code Playgroud)
但我想要Jan Feb Mar .... Dec Jan Feb Mar ..... Dec Jan Feb Mar ... Dec
谢谢Harshad
我在Python中运行一些模型,在类别上使用数据子集.
对于内存使用和预处理,所有分类变量都存储为类别数据类型.
对于我的"分组依据"列中的分类变量的每个级别,我正在运行回归,我需要将所有分类变量重置为该子集中存在的变量.
我目前正在使用它.cat.remove_unused_categories(),这占我总运行时间的近50%.目前,最糟糕的罪犯是我的分组专栏,其他人没有花费太多时间(因为我猜没有多少级别下降).
这是一个简化的例子:
import itertools
import pandas as pd
#generate some fake data
alphabets = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
keywords = [''.join(i) for i in itertools.product(alphabets, repeat = 2)]
z = pd.DataFrame({'x':keywords})
#convert to category datatype
z.x = z.x.astype('category')
#groupby
z = z.groupby('x')
#loop over groups
for i in z.groups:
x = z.get_group(i)
x.x …Run Code Online (Sandbox Code Playgroud)