如何从 pandas 数据框创建一个 hexbin 图

Posted

技术标签:

【中文标题】如何从 pandas 数据框创建一个 hexbin 图【英文标题】:How to create a hexbin plot from a pandas dataframe 【发布时间】:2021-06-10 01:12:25 【问题描述】:

我有这个数据框:

! curl -O https://raw.githubusercontent.com/msu-cmse-courses/cmse202-S21-student/master/data/Dataset.data

import pandas as pd

#I read it in
data = pd.read_csv("Dataset.data", delimiter=' ', header = None)

#Now I want to add column titles to the file so I add them
data.columns = ['sex','length','diameter','height','whole_weight','shucked_weight','viscera_weight','shell_weight','rings']
print(data)

现在我想获取 x 变量列 shell_weight 和 y 变量列 rings 并使用 plt.hexbin 将它们绘制为直方图:

df = pd.DataFrame(data)
plt.hexbin(x='shell_weight', y='rings')

由于某种原因,当我绘制代码时它不起作用:

ValueError: 第一个参数必须是一个序列

谁能帮我画出这两个变量的图表?

【问题讨论】:

【参考方案1】:

ValueError: 第一个参数必须是一个序列

plt.hexbin(x='shell_weight', y='rings') 的问题是 matplotlib 不知道 shell_weightrings 应该是什么。它不知道df,除非你指定它。


既然你已经有一个数据框,用 pandas 绘图是最简单的,但如果你指定源 df,纯 matplotlib 仍然是可能的:

df.plot.hexbin(最简单)

在这种情况下,pandas 会自动从 df 推断列,所以我们可以只传递列名:

df.plot.hexbin(x='shell_weight', y='rings') # pandas infers the df source

plt.hexbin

使用纯 matplotlib,要么传递实际的列:

plt.hexbin(x=df.shell_weight, y=df.rings) # actual columns, not column names
#            ^^^                ^^^

或者在指定data源时传递列名:

plt.hexbin(x='shell_weight', y='rings', data=df) # column names with df source
#                                       ^^^^^^^

【讨论】:

以上是关于如何从 pandas 数据框创建一个 hexbin 图的主要内容,如果未能解决你的问题,请参考以下文章

pandas:从字典创建数据框

如何从Twitter Search API创建pandas数据框?

从 pandas 数据框创建单个列

如何从 Pandas 数据框对象显示 X 轴到 Matplotlib 条形图

从 Pandas 多索引数据框创建等高线图

如何在 Pandas 中的超大数据框上创建数据透视表