我对如何从 dask 中获得最佳效果感到困惑。
问题
我有一个包含多个时间序列的数据帧(每个都有自己的时间序列key),我需要my_fun在每个时间序列上运行一个函数。使用 Pandas 解决它的一种方法涉及
df = list(df.groupby("key"))然后应用my_fun
多处理。尽管 RAM 使用量很大,但性能在我的机器上非常好,而在谷歌云计算上却很糟糕。
在 Dask 我目前的工作流程是:
import dask.dataframe as dd
from dask.multiprocessing import get
Run Code Online (Sandbox Code Playgroud)
因为我没有设置索引df.known_divisions是False
问题:
df.npartitions作为倍数更好ncpu还是无关紧要?从这个似乎是更好地设置索引的关键。我的猜测是我可以做类似的事情
df["key2"] = df["key"] df = df.set_index("key2")
但是,同样,我不知道这是否是最好的方法。
我想要一个包含两个子图的图,一个较大的带有地图,第二个较小的带有散点图。我正在使用 cartopy 来绘制地图。我使用 gridspec_kw 确定高度的分数。然而,由于投影的限制,它也会影响宽度。
。
这就是我得到的。
import matplotlib.pyplot as plt
import cartopy as ccrs
fig, ax = plt.subplots(2,1,subplot_kw=dict(projection=ccrs.crs.PlateCarree()),gridspec_kw={'height_ratios': [4, 1]})
Run Code Online (Sandbox Code Playgroud)
一种可能的解决方案是仅对上面板使用 subplot_kw=dict(projection=ccrs.crs.PlateCarree() 。但我无法弄清楚如何做到这一点。有一些方法推荐 add_subplot ,但这是非常手动的我不喜欢这个。可以用 plt.subplots() 来做吗?
我想使用 dask 2.14 扩展我在 Pandas 数据帧上执行的一些操作。例如,我想对数据框的列应用移位:
import dask.dataframe as dd
data = dd.read_csv('some_file.csv')
data.set_index('column_A')
data['column_B'] = data.groupby(['column_A'])['column_B'].shift(-1)
Run Code Online (Sandbox Code Playgroud)
但是我AttributeError: 'SeriesGroupBy' object has no attribute 'shift'
读了 dask 文档,发现没有这样的方法(而在熊猫中)
你能提出一些有效的替代方案吗?
谢谢
我只想在树状图中显示每个项目的标签和值,而不是父项或 ID。我已经用 plotly express 定义了它。无论我对它进行了多少修改,我都无法将悬停文本限制在我需要的字段中。检查代码并捕获
import plotly.express as px
fig = px.treemap(dfconcepto, path=['type','name'],
values = 'count',
width=900, height=900,
hover_data = ['count'],
)
fig.show()
Run Code Online (Sandbox Code Playgroud)
我也尝试使用非快速树形图创建它。悬停文本是我想要的,但是具有两个级别的树状图呈现不对称。
我想要的是类似于非快速树形图的悬停文本,但像快速树形图一样平衡和对称
我能做什么?
提前致谢!
我的用例是仅在满足特定条件时调用固定装置。但由于我们需要调用 pytest 夹具作为测试函数的参数,因此每次运行测试时都会调用它。
我想做这样的事情:
@pytest.parameterize("a", [1, 2, 3])
def test_method(a):
if a == 2:
method_fixture
Run Code Online (Sandbox Code Playgroud) 我有两个数组。
第一个看起来像这样:
Date Price Volume
2019-04-15 01:00:00 50 100
2019-04-15 02:00:00 35 120
Run Code Online (Sandbox Code Playgroud)
第二个数组如下所示:
Date Price Volume
2019-04-15 01:00:00 50 200
2019-04-15 02:00:00 40 130
Run Code Online (Sandbox Code Playgroud)
输出数组应如下所示:
Date Price Volume
2019-04-15 01:00:00 50 300
2019-04-15 02:00:00 35 120
2019-04-15 02:00:00 40 130
Run Code Online (Sandbox Code Playgroud)
因为价格和第一行的日期相同,所以我对输出数组中的体积求和。
我尝试了几种方法。也许有人对如何创建输出数组或数据框有一个想法。
我有一个问题,我需要根据他们完成的不同学位为特定候选人选择最高学位。要选择最高学位,应遵循以下顺序:
博士>MBA>硕士>学士>其他
PHD 优先级最高,其他最低
数据框如下所示:
ID Degree
1 Bachelors
1 Masters
1 PHD
2 Bachelors
2 Others
3 PHD
3 Masters
Run Code Online (Sandbox Code Playgroud)
输出应该是这样的:
ID Degree
1 PHD
2 Bachelors
3 PHD
Run Code Online (Sandbox Code Playgroud)
我什至不知道如何从这个要求开始,因此无法在此处添加任何代码片段。
我目前正在尝试向我的树状图添加下拉菜单
我正在使用的代码:
import pandas as pd
import plotly.express as px
fig = px.treemap(df,
path=['RuleName','RuleNumber','ParaInvolved',"CreationP","MAjP"],
color='Somme',
hover_data=["RuleDecision","RuleMAJ"],
color_continuous_scale='RdBu')
fig.show()
Run Code Online (Sandbox Code Playgroud)
我面临的问题是,在我的“RuleName”列中,我有 151 个不同的值(但总共 1300 行),这就是为什么我尝试添加一个按钮,允许自己选择要绘制树形图的 RuleName 值。现在我正在使用一种野蛮的方法,即通过每个 RuleName 值过滤我的数据帧,这导致我获得 151 个不同的树形图。我在该网站或任何其他网站上找不到任何解决方案。
感谢您的帮助
作为 pandas 的新手,我希望从特定列中获取值的计数以及单个帧中的百分比计数。我可以得到其中之一,但不知道如何将它们添加或合并到一个框架中。想法?
框架/表格应该是这样的:
some_value, count, count(as %)
Run Code Online (Sandbox Code Playgroud)
这是我所拥有的...
import numpy as np
import pandas as pd
np.random.seed(1)
values = np.random.randint(30, 35, 20)
df1 = pd.DataFrame(values, columns=['some_value'])
df1.sort_values(by=['some_value'], inplace = True)
df2 = df1.value_counts()
df3 = df1.value_counts(normalize=True)
print(df2)
print("------")
print(df3)
Run Code Online (Sandbox Code Playgroud) 如何有条件地在每一行中计算上一个日期中有值然后在下一个日期减少到 0 的实例数?
df:
Jan Feb Mar Apr
A 1 2 3 0
B 0 0 0 0
C 1 0 2 0
D 0 0 0 1
Run Code Online (Sandbox Code Playgroud)
想得到:df_to_zero_count
Count
A 1
B 0
C 2
D 0
Run Code Online (Sandbox Code Playgroud)
我已经尝试了应用和迭代列的一些组合,但似乎无法使其工作。