gpt4 book ai didi

python - 使用 `pandas.cut()` ,我如何获得整数分箱并避免获得负的最低限度?

转载 作者:太空狗 更新时间:2023-10-29 20:29:13 24 4
gpt4 key购买 nike

我的数据框的最低值为零。我正在尝试使用 pandas.cut()precisioninclude_lowest 参数,但我无法获得由整数组成的间隔比一位小数 float 。我也无法让最左边的间隔停在零。

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

sns.set(style='white', font_scale=1.3)

df = pd.DataFrame(range(0,389,8)[:-1], columns=['value'])
df['binned_df_pd'] = pd.cut(df.value, bins=7, precision=0, include_lowest=True)
sns.pointplot(x='binned_df_pd', y='value', data=df)
plt.xticks(rotation=30, ha='right')

enter image description here

我尝试将precision 设置为-1、0 和1,但它们都输出一位小数 float 。 pandas.cut() 帮助确实提到 x-min 和 x-max 值扩展了 x 范围的 0.1%,但我想也许 include_lowest 可以以某种方式抑制这种行为。我当前的解决方法涉及导入 numpy:

import numpy as np

bin_counts, edges = np.histogram(df.value, bins=7)
edges = [int(x) for x in edges]
df['binned_df_np'] = pd.cut(df.value, bins=edges, include_lowest=True)

sns.pointplot(x='binned_df_np', y='value', data=df)
plt.xticks(rotation=30, ha='right')

enter image description here

有没有办法不使用 numpy 而直接使用 pandas.cut() 获取非负整数作为区间边界?

编辑:我刚刚注意到指定 right=False 会使最低间隔变为 0 而不是 -0.4。它似乎优先于 include_lowest,因为更改后者与 right=False 结合时没有任何可见的效果。以下区间仍指定一位小数。

enter image description here

最佳答案

你应该专门设置labels参数

准备工作:

lower, higher = df['value'].min(), df['value'].max()
n_bins = 7

建立标签:

edges = range(lower, higher, (higher - lower)/n_bins) # the number of edges is 8
lbs = ['(%d, %d]'%(edges[i], edges[i+1]) for i in range(len(edges)-1)]

设置标签:

df['binned_df_pd'] = pd.cut(df.value, bins=n_bins, labels=lbs, include_lowest=True)

关于python - 使用 `pandas.cut()` ,我如何获得整数分箱并避免获得负的最低限度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32552027/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com