【问题标题】:python plotting a histogram from dataframe columnpython从数据框列绘制直方图
【发布时间】:2018-05-26 07:07:44
【问题描述】:

希望绘制从数据框发出的直方图,我似乎缺乏转换为 matplotlib 可以处理的正确对象类型。以下是一些失败的尝试。我该如何解决?

更一般地说,您通常如何挽救这样的事情?

import numpy as np
import pandas as pd
from matplotlib import pyplot as plt

filter(lambda v: v > 0, df['foo_col']).hist(bins=10)

---> 10 过滤器(lambda v: v > 0, df['foo_col']).hist(bins=100) AttributeError: 'filter' 对象没有属性 'hist'

hist(filter(lambda v: v > 0, df['foo_col']), bins=100)

---> 10 hist(filter(lambda v: v > 0, df['foo_col']), bins=100) TypeError:“系列”对象不可调用

【问题讨论】:

  • 我对你想要做什么感到困惑。您想为所有值绘制直方图> 0

标签: python pandas matplotlib


【解决方案1】:

众所周知,filter is lucky to be part of the standard library。 IIUC,您只想过滤数据框以绘制值的直方图> 0。 Pandas 有自己的语法:

import numpy as np
import pandas as pd

import matplotlib.pyplot as plt

data = np.random.randint(-50, 1000, 10000)

df = pd.DataFrame({'some_data': data})

df[df['some_data'] >= 0].hist(bins=100)
plt.show()

请注意,这将比 python 内置函数希望的运行速度快得多(在我的简单示例中并没有太大区别,但它会在更大的数据集上运行)。尽可能对数据帧使用 pandas 方法很重要,因为在许多情况下,计算将被矢量化并在高度优化的 C/C++ 代码中运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-08
    • 2019-09-12
    • 1970-01-01
    • 2017-05-31
    • 2021-05-20
    • 2019-07-12
    • 1970-01-01
    • 2018-05-23
    相关资源
    最近更新 更多