我在用着
当我运行以下脚本时,在运行模式下一切正常,但在调试模式下它会引发异常。这是脚本:
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) 比方说,我有一些关于销售的数据,并希望了解不同的邮政编码如何比较:有些提供比其他更有利可图的业务吗?所以我通过邮政编码进行分组,并且可以根据每个邮政编码轻松获得各种统计数据.然而,有一些非常高价值的工作扭曲了统计数据,所以我想做的就是忽略异常值.由于各种原因,我想要做的是按组定义异常值:例如,删除数据框中位于其组的顶部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丢弃整个组,而不是组的一部分.
我想,我可以遍历这些组,并且每个组都要找出要删除的行,然后返回到原始数据帧并删除它们,但这看起来非常笨拙.有没有更好的办法?
我有一个包含多个(数字)列的数据框,并希望创建一个新的数据框,其列是原始的行.
> 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)