小编Sku*_*kum的帖子

Pandas:在条形图上同时使用日志和堆栈

我有一些来自亚马逊的数据,我想对其进行处理。我想包含的图之一是每个品牌的评分分布,我认为最好的方法是堆叠条形图。

但是,有些品牌的评论比其他品牌要多得多,所以我必须使用对数刻度,否则情节将是 3 个峰值,而其他品牌将无法正常看到。

大约有 300'000 个看起来像这样

reviewID  brand      overall
0         Logitech   5.0
1         Garmin     4.0
2         Logitech   4.0
3         Logitech   5.0
Run Code Online (Sandbox Code Playgroud)

我用过这个代码

brandScore = swissDF.groupby(['brand', 'overall'])['brand']
brandScore = brandScore.count().unstack('overall')
brandScore.plot(kind='bar', stacked=True, log=True, figsize=(8,6))
Run Code Online (Sandbox Code Playgroud)

这就是结果

条形图

现在,如果您不熟悉这些数据,这看起来可能是可以接受的,但实际上并非如此。与其他评分相比,1.0 评分堆栈看起来太大了,因为对数在该范围内并不是“完全有效”,而是会处理更好的分数。有没有办法在对数图上线性表示评分分布?

我的意思是,如果 60% 的评分是 5.0,那么 60% 的条应该是粉红色的,而不是我现在拥有的

python matplotlib python-3.x pandas

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

熊猫:在列表的每个元素上使用groupby

也许我错过了显而易见的事实.

我有一个像这样的pandas数据框:

   id        product              categories
    0        Silmarillion         ['Book', 'Fantasy']
    1        Headphones           ['Electronic', 'Material']
    2        Dune                 ['Book', 'Sci-Fi']
Run Code Online (Sandbox Code Playgroud)

我想使用groupby函数来计算类别列中每个元素的出现次数,所以这里的结果将是

Book       2
Fantasy    1
Electronic 1
Material   1
Sci-Fi     1
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用groupby函数时,pandas会计算整个列表的出现次数而不是分隔其元素.我已经尝试了多种不同的处理方式,使用元组或拆分,但到目前为止我还没有成功.

python numpy python-3.x pandas pandas-groupby

5
推荐指数
2
解决办法
412
查看次数

为什么"nparray.tolist()"占用了这么多空间?

我现在正在做一个项目,在某些时候我正在处理一个维度的nparray(165L,653L,1024L,1L).(大约100MB的数据).

出于JSON兼容性原因,我需要将其转换为常规列表.所以我使用了常规功能

array.tolist()
Run Code Online (Sandbox Code Playgroud)

问题是这一行会导致10GB的RAM消耗.这里似乎有些不对劲,我不应该在大数组上使用tolist()吗?

我已经浏览了一下网络,我发现了一些怀疑tolist()泄漏内存,特别是在这里有长期运行过程中的numpy tolist()显然内存泄漏,这里https://mail.python.org/pipermail/ matrix-sig/1998-October/002368.html.但这似乎与我的问题没有直接关系.

python numpy python-2.7

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

从用户空间到内核空间的指针为空

对不起,如果之前已经问过这个问题,因为它看起来很基本,但我在这个网站的任何地方都找不到它.我正在用linux(debian)进行OS编程,我正试图从我的用户空间给我的内核空间函数指针.

即我在用户空间

    ...
    long res;
    int x = -1;
    int *p1 = &x;  // also tried doing a malloc, didn't change anything
    res = kernel_function(p1);
    ...
Run Code Online (Sandbox Code Playgroud)

在内核空间文件kernel_function.c中我做了

asmlinkage long kernel_function( int __user *p){
    printk("%p \n", (void*) p);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我也做了通常的其他步骤,比如将函数的原型添加到syscalls.h,将文件名添加到syscall_32.tbl等.但是当我运行我的用户空间函数时,唯一被打印到内核日志的是(NULL).所以该函数被调用,但指针丢失,任何想法为什么会发生这种情况?

c linux linux-kernel

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