首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >表中的直方图

表中的直方图
EN

Stack Overflow用户
提问于 2021-04-25 02:41:17
回答 2查看 243关注 0票数 0

Table

嗨,我正试着用上面的表格做一个直方图,下面是我的代码。

代码语言:javascript
复制
def histograms(t):
    salaries = t.column('Salary')
    salary_bins = np.arange(min(salaries), max(salaries)+1000, 1000)
    t.hist('Salary', bins=salary_bins, unit='$')
    
histograms(full_data)

但它不能正确显示。你能帮帮我吗?

Histogram

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-04-25 08:47:27

直方图中的bins参数指定数据将均匀分布到的柱状图的数量。

假设你有一个这样的工资样本数据:

代码语言:javascript
复制
import pandas as pd

sample_dataframe = pd.DataFrame({'name':['joe','jill','martin','emily','frank','john','sue','sally','sam'],
                                 'salary':[105324,65002,98314,24480,55000,62000,75000,79000,32000]})

#output:
     name  salary
0     joe  105324
1    jill   65002
2  martin   98314
3   emily   24480
4   frank   55000
5    john   62000
6     sue   75000
7   sally   79000
8     sam   32000

如果你想绘制一个直方图,其中工资将分布在10个柱状图中,并且你想坚持使用你的函数,你可以这样做:

代码语言:javascript
复制
import matplotlib.pyplot as plt

def histograms(t):
    plt.hist(t.salary, bins = 10, color = 'orange', edgecolor = 'black')
    plt.xlabel('Salary')
    plt.ylabel('Count')
    plt.show()

histograms(sample_dataframe)

如果希望x轴记号反映10个存储箱的边界,可以添加以下行:

代码语言:javascript
复制
import numpy as np
plt.xticks(np.linspace(min(t.salary), max(t.salary), 11), rotation = 45)

最后,要将y-ticks显示为整数,请添加以下行:

代码语言:javascript
复制
from matplotlib.ticker import MaxNLocator
plt.gca().yaxis.set_major_locator(MaxNLocator(integer=True))

最后一个函数如下所示:

代码语言:javascript
复制
def histograms(t):
    plt.hist(t.salary, bins = 10, color = 'orange', edgecolor = 'black')
    plt.xlabel('Salary')
    plt.ylabel('Count')

    plt.gca().yaxis.set_major_locator(MaxNLocator(integer=True))
    plt.xticks(np.linspace(min(t.salary), max(t.salary), 11), rotation = 45)
    plt.show()

票数 0
EN

Stack Overflow用户

发布于 2021-04-25 19:41:42

这就是你要找的东西吗?

代码语言:javascript
复制
import matplotlib.pyplot as plt
def histograms(t):
    _min = min(t['salary'])
    _max = max(t['salary'])
    bins = int((_max - _min) / 1000) # dividing the salary range in bins of 1000 each
    plt.hist(t['salary'], bins = bins)
histograms(df)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67246261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档