小编jer*_*ycg的帖子

为什么这个Python String的大小会在失败的int转换中发生变化

这里推文:

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.

python string unicode python-3.x python-internals

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

为什么来自s3的dask read_csv会保留这么多内存?

我正在使用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)

python csv amazon-s3 pandas dask

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

在rmarkdown/knitr中使用R代码创建附录

是否可以在附录中获取所有代码.假设我在文档中有两个块,然后是一些文本.

```{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)

r knitr r-markdown

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

合并两个数据框,均具有基于最近位置的坐标

我有一个包含局部变量的大数据框(~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)

r dataframe

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

如何创建特定月份和/或日期序列"n"次

我试图从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

r date seq rep

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

在熊猫中删除未使用类别的更快捷方法?

我在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)

python pandas categorical-data

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