Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python使用直方图显示qcut的装箱范围_Python_Pandas_Csv_Range_Binning - Fatal编程技术网

python使用直方图显示qcut的装箱范围

python使用直方图显示qcut的装箱范围,python,pandas,csv,range,binning,Python,Pandas,Csv,Range,Binning,我使用qcut将数据存储在范围中。但我想在柱状图中显示输出范围数据。 那么,我该怎么做呢? ps:数据从csv文件链接收集: 我写了以下代码- import matplotlib.pyplot as plt import pandas as pd from sklearn.metrics import r2_score dataset = pd.read_csv("datasets.csv") print(dataset) qc = pd.qcut(dataset['A

我使用qcut将数据存储在范围中。但我想在柱状图中显示输出范围数据。 那么,我该怎么做呢? ps:数据从csv文件链接收集:

我写了以下代码-

import matplotlib.pyplot as plt
import pandas as pd
from sklearn.metrics import r2_score

dataset = pd.read_csv("datasets.csv")
print(dataset)


qc = pd.qcut(dataset['Active'], q=8, precision=0)
qc_val = qc.value_counts().sort_index()
print(qc_val)
装箱范围输出为-

(-1.0, 63.0]          5
(63.0, 212.0]         5
(212.0, 827.0]        4
(827.0, 1465.0]       8
(1465.0, 1959.0]      2
(1959.0, 4545.0]      4
(4545.0, 8594.0]      5
(8594.0, 221447.0]    5
Name: Active, dtype: int64

那么,有没有办法显示上述分类范围数据的直方图?

您可以直接使用序列直方图函数中的
bins
参数,如

import pandas as pd

url = 'https://drive.google.com/file/d/1lYZqeYH_AtUAUG5947Bd51JXJBrOP5Lp/view?usp=sharing'
path = 'https://drive.google.com/uc?export=download&id='+url.split('/')[-2]
df = pd.read_csv(path)
df['Active'].hist(bins=8)

或者使用
qcut
中的标签,您可以这样使用它

levels = [f'Level_{i}' for i in range(8)]
df['Active_bins'] = pd.qcut(df['Active'], q=8, precision=0, labels=levels)
df.head()


谢谢您的详细回答。我在jupyter online上试过,它运行了,但在vscode中直方图没有显示出来。你知道原因吗?假设在vscode中是指在脚本中,在脚本末尾添加
plt.show()
会打开一个带有打印图像的弹出窗口,参考:
# from https://stackoverflow.com/a/58288640/7752347
import matplotlib.pyplot as plt

fig,ax = plt.subplots()

hatches = ('\\', '//', '..', '**', "!", '$', '^','#')         # fill pattern

for (i, d),hatch in zip(df.groupby('Active_bins'), hatches):
    d['Active'].hist(alpha=0.7, ax=ax, label=i, hatch=hatch)

ax.legend()