在python中创建直方图

在python中创建直方图,python,pandas,list,matplotlib,Python,Pandas,List,Matplotlib,声明:我发现了一些关于SOF的有用讨论,但是,我并没有使用一个值列表,而是使用一个大型数据集中的列列表,我想对其应用直方图。我只想快速浏览我的数据 Dataframe由18列12330行组成。我已经创建了一个列列表,如下所示。我想通过使用一个函数来创建一个hist,该函数在单独的窗口中绘制一个hist(每列一个)。我面临的问题是如何实现逻辑,以在所有列中交互,绘制历史 这里有一个指向我的df的链接:值既离散又连续,还有字符串(您可以看到前30行左右) 我的功能只是我玩弄一些想法。不知道如何在每

声明:我发现了一些关于SOF的有用讨论,但是,我并没有使用一个值列表,而是使用一个大型数据集中的列列表,我想对其应用直方图。我只想快速浏览我的数据

Dataframe由18列12330行组成。我已经创建了一个列列表,如下所示。我想通过使用一个函数来创建一个hist,该函数在单独的窗口中绘制一个hist(每列一个)。我面临的问题是如何实现逻辑,以在所有列中交互,绘制历史

这里有一个指向我的df的链接:值既离散又连续,还有字符串(您可以看到前30行左右)

我的功能只是我玩弄一些想法。不知道如何在每一列中交互并单独绘制,而不是在一张图像中绘制一个体量

我需要一些关于如何迭代这个列表的想法,然后应用我选择的图表,在本例中是直方图。重点主要是上述内容


再次感谢,Gents+ladies

您可以直接迭代数据帧对象

for col in df:
    df[col].plot(kind="hist")
在执行此操作之前,您需要删除文本列

这里有一个完整的例子,以防它有所帮助。我在一个图上绘制所有直方图,但是您可以随意更改行为

import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv')
print(df.head())
df = df.drop("species",axis=1)
print(df.head())
for col in df:
    df[col].plot(kind="hist")
lgd = plt.legend()
这是输出:

   sepal_length  sepal_width  petal_length  petal_width species
0           5.1          3.5           1.4          0.2  setosa
1           4.9          3.0           1.4          0.2  setosa
2           4.7          3.2           1.3          0.2  setosa
3           4.6          3.1           1.5          0.2  setosa
4           5.0          3.6           1.4          0.2  setosa

   sepal_length  sepal_width  petal_length  petal_width
0           5.1          3.5           1.4          0.2
1           4.9          3.0           1.4          0.2
2           4.7          3.2           1.3          0.2
3           4.6          3.1           1.5          0.2
4           5.0          3.6           1.4          0.2

要在单独的绘图中获取每列,请更改for循环,如下所示:

for col in df:
    df[col].plot(kind="hist")
    plt.show()

请查看一些已经创建的函数,可能会有所帮助:):干杯,Rafael,我会看一看,但可能会回来寻求反馈或帮助;对于hist\u col\u列表中的i,需要
:plt.hist(df[col])
?@QuangHoang肯定是这样的,但到目前为止,它将所有数据绘制在一个直方图上,而不是18个单独的直方图上。这就是我的问题所在。添加
plt.show()
内部
for
循环。另外,您可以在不使用for循环的情况下执行类似于
df.plot.hist(layout=(3,6))
的操作。这很好,您将如何在单独的窗口中绘制每个直方图?您有一个包含4组数据的hist,但如果要单独绘制相同的数据,您将如何实现此功能?在for循环的末尾添加
plt.show()
,以分别显示每个数据。因此,在for循环中不是一行,而是两行。我刚刚用编辑更新了答案。太好了,数据可视化了。我能把它包在UDF里吗?我想下一步是用if语句组织每个情节,以了解到底发生了什么,如果我不止一次地调用它,我肯定希望它出现在函数中。不过,我不确定你要用if语句去哪里。
for col in df:
    df[col].plot(kind="hist")
    plt.show()