小编lpr*_*yor的帖子

在 PyCharm 调试模式下抛出异常,但在运行模式下不抛出异常(seaborn、matplotlib)

我在用着

  • PyCharm 2021.2.3 社区版
  • Python解释器3.10.0
  • matplotlib 3.5.0
  • 海伯恩0.11.2
  • numpy 1.21.4
  • 熊猫1.3.4
  • PySimpleGUI 4.55.1

当我运行以下脚本时,在运行模式下一切正常,但在调试模式下它会引发异常。这是脚本:

import numpy as np
import pandas as pd
import PySimpleGUI as sg
import seaborn as sns

from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure


def init_data():
    r1 = np.random.rand(5, 4)
    columns = [f"var{i}" for i in range(1, 5)]
    df = pd.DataFrame(r1, columns=columns)
    df.insert(0, 'year', range(2021, 2026))
    df.insert(1, 'scenario', 'test1')
    ldf = pd.melt(df, id_vars=['year', 'scenario'], value_vars=columns, var_name='percentile', value_name='carbon')
    return ldf


def draw_figure(canvas, figure):
    figure_canvas_agg = FigureCanvasTkAgg(figure, canvas) …
Run Code Online (Sandbox Code Playgroud)

python numpy matplotlib pycharm seaborn

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

使用基于组的条件删除一些Pandas数据帧行

比方说,我有一些关于销售的数据,并希望了解不同的邮政编码如何比较:有些提供比其他更有利可图的业务吗?所以我通过邮政编码进行分组,并且可以根据每个邮政编码轻松获得各种统计数据.然而,有一些非常高价值的工作扭曲了统计数据,所以我想做的就是忽略异常值.由于各种原因,我想要做的是按组定义异常值:例如,删除数据框中位于其组的顶部x百分位数中的行,或其组中的前n个.

所以,如果我有以下数据框:

>>> df
Out[67]: 
     A         C         D
0  foo -0.536732  0.061055
1  bar  1.470956  1.350996
2  foo  1.981810  0.676978
3  bar -0.072829  0.417285
4  foo -0.910537 -1.634047
5  bar -0.346749 -0.127740
6  foo  0.959957 -1.068385
7  foo -0.640706  2.635910
Run Code Online (Sandbox Code Playgroud)

我希望能够有一些功能,比如drop_top_n(df, group_column, value_column, number_to_drop)哪里drop_top_n(df, "A", "C", 2)会有回归

     A         C         D
0  foo -0.536732  0.061055
4  foo -0.910537 -1.634047
5  bar -0.346749 -0.127740
7  foo -0.640706  2.635910
Run Code Online (Sandbox Code Playgroud)

使用filter丢弃整个组,而不是组的一部分.

我想,我可以遍历这些组,并且每个组都要找出要删除的行,然后返回到原始数据帧并删除它们,但这看起来非常笨拙.有没有更好的办法?

python pandas

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

动态构造转换语句

我有一个包含多个(数字)列的数据框,并希望创建一个新的数据框,其列是原始的行.

> df <- data.frame(cbind(id=LETTERS[1:10],  
wheat=c(123,234,345,456,678,987,876,654,432,321),barley=c(135,975,246,864,357,753,468,642,579,531)))
> df
   id wheat barley
1   A   123    135
2   B   234    975
3   C   345    246
4   D   456    864
5   E   678    357
6   F   987    753
7   G   876    468
8   H   654    642
9   I   432    579
10  J   321    531
> rankeddf <- transform(df, wheat=rank(wheat), barley=rank(barley))
> rankeddf
   id wheat barley
1   A     1      1
2   B     2     10
3   C     4      2
4   D     6      9
5   E …
Run Code Online (Sandbox Code Playgroud)

r

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

标签 统计

python ×2

matplotlib ×1

numpy ×1

pandas ×1

pycharm ×1

r ×1

seaborn ×1